From 79378c90512a1cdd5f3d5ec6482e434caea06e01 Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Aug 31 2017 11:46:00 +0000 Subject: csrgen: support openssl 1.0 and 1.1 Support both openssl 1.0 and 1.1 APIs where sk_* functions got prefixed with OPENSSL_ in the latter version. Since referencing a symbol from a dynamically loaded library generates exception, use the AttributeError exception to catch it and fall back to the older method. Fixes https://pagure.io/freeipa/issue/7110 Reviewed-By: Fraser Tweedale --- diff --git a/ipaclient/csrgen_ffi.py b/ipaclient/csrgen_ffi.py index c45db5f..d5b04b8 100644 --- a/ipaclient/csrgen_ffi.py +++ b/ipaclient/csrgen_ffi.py @@ -34,6 +34,9 @@ char *NCONF_get_string(const CONF *conf, const char *group, const char *name); /* openssl/stack.h */ typedef ... _STACK; +int OPENSSL_sk_num(const _STACK *); +void *OPENSSL_sk_value(const _STACK *, int); + int sk_num(const _STACK *); void *sk_value(const _STACK *, int); @@ -125,8 +128,12 @@ NCONF_get_section = _libcrypto.NCONF_get_section NCONF_get_string = _libcrypto.NCONF_get_string # openssl/stack.h -sk_num = _libcrypto.sk_num -sk_value = _libcrypto.sk_value +try: + sk_num = _libcrypto.OPENSSL_sk_num + sk_value = _libcrypto.OPENSSL_sk_value +except AttributeError as e: + sk_num = _libcrypto.sk_num + sk_value = _libcrypto.sk_value def sk_CONF_VALUE_num(sk):