crypto/aesni_mb: support all truncated CMAC digest sizes
The full digest size of CMAC algorithm is 16 bytes. However, it is sometimes truncated to a smaller size (such as in IPSec). This commit allows a user to generate a digest of any size up to the full size. Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
This commit is contained in:
parent
16a3558e0b
commit
035ecca5ea
@ -141,7 +141,31 @@ aesni_mb_set_session_auth_parameters(const struct aesni_mb_op_fns *mb_ops,
|
||||
if (xform->auth.algo == RTE_CRYPTO_AUTH_AES_CMAC) {
|
||||
sess->auth.algo = AES_CMAC;
|
||||
|
||||
sess->auth.gen_digest_len = sess->auth.req_digest_len;
|
||||
uint16_t cmac_digest_len = get_digest_byte_length(AES_CMAC);
|
||||
|
||||
if (sess->auth.req_digest_len > cmac_digest_len) {
|
||||
AESNI_MB_LOG(ERR, "Invalid digest size\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
/*
|
||||
* Multi-buffer lib supports digest sizes from 4 to 16 bytes
|
||||
* in version 0.50 and sizes of 12 and 16 bytes,
|
||||
* in version 0.49.
|
||||
* If size requested is different, generate the full digest
|
||||
* (16 bytes) in a temporary location and then memcpy
|
||||
* the requested number of bytes.
|
||||
*/
|
||||
#if IMB_VERSION_NUM >= IMB_VERSION(0, 50, 0)
|
||||
if (sess->auth.req_digest_len < 4)
|
||||
#else
|
||||
uint16_t cmac_trunc_digest_len =
|
||||
get_truncated_digest_byte_length(AES_CMAC);
|
||||
if (sess->auth.req_digest_len != cmac_digest_len &&
|
||||
sess->auth.req_digest_len != cmac_trunc_digest_len)
|
||||
#endif
|
||||
sess->auth.gen_digest_len = cmac_digest_len;
|
||||
else
|
||||
sess->auth.gen_digest_len = sess->auth.req_digest_len;
|
||||
(*mb_ops->aux.keyexp.aes_cmac_expkey)(xform->auth.key.data,
|
||||
sess->auth.cmac.expkey);
|
||||
|
||||
|
@ -358,9 +358,9 @@ static const struct rte_cryptodev_capabilities aesni_mb_pmd_capabilities[] = {
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 12,
|
||||
.min = 1,
|
||||
.max = 16,
|
||||
.increment = 4
|
||||
.increment = 1
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
|
Loading…
Reference in New Issue
Block a user