21 #ifndef _PAM_PKCS11_OSSL_COMPAT_H 22 #define _PAM_PKCS11_OSSL_COMPAT_H 29 #include <openssl/opensslv.h> 30 #include <openssl/opensslconf.h> 50 #if OPENSSL_VERSION_NUMBER <= 0x009070dfL 54 #define EVP_CIPHER_CTX_new() ({ \ 55 EVP_CIPHER_CTX * tmp = NULL; \ 56 tmp = OPENSSL_malloc(sizeof(struct evp_cipher_ctx_st)); \ 58 EVP_CIPHER_CTX_init(tmp); \ 63 #define EVP_CIPHER_CTX_free(x) ({ \ 65 EVP_CIPHER_CTX_cleanup(x); \ 79 #if OPENSSL_VERSION_NUMBER < 0x10001000L 80 #define EVP_PKEY_base_id(x) (x->type) 83 #if OPENSSL_VERSION_NUMBER < 0x10100000L 84 #define RSA_PKCS1_OpenSSL RSA_PKCS1_SSLeay 85 #define OPENSSL_malloc_init CRYPTO_malloc_init 87 #define EVP_PKEY_get0_RSA(x) (x->pkey.rsa) 88 #define EVP_PKEY_get0_DSA(x) (x->pkey.dsa) 89 #define X509_get_extension_flags(x) (x->ex_flags) 90 #define X509_get_key_usage(x) (x->ex_kusage) 91 #define X509_get_extended_key_usage(x) (x->ex_xkusage) 92 #define EVP_MD_CTX_new EVP_MD_CTX_create 93 #define EVP_MD_CTX_free EVP_MD_CTX_destroy 94 #define EVP_PKEY_up_ref(user_key) CRYPTO_add(&user_key->references, 1, CRYPTO_LOCK_EVP_PKEY) 95 #define X509_up_ref(cert) CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509) 96 #define X509_get0_tbs_sigalg(x) (x->cert_info->key->algor) 97 #define X509_OBJECT_get0_X509(x) (x->data.x509) 98 #define X509_OBJECT_get0_X509_CRL(x) (x->data.crl) 99 #define RSA_get0_e(x) (x->e) 100 #define RSA_get0_n(x) (x->n) 101 #define ECDSA_SIG_get0_r(x) (x->r) 102 #define ECDSA_SIG_get0_s(x) (x->s) 104 #define X509_OBJECT_free(x) ({ \ 106 X509_OBJECT_free_contents(x); \ 120 #if OPENSSL_VERSION_NUMBER < 0x10100000L 123 # if !defined(inline) && !defined(__cplusplus) 124 # if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L 126 # define pam_pkcs11_ossl_inline inline 127 # elif defined(__GNUC__) && __GNUC__>=2 128 # define pam_pkcs11_ossl_inline __inline__ 129 # elif defined(_MSC_VER) 130 # define pam_pkcs11_ossl_inline __inline 132 # define pam_pkcs11_ossl_inline 135 # define pam_pkcs11_ossl_inline inline 139 #if OPENSSL_VERSION_NUMBER < 0x10100000L 141 #define RSA_bits(R) (BN_num_bits(R->n)) 143 #include <openssl/bn.h> 144 #ifndef OPENSSL_NO_RSA 145 #include <openssl/rsa.h> 147 #ifndef OPENSSL_NO_DSA 148 #include <openssl/dsa.h> 152 #ifndef OPENSSL_NO_RSA 156 if (n == NULL || e == NULL)
171 if (p == NULL || q == NULL)
184 if (dmp1 == NULL || dmq1 == NULL || iqmp == NULL)
216 const BIGNUM **dmp1,
const BIGNUM **dmq1,
const BIGNUM **iqmp)
228 #ifndef OPENSSL_NO_DSA 242 *pub_key = d->pub_key;
243 if (priv_key != NULL)
244 *priv_key = d->priv_key;
252 #define RSA_set0_key(R, N, E, D) \ 255 if (!(N) || !(E)) { \ 269 #define RSA_set0_factors(R, P, Q) \ 284 #define RSA_set0_crt_params(R, DMP1, DMQ1, IQMP) \ 287 if (!DMP1 || !DMQ1 || !IQMP) { \ 301 #define RSA_get0_key(R, N, E, D) { \ 305 if (n) *(n) = R->n; \ 306 if (e) *(e) = R->e; \ 307 if (d) *(d) = R->d; \ 310 #define RSA_get0_factors(R, P, Q) {\ 313 if (p) *(p) = R->p; \ 314 if (q) *(q) = R->q; \ 317 #define RSA_get0_crt_params(R, DMP1, DMQ1, IQMP) { \ 318 BIGNUM **dmp1 = DMP1; \ 319 BIGNUM **dmq1 = DMQ1; \ 320 BIGNUM **iqmp = IQMP; \ 321 if (dmp1) *(dmp1) = R->dmp1; \ 322 if (dmq1) *(dmq1) = R->dmq1; \ 323 if (iqmp) *(iqmp) = R->iqmp; \ 326 #define DSA_get0_key(D, PUB, PRIV) { \ 327 BIGNUM **pub = PUB; \ 328 BIGNUM **priv = PRIV; \ 329 if (pub) *(pub) = D->pub_key; \ 330 if (priv) *(priv) = D->priv_key; \ 333 #define DSA_get0_pqg(D, P, Q, G) { \ 337 if (p) *(p) = D->p; \ 338 if (q) *(q) = D->q; \ 339 if (g) *(g) = D->g; \ static pam_pkcs11_ossl_inline int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
static pam_pkcs11_ossl_inline void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
static pam_pkcs11_ossl_inline void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
#define pam_pkcs11_ossl_inline
static pam_pkcs11_ossl_inline int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
static pam_pkcs11_ossl_inline void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
static pam_pkcs11_ossl_inline int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
static pam_pkcs11_ossl_inline void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
static pam_pkcs11_ossl_inline void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp)