crypto/dpaa_sec: support non-HMAC auth algos
This patch add support for non-HMAC, md5, shax algos. Signed-off-by: Gagandeep Singh <g.singh@nxp.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
This commit is contained in:
parent
3e4fbc6c9e
commit
4c42352c30
@ -33,11 +33,17 @@ ZUC EEA3 = Y
|
||||
; Supported authentication algorithms of the 'dpaa_sec' crypto driver.
|
||||
;
|
||||
[Auth]
|
||||
MD5 = Y
|
||||
MD5 HMAC = Y
|
||||
SHA1 = Y
|
||||
SHA1 HMAC = Y
|
||||
SHA224 = Y
|
||||
SHA224 HMAC = Y
|
||||
SHA256 = Y
|
||||
SHA256 HMAC = Y
|
||||
SHA384 = Y
|
||||
SHA384 HMAC = Y
|
||||
SHA512 = Y
|
||||
SHA512 HMAC = Y
|
||||
SNOW3G UIA2 = Y
|
||||
ZUC EIA3 = Y
|
||||
@ -53,4 +59,4 @@ AES GCM (256) = Y
|
||||
;
|
||||
; Supported Asymmetric algorithms of the 'dpaa_sec' crypto driver.
|
||||
;
|
||||
[Asymmetric]
|
||||
[Asymmetric]
|
||||
|
@ -75,7 +75,7 @@ New Features
|
||||
|
||||
* **Updated NXP dpaa_sec crypto PMD.**
|
||||
|
||||
* Added DES-CBC algo support.
|
||||
* Added DES-CBC and non-HMAC algo support.
|
||||
|
||||
|
||||
Removed Items
|
||||
|
@ -489,6 +489,18 @@ dpaa_sec_prep_cdb(dpaa_sec_session *ses)
|
||||
alginfo_a.algtype = ses->auth_key.alg;
|
||||
alginfo_a.algmode = ses->auth_key.algmode;
|
||||
switch (ses->auth_alg) {
|
||||
case RTE_CRYPTO_AUTH_MD5:
|
||||
case RTE_CRYPTO_AUTH_SHA1:
|
||||
case RTE_CRYPTO_AUTH_SHA224:
|
||||
case RTE_CRYPTO_AUTH_SHA256:
|
||||
case RTE_CRYPTO_AUTH_SHA384:
|
||||
case RTE_CRYPTO_AUTH_SHA512:
|
||||
shared_desc_len = cnstr_shdsc_hash(
|
||||
cdb->sh_desc, true,
|
||||
swap, SHR_NEVER, &alginfo_a,
|
||||
!ses->dir,
|
||||
ses->digest_length);
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_MD5_HMAC:
|
||||
case RTE_CRYPTO_AUTH_SHA1_HMAC:
|
||||
case RTE_CRYPTO_AUTH_SHA224_HMAC:
|
||||
@ -2080,43 +2092,70 @@ dpaa_sec_auth_init(struct rte_cryptodev *dev __rte_unused,
|
||||
{
|
||||
session->ctxt = DPAA_SEC_AUTH;
|
||||
session->auth_alg = xform->auth.algo;
|
||||
session->auth_key.data = rte_zmalloc(NULL, xform->auth.key.length,
|
||||
RTE_CACHE_LINE_SIZE);
|
||||
if (session->auth_key.data == NULL && xform->auth.key.length > 0) {
|
||||
DPAA_SEC_ERR("No Memory for auth key");
|
||||
return -ENOMEM;
|
||||
}
|
||||
session->auth_key.length = xform->auth.key.length;
|
||||
if (xform->auth.key.length) {
|
||||
session->auth_key.data =
|
||||
rte_zmalloc(NULL, xform->auth.key.length,
|
||||
RTE_CACHE_LINE_SIZE);
|
||||
if (session->auth_key.data == NULL) {
|
||||
DPAA_SEC_ERR("No Memory for auth key");
|
||||
return -ENOMEM;
|
||||
}
|
||||
memcpy(session->auth_key.data, xform->auth.key.data,
|
||||
xform->auth.key.length);
|
||||
|
||||
}
|
||||
session->digest_length = xform->auth.digest_length;
|
||||
if (session->cipher_alg == RTE_CRYPTO_CIPHER_NULL) {
|
||||
session->iv.offset = xform->auth.iv.offset;
|
||||
session->iv.length = xform->auth.iv.length;
|
||||
}
|
||||
|
||||
memcpy(session->auth_key.data, xform->auth.key.data,
|
||||
xform->auth.key.length);
|
||||
|
||||
switch (xform->auth.algo) {
|
||||
case RTE_CRYPTO_AUTH_SHA1:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA1;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HASH;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA1_HMAC:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA1;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HMAC;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_MD5:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_MD5;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HASH;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_MD5_HMAC:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_MD5;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HMAC;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA224:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA224;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HASH;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA224_HMAC:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA224;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HMAC;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA256:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA256;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HASH;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA256_HMAC:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA256;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HMAC;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA384:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA384;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HASH;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA384_HMAC:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA384;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HMAC;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA512:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA512;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HASH;
|
||||
break;
|
||||
case RTE_CRYPTO_AUTH_SHA512_HMAC:
|
||||
session->auth_key.alg = OP_ALG_ALGSEL_SHA512;
|
||||
session->auth_key.algmode = OP_ALG_AAI_HMAC;
|
||||
|
@ -240,6 +240,27 @@ static const struct rte_cryptodev_capabilities dpaa_sec_capabilities[] = {
|
||||
}, },
|
||||
}, },
|
||||
},
|
||||
{ /* MD5 */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
|
||||
{.auth = {
|
||||
.algo = RTE_CRYPTO_AUTH_MD5,
|
||||
.block_size = 64,
|
||||
.key_size = {
|
||||
.min = 0,
|
||||
.max = 0,
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 16,
|
||||
.max = 16,
|
||||
.increment = 0
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* MD5 HMAC */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
@ -261,6 +282,27 @@ static const struct rte_cryptodev_capabilities dpaa_sec_capabilities[] = {
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA1 */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
|
||||
{.auth = {
|
||||
.algo = RTE_CRYPTO_AUTH_SHA1,
|
||||
.block_size = 64,
|
||||
.key_size = {
|
||||
.min = 0,
|
||||
.max = 0,
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 20,
|
||||
.max = 20,
|
||||
.increment = 0
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA1 HMAC */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
@ -282,6 +324,27 @@ static const struct rte_cryptodev_capabilities dpaa_sec_capabilities[] = {
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA224 */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
|
||||
{.auth = {
|
||||
.algo = RTE_CRYPTO_AUTH_SHA224,
|
||||
.block_size = 64,
|
||||
.key_size = {
|
||||
.min = 0,
|
||||
.max = 0,
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 28,
|
||||
.max = 28,
|
||||
.increment = 0
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA224 HMAC */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
@ -303,6 +366,27 @@ static const struct rte_cryptodev_capabilities dpaa_sec_capabilities[] = {
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA256 */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
|
||||
{.auth = {
|
||||
.algo = RTE_CRYPTO_AUTH_SHA256,
|
||||
.block_size = 64,
|
||||
.key_size = {
|
||||
.min = 0,
|
||||
.max = 0,
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 32,
|
||||
.max = 32,
|
||||
.increment = 0
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA256 HMAC */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
@ -324,6 +408,27 @@ static const struct rte_cryptodev_capabilities dpaa_sec_capabilities[] = {
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA384 */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
|
||||
{.auth = {
|
||||
.algo = RTE_CRYPTO_AUTH_SHA384,
|
||||
.block_size = 64,
|
||||
.key_size = {
|
||||
.min = 0,
|
||||
.max = 0,
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 48,
|
||||
.max = 48,
|
||||
.increment = 0
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA384 HMAC */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
@ -345,6 +450,27 @@ static const struct rte_cryptodev_capabilities dpaa_sec_capabilities[] = {
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA512 */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
|
||||
{.auth = {
|
||||
.algo = RTE_CRYPTO_AUTH_SHA512,
|
||||
.block_size = 128,
|
||||
.key_size = {
|
||||
.min = 0,
|
||||
.max = 0,
|
||||
.increment = 0
|
||||
},
|
||||
.digest_size = {
|
||||
.min = 64,
|
||||
.max = 64,
|
||||
.increment = 0
|
||||
},
|
||||
.iv_size = { 0 }
|
||||
}, }
|
||||
}, }
|
||||
},
|
||||
{ /* SHA512 HMAC */
|
||||
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
|
||||
{.sym = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user