From 5ae0e79b6239c3bdb024707a2c9ab35d8dfa329d Mon Sep 17 00:00:00 2001 From: wbond Date: Wed, 9 Mar 2022 12:56:44 +0000 Subject: [PATCH] Enable legacy provider with OpenSSL 3 so older algos are supported --- oscrypto/_openssl/_libcrypto_ctypes.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/oscrypto/_openssl/_libcrypto_ctypes.py b/oscrypto/_openssl/_libcrypto_ctypes.py index f783663..79f1af8 100644 --- a/oscrypto/_openssl/_libcrypto_ctypes.py +++ b/oscrypto/_openssl/_libcrypto_ctypes.py @@ -73,6 +73,8 @@ P_EVP_MD = c_void_p P_ENGINE = c_void_p +OSSL_PROVIDER = c_void_p +OSSL_LIB_CTX = c_void_p P_EVP_PKEY = c_void_p EVP_PKEY_CTX = c_void_p @@ -97,6 +99,12 @@ libcrypto.ERR_free_strings.argtypes = [] libcrypto.ERR_free_strings.restype = None + if version_info >= (3, 0): + libcrypto.OSSL_PROVIDER_load.argtypes = [OSSL_LIB_CTX, c_char_p] + libcrypto.OSSL_PROVIDER_load.restype = POINTER(OSSL_PROVIDER) + + libcrypto.OSSL_PROVIDER_load(None, "legacy".encode("ascii")) + libcrypto.ERR_get_error.argtypes = [] libcrypto.ERR_get_error.restype = c_ulong @@ -301,10 +309,17 @@ libcrypto.EVP_sha512.argtypes = [] libcrypto.EVP_sha512.restype = P_EVP_MD - libcrypto.EVP_PKEY_size.argtypes = [ - P_EVP_PKEY - ] - libcrypto.EVP_PKEY_size.restype = c_int + if version_info < (3, 0): + libcrypto.EVP_PKEY_size.argtypes = [ + P_EVP_PKEY + ] + libcrypto.EVP_PKEY_size.restype = c_int + else: + libcrypto.EVP_PKEY_get_size.argtypes = [ + P_EVP_PKEY + ] + libcrypto.EVP_PKEY_get_size.restype = c_int + libcrypto.EVP_PKEY_size = libcrypto.EVP_PKEY_get_size libcrypto.EVP_PKEY_get1_RSA.argtypes = [ P_EVP_PKEY