@@ -37,6 +37,8 @@ static void wolfTPM2_CopyPubT(TPMT_PUBLIC* out, const TPMT_PUBLIC* in);
3737static void wolfTPM2_CopyPub (TPM2B_PUBLIC * out , const TPM2B_PUBLIC * in );
3838static void wolfTPM2_CopyPriv (TPM2B_PRIVATE * out , const TPM2B_PRIVATE * in );
3939static 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