X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcrypto%2Fopenssl%2Frte_openssl_pmd.c;h=59d6915b8e0e3500ee8a3b451c3c510fdc7fdf8b;hb=0fbd75a99fc9d2c8c7618d677d3f50fb9872b80c;hp=d3f16c9a6c560c7c44da7d26d5e81eaab0b74f33;hpb=5082f991f6def0ef06e9ff1cf9f39ef3b78657c5;p=dpdk.git diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c index d3f16c9a6c..59d6915b8e 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/drivers/crypto/openssl/rte_openssl_pmd.c @@ -264,6 +264,10 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess, /* Select cipher key */ sess->cipher.key.length = xform->cipher.key.length; + /* Set IV parameters */ + sess->iv.offset = xform->cipher.iv.offset; + sess->iv.length = xform->cipher.iv.length; + /* Select cipher algo */ switch (xform->cipher.algo) { case RTE_CRYPTO_CIPHER_3DES_CBC: @@ -397,6 +401,9 @@ openssl_set_session_parameters(struct openssl_session *sess, return -EINVAL; } + /* Default IV length = 0 */ + sess->iv.length = 0; + /* cipher_xform must be check before auth_xform */ if (cipher_xform) { if (openssl_set_session_cipher_parameters( @@ -924,8 +931,8 @@ process_openssl_combined_op } iv = rte_crypto_op_ctod_offset(op, uint8_t *, - op->sym->cipher.iv.offset); - ivlen = op->sym->cipher.iv.length; + sess->iv.offset); + ivlen = sess->iv.length; aad = op->sym->auth.aad.data; aadlen = op->sym->auth.aad.length; @@ -989,7 +996,7 @@ process_openssl_cipher_op op->sym->cipher.data.offset); iv = rte_crypto_op_ctod_offset(op, uint8_t *, - op->sym->cipher.iv.offset); + sess->iv.offset); if (sess->cipher.mode == OPENSSL_CIPHER_LIB) if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) @@ -1031,7 +1038,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op, op->sym->cipher.data.offset); iv = rte_crypto_op_ctod_offset(op, uint8_t *, - op->sym->cipher.iv.offset); + sess->iv.offset); block_size = DES_BLOCK_SIZE; @@ -1090,7 +1097,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op, last_block_len, sess->cipher.bpi_ctx); /* Prepare parameters for CBC mode op */ iv = rte_crypto_op_ctod_offset(op, uint8_t *, - op->sym->cipher.iv.offset); + sess->iv.offset); dst += last_block_len - srclen; srclen -= last_block_len; }