X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2Fportability%2FOpenSSL.cpp;h=7fdb7b7264d3cd8a7e2db6a75e3c07a81bd6c3e9;hp=ccaea7657fd32ff312dacfdf787ed6eb61229901;hb=d3e8b83f6a8388d97443b9e5bdd4dc375b092fa1;hpb=adb8559d5aae490f6a5620d5148f61322a267242;ds=sidebyside 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