@@ -2682,7 +2682,7 @@ int wolfTPM2_ImportRsaPrivateKeySeed(WOLFTPM2_DEV* dev,
26822682 TPMI_ALG_RSA_SCHEME scheme , TPMI_ALG_HASH hashAlg , TPMA_OBJECT attributes ,
26832683 byte * seed , word32 seedSz )
26842684{
2685- int rc = 0 ;
2685+ int rc = TPM_RC_SUCCESS ;
26862686 TPM2B_PUBLIC pub ;
26872687 TPM2B_SENSITIVE sens ;
26882688 word32 digestSz ;
@@ -2739,29 +2739,36 @@ int wolfTPM2_ImportRsaPrivateKeySeed(WOLFTPM2_DEV* dev,
27392739 #ifdef DEBUG_WOLFTPM
27402740 printf ("Import RSA name alg size invalid! %d\n" , digestSz );
27412741 #endif
2742- return BUFFER_E ;
2742+ rc = BUFFER_E ;
27432743 }
2744- if (seed != NULL ) {
2745- /* use custom seed */
2746- if (seedSz != digestSz ) {
2747- #ifdef DEBUG_WOLFTPM
2748- printf ("Import RSA seed size invalid! %d != %d\n" ,
2749- seedSz , digestSz );
2750- #endif
2751- return BAD_FUNC_ARG ;
2744+
2745+ if (rc == TPM_RC_SUCCESS ) {
2746+ if (seed != NULL ) {
2747+ /* use custom seed */
2748+ if (seedSz != digestSz ) {
2749+ #ifdef DEBUG_WOLFTPM
2750+ printf ("Import RSA seed size invalid! %d != %d\n" ,
2751+ seedSz , digestSz );
2752+ #endif
2753+ rc = BAD_FUNC_ARG ;
2754+ }
2755+ else {
2756+ sens .sensitiveArea .seedValue .size = seedSz ;
2757+ XMEMCPY (sens .sensitiveArea .seedValue .buffer , seed , seedSz );
2758+ }
2759+ }
2760+ else {
2761+ /* assign random seed */
2762+ sens .sensitiveArea .seedValue .size = digestSz ;
2763+ rc = TPM2_GetNonceNoLock (sens .sensitiveArea .seedValue .buffer ,
2764+ sens .sensitiveArea .seedValue .size );
27522765 }
2753- sens .sensitiveArea .seedValue .size = seedSz ;
2754- XMEMCPY (sens .sensitiveArea .seedValue .buffer , seed , seedSz );
2755- }
2756- else {
2757- /* assign random seed */
2758- sens .sensitiveArea .seedValue .size = digestSz ;
2759- rc = TPM2_GetNonceNoLock (sens .sensitiveArea .seedValue .buffer ,
2760- sens .sensitiveArea .seedValue .size );
27612766 }
2762- if (rc == 0 ) {
2767+ if (rc == TPM_RC_SUCCESS ) {
27632768 rc = wolfTPM2_ImportPrivateKey (dev , parentKey , keyBlob , & pub , & sens );
27642769 }
2770+
2771+ TPM2_ForceZero (& sens , sizeof (sens ));
27652772 return rc ;
27662773}
27672774int wolfTPM2_ImportRsaPrivateKey (WOLFTPM2_DEV * dev ,
0 commit comments