- ekl[i] =
- EVP_PKEY_encrypt_old(ek[i], key, EVP_CIPHER_CTX_key_length(ctx),
- pubk[i]);
- if (ekl[i] <= 0)
- return -1;
+ size_t keylen = len;
+
+ pctx = EVP_PKEY_CTX_new_from_pkey(libctx, pubk[i], NULL);
+ if (pctx == NULL) {
+ ERR_raise(ERR_LIB_EVP, ERR_R_EVP_LIB);
+ goto err;
+ }
+
+ if (EVP_PKEY_encrypt_init(pctx) <= 0
+ || EVP_PKEY_encrypt(pctx, ek[i], &keylen, key, keylen) <= 0)
+ goto err;
+ ekl[i] = (int)keylen;
+ EVP_PKEY_CTX_free(pctx);