Skip to content

Commit

Permalink
libckteec: serialize_ck.c: serialize AES-GCM mechanism parameters
Browse files Browse the repository at this point in the history
This commits adds serialize_mecha_aes_gcm() function to serialize_ck.c
to support AES-GCM mechanism (CKM_AES_GCM) in libckteec.

Co-developed-by: Etienne Carriere <[email protected]>
Signed-off-by: Etienne Carriere <[email protected]>
Signed-off-by: Marouene Boubakri <[email protected]>
Reviewed-by: Etienne Carriere <[email protected]>
  • Loading branch information
maroueneboubakri authored and jforissier committed Dec 7, 2023
1 parent a8381cf commit 98dc4f4
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions libckteec/src/serialize_ck.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,48 @@ static CK_RV serialize_mecha_aes_ctr(struct serializer *obj,
return rv;
}

static CK_RV serialize_mecha_aes_gcm(struct serializer *obj,
CK_MECHANISM_PTR mecha)
{
CK_GCM_PARAMS_PTR param = mecha->pParameter;
CK_RV rv = CKR_GENERAL_ERROR;
CK_ULONG aad_len = 0;

/* AAD is not manadatory */
if (param->pAAD)
aad_len = param->ulAADLen;

if (!param->pIv)
return CKR_MECHANISM_PARAM_INVALID;

rv = serialize_32b(obj, obj->type);
if (rv)
return rv;

rv = serialize_32b(obj, 3 * sizeof(uint32_t) +
param->ulIvLen + aad_len);
if (rv)
return rv;

rv = serialize_ck_ulong(obj, param->ulIvLen);
if (rv)
return rv;

rv = serialize_buffer(obj, param->pIv, param->ulIvLen);
if (rv)
return rv;

rv = serialize_ck_ulong(obj, aad_len);
if (rv)
return rv;

rv = serialize_buffer(obj, param->pAAD, aad_len);
if (rv)
return rv;

return serialize_ck_ulong(obj, param->ulTagBits);
}

static CK_RV serialize_mecha_aes_iv(struct serializer *obj,
CK_MECHANISM_PTR mecha)
{
Expand Down Expand Up @@ -753,6 +795,9 @@ CK_RV serialize_ck_mecha_params(struct serializer *obj,
case CKM_AES_CTR:
return serialize_mecha_aes_ctr(obj, &mecha);

case CKM_AES_GCM:
return serialize_mecha_aes_gcm(obj, &mecha);

case CKM_AES_ECB_ENCRYPT_DATA:
return serialize_mecha_key_deriv_str(obj, &mecha);

Expand Down

0 comments on commit 98dc4f4

Please sign in to comment.