crypto/octeontx2: support ECPM
Add support asymmetric operation EC Point MUltiplication, in crypto_octeontx2 PMD. Signed-off-by: Anoob Joseph <anoobj@marvell.com> Signed-off-by: Balakrishna Bhamidipati <bbhamidipati@marvell.com> Signed-off-by: Sunila Sahu <ssahu@marvell.com>
This commit is contained in:
parent
99faef8325
commit
40726a9ad5
@ -73,3 +73,4 @@ Modular Exponentiation = Y
|
||||
Modular Inversion =
|
||||
Diffie-hellman =
|
||||
ECDSA = Y
|
||||
ECPM = Y
|
||||
|
@ -639,6 +639,16 @@ rte_cryptodev_capabilities otx2_cpt_capabilities[] = {
|
||||
},
|
||||
}
|
||||
},
|
||||
{ /* ECPM */
|
||||
.op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
|
||||
{.asym = {
|
||||
.xform_capa = {
|
||||
.xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM,
|
||||
.op_types = 0
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
/* End of asymmetric capabilities */
|
||||
RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
|
||||
};
|
||||
|
@ -447,6 +447,12 @@ otx2_cpt_enqueue_asym(struct otx2_cpt_qp *qp,
|
||||
if (unlikely(ret))
|
||||
goto req_fail;
|
||||
break;
|
||||
case RTE_CRYPTO_ASYM_XFORM_ECPM:
|
||||
ret = cpt_ecpm_prep(&asym_op->ecpm, ¶ms,
|
||||
sess->ec_ctx.curveid);
|
||||
if (unlikely(ret))
|
||||
goto req_fail;
|
||||
break;
|
||||
default:
|
||||
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
|
||||
ret = -EINVAL;
|
||||
@ -665,6 +671,19 @@ otx2_cpt_asym_dequeue_ecdsa_op(struct rte_crypto_ecdsa_op_param *ecdsa,
|
||||
ecdsa->s.length = prime_len;
|
||||
}
|
||||
|
||||
static __rte_always_inline void
|
||||
otx2_cpt_asym_dequeue_ecpm_op(struct rte_crypto_ecpm_op_param *ecpm,
|
||||
struct cpt_request_info *req,
|
||||
struct cpt_asym_ec_ctx *ec)
|
||||
{
|
||||
int prime_len = ec_grp[ec->curveid].prime.length;
|
||||
|
||||
memcpy(ecpm->r.x.data, req->rptr, prime_len);
|
||||
memcpy(ecpm->r.y.data, req->rptr + ROUNDUP8(prime_len), prime_len);
|
||||
ecpm->r.x.length = prime_len;
|
||||
ecpm->r.y.length = prime_len;
|
||||
}
|
||||
|
||||
static void
|
||||
otx2_cpt_asym_post_process(struct rte_crypto_op *cop,
|
||||
struct cpt_request_info *req)
|
||||
@ -687,6 +706,9 @@ otx2_cpt_asym_post_process(struct rte_crypto_op *cop,
|
||||
case RTE_CRYPTO_ASYM_XFORM_ECDSA:
|
||||
otx2_cpt_asym_dequeue_ecdsa_op(&op->ecdsa, req, &sess->ec_ctx);
|
||||
break;
|
||||
case RTE_CRYPTO_ASYM_XFORM_ECPM:
|
||||
otx2_cpt_asym_dequeue_ecpm_op(&op->ecpm, req, &sess->ec_ctx);
|
||||
break;
|
||||
default:
|
||||
CPT_LOG_DP_DEBUG("Invalid crypto xform type");
|
||||
cop->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user