EVP_PKEY_DERIVE(3ssl) OpenSSL EVP_PKEY_DERIVE(3ssl) EVP_PKEY_derive_init, EVP_PKEY_derive_init_ex, EVP_PKEY_derive_set_peer_ex, EVP_PKEY_derive_set_peer, EVP_PKEY_derive, EVP_PKEY_derive_SKEY - #include int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, int validate_peer); int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); EVP_SKEY *EVP_PKEY_derive_SKEY(EVP_PKEY_CTX *ctx, EVP_SKEYMGMT *mgmt, const char *key_type, const char *propquery, size_t keylen, const OSSL_PARAM params[]); EVP_PKEY_derive_init() ctx EVP_PKEY_CTX_new(3) . EVP_KEYEXCH " " provider(7) . EVP_PKEY_derive_init_ex() EVP_PKEY_derive_init() params . EVP_PKEY_derive_set_peer_ex() : . validate_peer . EVP_PKEY_derive_set_peer() EVP_PKEY_derive_set_peer_ex() validate_peer 1. EVP_PKEY_derive() ctx. key keylen. key keylen key key keylen. EVP_PKEY_derive_SKEY() EVP_PKEY_derive() EVP_SKEY . EVP_SKEYMGMT EVP_SKEY. EVP_SKEYMGMT EVP_SKEY skeymgmtname propquery. skeymgmtname . EVP_PKEY_derive_init() . EVP_PKEY_derive() . EVP_PKEY_derive_init() EVP_PKEY_derive() 1 0 . -2 . EVP_PKEY_derive_SKEY() EVP_SKEY NULL . ( DH EC): #include #include EVP_PKEY_CTX *ctx; ENGINE *eng; unsigned char *skey; size_t skeylen; EVP_PKEY *pkey, *peerkey; /* NB: assumes pkey, eng, peerkey have been already set up */ ctx = EVP_PKEY_CTX_new(pkey, eng); if (!ctx) /* Error occurred */ if (EVP_PKEY_derive_init(ctx) <= 0) /* Error */ if (EVP_PKEY_derive_set_peer(ctx, peerkey) <= 0) /* Error */ /* Determine buffer length */ if (EVP_PKEY_derive(ctx, NULL, &skeylen) <= 0) /* Error */ skey = OPENSSL_malloc(skeylen); if (!skey) /* malloc failure */ if (EVP_PKEY_derive(ctx, skey, &skeylen) <= 0) /* Error */ /* Shared secret is skey bytes written to buffer skey */ EVP_PKEY_CTX_new(3), EVP_PKEY_encrypt(3), EVP_PKEY_decrypt(3), EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3), EVP_KEYEXCH_fetch(3) EVP_PKEY_derive_init() EVP_PKEY_derive_set_peer() EVP_PKEY_derive() OpenSSL 1.0.0. EVP_PKEY_derive_init_ex() EVP_PKEY_derive_set_peer_ex() OpenSSL 3.0. EVP_PKEY_derive_SKEY() OpenSSL 3.6. 2006-2025 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 EVP_PKEY_DERIVE(3ssl)