From 5156d250b9a3f5b42695a0eb69206738cf4406c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Sat, 1 Jul 2017 22:19:42 +0200 Subject: [PATCH] checksums,openssl.libcrypto: make it work with openssl 1.1 --- basis/checksums/openssl/openssl.factor | 16 ++++++++++------ basis/openssl/libcrypto/libcrypto.factor | 14 +++++++++----- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/basis/checksums/openssl/openssl.factor b/basis/checksums/openssl/openssl.factor index 9b45d813cd..ef10076fda 100644 --- a/basis/checksums/openssl/openssl.factor +++ b/basis/checksums/openssl/openssl.factor @@ -1,8 +1,7 @@ ! Copyright (C) 2008, 2010, 2016 Slava Pestov, Alexander Ilin ! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien.c-types alien.data checksums -checksums.common destructors kernel openssl openssl.libcrypto -sequences ; +USING: accessors alien.c-types alien.data checksums checksums.common +destructors kernel namespaces openssl openssl.libcrypto sequences ; IN: checksums.openssl ERROR: unknown-digest name ; @@ -21,12 +20,17 @@ C: openssl-checksum TUPLE: evp-md-context < disposable handle ; +: evp-md-ctx-new ( -- ctx ) + ssl-new-api? get-global [ EVP_MD_CTX_new ] [ EVP_MD_CTX_create ] if ; + +: evp-md-ctx-free ( ctx -- ) + ssl-new-api? get-global [ EVP_MD_CTX_free ] [ EVP_MD_CTX_destroy ] if ; + : ( -- ctx ) - evp-md-context new-disposable - EVP_MD_CTX_create >>handle ; + evp-md-context new-disposable evp-md-ctx-new >>handle ; M: evp-md-context dispose* - handle>> EVP_MD_CTX_destroy ; + handle>> evp-md-ctx-free ; : digest-named ( name -- md ) dup EVP_get_digestbyname [ ] [ unknown-digest ] ?if ; diff --git a/basis/openssl/libcrypto/libcrypto.factor b/basis/openssl/libcrypto/libcrypto.factor index f94627d720..5879aa338c 100644 --- a/basis/openssl/libcrypto/libcrypto.factor +++ b/basis/openssl/libcrypto/libcrypto.factor @@ -139,11 +139,20 @@ STRUCT: EVP_MD_CTX { flags ulong } { md_data void* } ; +! ------------------------------------------------------------------------------ +! API >= 1.1.0 +! ------------------------------------------------------------------------------ +FUNCTION: ulong OpenSSL_version_num ( ) +FUNCTION: EVP_MD_CTX* EVP_MD_CTX_new ( ) +FUNCTION: void EVP_MD_CTX_free ( EVP_MD_CTX* ctx ) + ! ------------------------------------------------------------------------------ ! API < 1.1.0, removed in new versions ! ------------------------------------------------------------------------------ FUNCTION: void OpenSSL_add_all_ciphers ( ) FUNCTION: void OpenSSL_add_all_digests ( ) +FUNCTION: EVP_MD_CTX* EVP_MD_CTX_create ( ) +FUNCTION: void EVP_MD_CTX_destroy ( EVP_MD_CTX* ctx ) ! ------------------------------------------------------------------------------ ! Clean them up before exiting @@ -154,11 +163,6 @@ FUNCTION: EVP_MD* EVP_get_digestbyname ( c-string name ) FUNCTION: void EVP_MD_CTX_init ( EVP_MD* ctx ) FUNCTION: int EVP_MD_CTX_cleanup ( EVP_MD_CTX* ctx ) - -FUNCTION: EVP_MD_CTX* EVP_MD_CTX_create ( ) - -FUNCTION: void EVP_MD_CTX_destroy ( EVP_MD_CTX* ctx ) - FUNCTION: int EVP_MD_CTX_copy_ex ( EVP_MD_CTX* out, EVP_MD_CTX* in ) FUNCTION: int EVP_DigestInit_ex ( EVP_MD_CTX* ctx, EVP_MD* type, ENGINE* impl )