From d3e8b83f6a8388d97443b9e5bdd4dc375b092fa1 Mon Sep 17 00:00:00 2001 From: Anirudh Ramachandran Date: Thu, 8 Jun 2017 23:06:24 -0700 Subject: [PATCH] Some more OpenSSL 1.1.0 compat APIs Summary: Add a few more compatibility wrappers for pre-1.1.0 APIs Reviewed By: yfeldblum Differential Revision: D5194164 fbshipit-source-id: ae8db08c31370eca729df2927798b6f4d99ee70c --- folly/portability/OpenSSL.cpp | 34 ++++++++++++++++++++++++++++++++++ folly/portability/OpenSSL.h | 8 ++++++++ 2 files changed, 42 insertions(+) diff --git a/folly/portability/OpenSSL.cpp b/folly/portability/OpenSSL.cpp index ccaea765..7fdb7b72 100644 --- a/folly/portability/OpenSSL.cpp +++ b/folly/portability/OpenSSL.cpp @@ -62,6 +62,40 @@ int SSL_SESSION_up_ref(SSL_SESSION* session) { int X509_up_ref(X509* x) { return CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); } + +int EVP_PKEY_up_ref(EVP_PKEY* evp) { + return CRYPTO_add(&evp->references, 1, CRYPTO_LOCK_EVP_PKEY); +} + +void RSA_get0_key( + const RSA* r, + const BIGNUM** n, + const BIGNUM** e, + const BIGNUM** d) { + if (n != nullptr) { + *n = r->n; + } + if (e != nullptr) { + *e = r->e; + } + if (d != nullptr) { + *d = r->d; + } +} + +RSA* EVP_PKEY_get0_RSA(EVP_PKEY* pkey) { + if (pkey->type != EVP_PKEY_RSA) { + return nullptr; + } + return pkey->pkey.rsa; +} + +EC_KEY* EVP_PKEY_get0_EC_KEY(EVP_PKEY* pkey) { + if (pkey->type != EVP_PKEY_EC) { + return nullptr; + } + return pkey->pkey.ec; +} #endif #if !FOLLY_OPENSSL_IS_110 diff --git a/folly/portability/OpenSSL.h b/folly/portability/OpenSSL.h index 38ebc8e7..7fee24fa 100644 --- a/folly/portability/OpenSSL.h +++ b/folly/portability/OpenSSL.h @@ -108,6 +108,14 @@ int X509_get_signature_nid(X509* cert); int SSL_CTX_up_ref(SSL_CTX* session); int SSL_SESSION_up_ref(SSL_SESSION* session); int X509_up_ref(X509* x); +int EVP_PKEY_up_ref(EVP_PKEY* evp); +void RSA_get0_key( + const RSA* r, + const BIGNUM** n, + const BIGNUM** e, + const BIGNUM** d); +RSA* EVP_PKEY_get0_RSA(EVP_PKEY* pkey); +EC_KEY* EVP_PKEY_get0_EC_KEY(EVP_PKEY* pkey); #endif #if !FOLLY_OPENSSL_IS_110 -- 2.34.1