@@ -233,9 +233,11 @@ static int TPM2_CommandProcess(TPM2_CTX* ctx, TPM2_Packet* packet,
233233 }
234234
235235 #if !defined(WOLFTPM2_NO_WOLFCRYPT ) && !defined(NO_HMAC )
236- rc = TPM2_GetName (ctx , handleValue1 , info -> inHandleCnt , 0 , & name1 );
237- rc |= TPM2_GetName (ctx , handleValue2 , info -> inHandleCnt , 1 , & name2 );
238- rc |= TPM2_GetName (ctx , handleValue3 , info -> inHandleCnt , 2 , & name3 );
236+ rc = TPM2_GetName (ctx , handleValue1 , info -> inHandleCnt , 0 , & name1 );
237+ if (rc == TPM_RC_SUCCESS )
238+ rc = TPM2_GetName (ctx , handleValue2 , info -> inHandleCnt , 1 , & name2 );
239+ if (rc == TPM_RC_SUCCESS )
240+ rc = TPM2_GetName (ctx , handleValue3 , info -> inHandleCnt , 2 , & name3 );
239241 if (rc != TPM_RC_SUCCESS ) {
240242 #ifdef DEBUG_WOLFTPM
241243 printf ("Error getting names for cpHash!\n" );
@@ -275,18 +277,17 @@ static int TPM2_CommandProcess(TPM2_CTX* ctx, TPM2_Packet* packet,
275277 /* Update the Auth Area total size in the command packet */
276278 i = TPM2_Packet_PlaceU32 (packet , authTotalSzPos );
277279
278- #ifdef DEBUG_WOLFTPM
279280 if ((int )authSz != i ) {
280281 /* actual auth size did not match estimated size from
281282 * TPM2_Packet_AppendAuth */
283+ #ifdef DEBUG_WOLFTPM
282284 printf ("Error: Calculated auth size %d did not match actual %d!\n" ,
283285 authSz , i );
286+ #endif
284287 return BUFFER_E ;
285288 }
286- #endif
287289
288290 (void )cmdCode ;
289- (void )i ;
290291
291292 return rc ;
292293}
@@ -2143,9 +2144,8 @@ TPM_RC TPM2_Duplicate(Duplicate_In* in, Duplicate_Out* out)
21432144 TPM2_Packet_AppendBytes (& packet , in -> encryptionKeyIn .buffer ,
21442145 in -> encryptionKeyIn .size );
21452146
2146- TPM2_Packet_AppendU16 (& packet , in -> symmetricAlg .algorithm );
2147- TPM2_Packet_AppendU16 (& packet , in -> symmetricAlg .keyBits .sym );
2148- TPM2_Packet_AppendU16 (& packet , in -> symmetricAlg .mode .sym );
2147+ TPM2_Packet_AppendSymmetric (& packet ,
2148+ (TPMT_SYM_DEF * )& in -> symmetricAlg );
21492149
21502150 TPM2_Packet_Finalize (& packet , TPM_ST_SESSIONS , TPM_CC_Duplicate );
21512151
@@ -3176,7 +3176,9 @@ TPM_RC TPM2_Certify(Certify_In* in, Certify_Out* out)
31763176 in -> qualifyingData .size );
31773177
31783178 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
3179- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3179+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
3180+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3181+ }
31803182
31813183 TPM2_Packet_Finalize (& packet , TPM_ST_SESSIONS , TPM_CC_Certify );
31823184
@@ -3239,7 +3241,9 @@ TPM_RC TPM2_CertifyCreation(CertifyCreation_In* in, CertifyCreation_Out* out)
32393241 in -> creationHash .size );
32403242
32413243 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
3242- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3244+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
3245+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3246+ }
32433247
32443248 TPM2_Packet_AppendU16 (& packet , in -> creationTicket .tag );
32453249 TPM2_Packet_AppendU32 (& packet , in -> creationTicket .hierarchy );
@@ -3304,7 +3308,9 @@ TPM_RC TPM2_Quote(Quote_In* in, Quote_Out* out)
33043308 in -> qualifyingData .size );
33053309
33063310 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
3307- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3311+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
3312+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3313+ }
33083314
33093315 TPM2_Packet_AppendPCR (& packet , & in -> PCRselect );
33103316
@@ -3368,7 +3374,9 @@ TPM_RC TPM2_GetSessionAuditDigest(GetSessionAuditDigest_In* in,
33683374 in -> qualifyingData .size );
33693375
33703376 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
3371- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3377+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
3378+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3379+ }
33723380
33733381 TPM2_Packet_Finalize (& packet , TPM_ST_SESSIONS ,
33743382 TPM_CC_GetSessionAuditDigest );
@@ -3430,7 +3438,9 @@ TPM_RC TPM2_GetCommandAuditDigest(GetCommandAuditDigest_In* in,
34303438 in -> qualifyingData .size );
34313439
34323440 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
3433- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3441+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
3442+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3443+ }
34343444
34353445 TPM2_Packet_Finalize (& packet , TPM_ST_SESSIONS ,
34363446 TPM_CC_GetCommandAuditDigest );
@@ -3491,7 +3501,9 @@ TPM_RC TPM2_GetTime(GetTime_In* in, GetTime_Out* out)
34913501 in -> qualifyingData .size );
34923502
34933503 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
3494- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3504+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
3505+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
3506+ }
34953507
34963508 TPM2_Packet_Finalize (& packet , TPM_ST_SESSIONS , TPM_CC_GetTime );
34973509
@@ -3616,6 +3628,7 @@ TPM_RC TPM2_VerifySignature(VerifySignature_In* in,
36163628 TPM_RC rc ;
36173629 TPM2_CTX * ctx = TPM2_GetActiveCtx ();
36183630 TPM_ST st ;
3631+ UINT16 wireSize = 0 ;
36193632
36203633 if (ctx == NULL || in == NULL || out == NULL )
36213634 return BAD_FUNC_ARG ;
@@ -3651,10 +3664,20 @@ TPM_RC TPM2_VerifySignature(VerifySignature_In* in,
36513664
36523665 TPM2_Packet_ParseU16 (& packet , & out -> validation .tag );
36533666 TPM2_Packet_ParseU32 (& packet , & out -> validation .hierarchy );
3654- TPM2_Packet_ParseU16 (& packet , & out -> validation .digest .size );
3667+
3668+ TPM2_Packet_ParseU16 (& packet , & wireSize );
3669+ out -> validation .digest .size = wireSize ;
3670+ if (out -> validation .digest .size >
3671+ (UINT16 )sizeof (out -> validation .digest .buffer )) {
3672+ out -> validation .digest .size =
3673+ (UINT16 )sizeof (out -> validation .digest .buffer );
3674+ }
36553675 TPM2_Packet_ParseBytes (& packet ,
36563676 out -> validation .digest .buffer ,
36573677 out -> validation .digest .size );
3678+ if (wireSize > out -> validation .digest .size )
3679+ TPM2_Packet_ParseBytes (& packet , NULL ,
3680+ wireSize - out -> validation .digest .size );
36583681 }
36593682
36603683 TPM2_ReleaseLock (ctx );
@@ -5928,7 +5951,9 @@ TPM_RC TPM2_NV_Certify(NV_Certify_In* in, NV_Certify_Out* out)
59285951 in -> qualifyingData .size );
59295952
59305953 TPM2_Packet_AppendU16 (& packet , in -> inScheme .scheme );
5931- TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
5954+ if (in -> inScheme .scheme != TPM_ALG_NULL ) {
5955+ TPM2_Packet_AppendU16 (& packet , in -> inScheme .details .any .hashAlg );
5956+ }
59325957
59335958 TPM2_Packet_AppendU16 (& packet , in -> size );
59345959 TPM2_Packet_AppendU16 (& packet , in -> offset );
0 commit comments