diff options
author | Pavel Roskin <plroskin@gmail.com> | 2016-10-29 22:45:40 -0700 |
---|---|---|
committer | Pavel Roskin <plroskin@gmail.com> | 2016-11-01 11:09:15 -0700 |
commit | 4324084d585d5a20d77aea036b8b4704c95a1dc3 (patch) | |
tree | 37391c16ffaab6edd8fc6a53439647f03a9928f7 | |
parent | cde340350c34e5ecf8be2482c909decffc27d7bd (diff) | |
download | xrdp-proprietary-4324084d585d5a20d77aea036b8b4704c95a1dc3.tar.gz xrdp-proprietary-4324084d585d5a20d77aea036b8b4704c95a1dc3.zip |
Use static inline functions for OpenSSL 1.0 backport
Conditional preprocessor directives spread throughout the code set a bad
example.
The new backport code is located in one place. The compiler checks
argument types. The backport code has no access to the caller variables.
The main code has all advantages of the new, more compact API.
-rw-r--r-- | common/ssl_calls.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/common/ssl_calls.c b/common/ssl_calls.c index e7ca83ce..72ab5eb7 100644 --- a/common/ssl_calls.c +++ b/common/ssl_calls.c @@ -40,6 +40,32 @@ #define OLD_RSA_GEN1 #endif +#if OPENSSL_VERSION_NUMBER < 0x10100000L +static inline HMAC_CTX * +HMAC_CTX_new() +{ + HMAC_CTX *hmac_ctx = g_new(HMAC_CTX, 1); + HMAC_CTX_init(hmac_ctx); + return hmac_ctx; +} + +static inline void +HMAC_CTX_free(HMAC_CTX *hmac_ctx) +{ + HMAC_CTX_cleanup(hmac_ctx); + g_free(hmac_ctx); +} + +static inline void +RSA_get0_key(const RSA *key, const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d) +{ + *n = key->n; + *d = key->d; +} +#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */ + + /*****************************************************************************/ int ssl_init(void) @@ -247,12 +273,7 @@ ssl_hmac_info_create(void) { HMAC_CTX *hmac_ctx; -#if OPENSSL_VERSION_NUMBER >= 0x10100000L hmac_ctx = HMAC_CTX_new(); -#else - hmac_ctx = (HMAC_CTX *) g_malloc(sizeof(HMAC_CTX), 1); - HMAC_CTX_init(hmac_ctx); -#endif return hmac_ctx; } @@ -265,12 +286,7 @@ ssl_hmac_info_delete(void *hmac) hmac_ctx = (HMAC_CTX *) hmac; if (hmac_ctx != 0) { -#if OPENSSL_VERSION_NUMBER >= 0x10100000L HMAC_CTX_free(hmac_ctx); -#else - HMAC_CTX_cleanup(hmac_ctx); - g_free(hmac_ctx); -#endif } } @@ -501,12 +517,7 @@ ssl_gen_key_xrdp1(int key_size_in_bits, char *exp, int exp_len, const BIGNUM *n; const BIGNUM *d; -#if OPENSSL_VERSION_NUMBER >= 0x10100000L RSA_get0_key(my_key, &n, NULL, &d); -#else - n = my_key->n; - d = my_key->d; -#endif if (error == 0) { |