| 454 | |
| 455 | #if (OPENSSL_VERSION_NUMBER >= 0x30000000L && OPENSSL_VERSION_NUMBER < 0x30200000L) |
| 456 | static int openssl_aesni_ctx_clone(EVP_CIPHER_CTX **dest, |
| 457 | struct openssl_session *sess) |
| 458 | { |
| 459 | /* OpenSSL versions 3.0.0 <= V < 3.2.0 have no dupctx() implementation |
| 460 | * for AES-GCM and AES-CCM. In this case, we have to create new empty |
| 461 | * contexts and initialise, as we did the original context. |
| 462 | */ |
| 463 | if (sess->auth.algo == RTE_CRYPTO_AUTH_AES_GMAC) |
| 464 | sess->aead_algo = RTE_CRYPTO_AEAD_AES_GCM; |
| 465 | |
| 466 | if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) |
| 467 | return openssl_set_sess_aead_enc_param(sess, sess->aead_algo, |
| 468 | sess->auth.digest_length, sess->cipher.key.data, |
| 469 | dest); |
| 470 | else |
| 471 | return openssl_set_sess_aead_dec_param(sess, sess->aead_algo, |
| 472 | sess->auth.digest_length, sess->cipher.key.data, |
| 473 | dest); |
| 474 | } |
| 475 | #endif |
| 476 | |
| 477 | /** Set session cipher parameters */ |
no test coverage detected