EVP_PKEY_DECRYPT(3ssl) OpenSSL EVP_PKEY_DECRYPT(3ssl) EVP_PKEY_decrypt_init, EVP_PKEY_decrypt_init_ex, EVP_PKEY_decrypt - #include int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen); EVP_PKEY_decrypt_init() pkey . EVP_PKEY_decrypt_init_ex() pkey params . EVP_PKEY_decrypt() ctx. in inlen. out NULL *outlen. out NULL *outlen out. out *outlen . EVP_PKEY_decrypt_init() . EVP_PKEY_decrypt_init_ex(). EVP_PKEY_decrypt() . EVP_PKEY_decrypt_init() EVP_PKEY_decrypt_init_ex() EVP_PKEY_decrypt() 1 0 . -2 . OpenSSL 3.2.0 PKCS#1 v1.5 EVP_PKEY_decrypt() outlen Bleichenbacher . . 3.2.0 EVP_PKEY_decrypt() PKCS#1 v1.5 default ( OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION provider-asym_cipher(7)). OpenSSL. OpenSSL . ERR_set_mark(3) ERR_pop_to_mark(3) ERR_clear_error(3). OAEP ( RSA): #include #include EVP_PKEY_CTX *ctx; ENGINE *eng; unsigned char *out, *in; size_t outlen, inlen; EVP_PKEY *key; /* * NB: assumes key, eng, in, inlen are already set up * and that key is an RSA private key */ ctx = EVP_PKEY_CTX_new(key, eng); if (!ctx) /* Error occurred */ if (EVP_PKEY_decrypt_init(ctx) <= 0) /* Error */ if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0) /* Error */ /* Determine buffer length */ if (EVP_PKEY_decrypt(ctx, NULL, &outlen, in, inlen) <= 0) /* Error */ out = OPENSSL_malloc(outlen); if (!out) /* malloc failure */ if (EVP_PKEY_decrypt(ctx, out, &outlen, in, inlen) <= 0) /* Error */ /* Decrypted data is outlen bytes written to buffer out */ EVP_PKEY_CTX_new(3) EVP_PKEY_encrypt(3) EVP_PKEY_sign(3) EVP_PKEY_verify(3) EVP_PKEY_verify_recover(3) EVP_PKEY_derive(3) OpenSSL 1.0.0. 2006-2025 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 EVP_PKEY_DECRYPT(3ssl)