]> gitweb.factorcode.org Git - factor.git/commitdiff
checksums,openssl.libcrypto: make it work with openssl 1.1
authorBjörn Lindqvist <bjourne@gmail.com>
Sat, 1 Jul 2017 20:19:42 +0000 (22:19 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Sat, 1 Jul 2017 20:19:42 +0000 (22:19 +0200)
basis/checksums/openssl/openssl.factor
basis/openssl/libcrypto/libcrypto.factor

index 9b45d813cd970cce8afd1f0a1ec46e6b1397603f..ef10076fdab960e993f1e456aca120cf122c36d1 100644 (file)
@@ -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> 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 ;
+
 : <evp-md-context> ( -- 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 ;
index f94627d720047aaab73f654693ee8e101d3472c9..5879aa338c9320a2ad49987ec1cf92de34e44ac2 100644 (file)
@@ -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 )