Skip to content

Commit 14cce34

Browse files
committed
Further fixes from peer review. Additional copy helpers. Reverted the crypto callback change (no need to force wolfCrypt update yet).
1 parent 8362397 commit 14cce34

1 file changed

Lines changed: 34 additions & 26 deletions

File tree

src/tpm2_wrap.c

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ static void wolfTPM2_CopyPubT(TPMT_PUBLIC* out, const TPMT_PUBLIC* in);
3737
static void wolfTPM2_CopyPub(TPM2B_PUBLIC* out, const TPM2B_PUBLIC* in);
3838
static void wolfTPM2_CopyPriv(TPM2B_PRIVATE* out, const TPM2B_PRIVATE* in);
3939
static void wolfTPM2_CopyEccParam(TPM2B_ECC_PARAMETER* out, const TPM2B_ECC_PARAMETER* in);
40+
static void wolfTPM2_CopyKeyFromBlob(WOLFTPM2_KEY* key, const WOLFTPM2_KEYBLOB* keyBlob);
41+
static void wolfTPM2_CopyNvPublic(TPMS_NV_PUBLIC* out, const TPMS_NV_PUBLIC* in);
4042

4143
/******************************************************************************/
4244
/* --- BEGIN Wrapper Device Functions -- */
@@ -1499,11 +1501,7 @@ int wolfTPM2_LoadRsaPrivateKey_ex(WOLFTPM2_DEV* dev,
14991501
}
15001502

15011503
/* return loaded key */
1502-
key->handle.hndl = keyBlob.handle.hndl;
1503-
wolfTPM2_CopyAuth(&key->handle.auth, &keyBlob.handle.auth);
1504-
wolfTPM2_CopyName(&key->handle.name, &keyBlob.handle.name);
1505-
wolfTPM2_CopySymmetric(&key->handle.symmetric, &keyBlob.handle.symmetric);
1506-
wolfTPM2_CopyPub(&key->pub, &keyBlob.pub);
1504+
wolfTPM2_CopyKeyFromBlob(key, &keyBlob);
15071505

15081506
return rc;
15091507
}
@@ -1619,11 +1617,7 @@ int wolfTPM2_LoadEccPrivateKey(WOLFTPM2_DEV* dev, const WOLFTPM2_KEY* parentKey,
16191617
}
16201618

16211619
/* return loaded key */
1622-
key->handle.hndl = keyBlob.handle.hndl;
1623-
wolfTPM2_CopyAuth(&key->handle.auth, &keyBlob.handle.auth);
1624-
wolfTPM2_CopyName(&key->handle.name, &keyBlob.handle.name);
1625-
wolfTPM2_CopySymmetric(&key->handle.symmetric, &keyBlob.handle.symmetric);
1626-
wolfTPM2_CopyPub(&key->pub, &keyBlob.pub);
1620+
wolfTPM2_CopyKeyFromBlob(key, &keyBlob);
16271621

16281622
return rc;
16291623
}
@@ -2919,21 +2913,7 @@ int wolfTPM2_NVReadPublic(WOLFTPM2_DEV* dev, word32 nvIndex,
29192913
#endif
29202914

29212915
if (nvPublic) {
2922-
nvPublic->attributes = out.nvPublic.nvPublic.attributes;
2923-
nvPublic->authPolicy.size = out.nvPublic.nvPublic.authPolicy.size;
2924-
if (nvPublic->authPolicy.size > 0) {
2925-
if (nvPublic->authPolicy.size >
2926-
(UINT16)sizeof(nvPublic->authPolicy.buffer)) {
2927-
nvPublic->authPolicy.size =
2928-
(UINT16)sizeof(nvPublic->authPolicy.buffer);
2929-
}
2930-
XMEMCPY(nvPublic->authPolicy.buffer,
2931-
out.nvPublic.nvPublic.authPolicy.buffer,
2932-
nvPublic->authPolicy.size);
2933-
}
2934-
nvPublic->dataSize = out.nvPublic.nvPublic.dataSize;
2935-
nvPublic->nameAlg = out.nvPublic.nvPublic.nameAlg;
2936-
nvPublic->nvIndex = out.nvPublic.nvPublic.nvIndex;
2916+
wolfTPM2_CopyNvPublic(nvPublic, &out.nvPublic.nvPublic);
29372917
}
29382918
/* TODO: For HMAC calc out.nvName will need captured */
29392919

@@ -4341,6 +4321,34 @@ static void wolfTPM2_CopyEccParam(TPM2B_ECC_PARAMETER* out,
43414321
}
43424322
}
43434323

4324+
static void wolfTPM2_CopyKeyFromBlob(WOLFTPM2_KEY* key, const WOLFTPM2_KEYBLOB* keyBlob)
4325+
{
4326+
if (key != NULL && keyBlob != NULL) {
4327+
key->handle.hndl = keyBlob->handle.hndl;
4328+
wolfTPM2_CopyAuth(&key->handle.auth, &keyBlob->handle.auth);
4329+
wolfTPM2_CopyName(&key->handle.name, &keyBlob->handle.name);
4330+
wolfTPM2_CopySymmetric(&key->handle.symmetric, &keyBlob->handle.symmetric);
4331+
wolfTPM2_CopyPub(&key->pub, &keyBlob->pub);
4332+
}
4333+
}
4334+
4335+
static void wolfTPM2_CopyNvPublic(TPMS_NV_PUBLIC* out, const TPMS_NV_PUBLIC* in)
4336+
{
4337+
if (out != NULL && in != NULL) {
4338+
out->attributes = in->attributes;
4339+
out->authPolicy.size = in->authPolicy.size;
4340+
if (out->authPolicy.size > 0) {
4341+
if (out->authPolicy.size > (UINT16)sizeof(out->authPolicy.buffer)) {
4342+
out->authPolicy.size = (UINT16)sizeof(out->authPolicy.buffer);
4343+
}
4344+
XMEMCPY(out->authPolicy.buffer, in->authPolicy.buffer, out->authPolicy.size);
4345+
}
4346+
out->dataSize = in->dataSize;
4347+
out->nameAlg = in->nameAlg;
4348+
out->nvIndex = in->nvIndex;
4349+
}
4350+
}
4351+
43444352

43454353
/******************************************************************************/
43464354
/* --- END Utility Functions -- */
@@ -4917,7 +4925,7 @@ int wolfTPM2_SetCryptoDevCb(WOLFTPM2_DEV* dev, CryptoDevCallbackFunc cb,
49174925
devId = rc;
49184926
tpmCtx->dev = dev;
49194927

4920-
rc = wc_CryptoCb_RegisterDevice(devId, cb, tpmCtx);
4928+
rc = wc_CryptoDev_RegisterDevice(devId, cb, tpmCtx);
49214929
}
49224930

49234931
if (pDevId) {

0 commit comments

Comments
 (0)