diff --git a/src/tpm2_packet.c b/src/tpm2_packet.c index b67c2e4..675cdd9 100644 --- a/src/tpm2_packet.c +++ b/src/tpm2_packet.c @@ -288,7 +288,7 @@ void TPM2_Packet_PlaceU32(TPM2_Packet* packet, int markSz) } } -void TPM2_Packet_AppendAuth(TPM2_Packet* packet, TPMS_AUTH_COMMAND* auth, int authCount) +void TPM2_Packet_AppendAuth(TPM2_Packet* packet, TPMS_AUTH_COMMAND* auth, const int authCount) { int tmpSz = 0; int i; @@ -299,20 +299,21 @@ void TPM2_Packet_AppendAuth(TPM2_Packet* packet, TPMS_AUTH_COMMAND* auth, int au TPM2_Packet_MarkU32(packet, &tmpSz); for (i=0; isessionHandle == TPM_RS_PW && - (auth->sessionAttributes & TPMA_SESSION_continueSession) == 0) { - auth->sessionAttributes |= TPMA_SESSION_continueSession; + if (auth[i].sessionHandle == TPM_RS_PW && + (auth[i].sessionAttributes & TPMA_SESSION_continueSession) == 0) { + auth[i].sessionAttributes |= TPMA_SESSION_continueSession; } - TPM2_Packet_AppendU32(packet, auth->sessionHandle); - TPM2_Packet_AppendU16(packet, auth->nonce.size); - TPM2_Packet_AppendBytes(packet, auth->nonce.buffer, auth->nonce.size); - TPM2_Packet_AppendU8(packet, auth->sessionAttributes); - TPM2_Packet_AppendU16(packet, auth->auth.size); - TPM2_Packet_AppendBytes(packet, auth->auth.buffer, auth->auth.size); - auth++; /* next auth */ + TPM2_Packet_AppendU32(packet, auth[i].sessionHandle); + TPM2_Packet_AppendU16(packet, auth[i].nonce.size); + TPM2_Packet_AppendBytes(packet, auth[i].nonce.buffer, auth[i].nonce.size); + TPM2_Packet_AppendU8(packet, auth[i].sessionAttributes); + TPM2_Packet_AppendU16(packet, auth[i].auth.size); + TPM2_Packet_AppendBytes(packet, auth[i].auth.buffer, auth[i].auth.size); } + /* based on position difference places calculated size at marked U32 above */ TPM2_Packet_PlaceU32(packet, tmpSz); } + void TPM2_Packet_ParseAuth(TPM2_Packet* packet, TPMS_AUTH_RESPONSE* auth) { if (auth == NULL) diff --git a/wolftpm/tpm2_packet.h b/wolftpm/tpm2_packet.h index b127084..74152c1 100644 --- a/wolftpm/tpm2_packet.h +++ b/wolftpm/tpm2_packet.h @@ -67,7 +67,7 @@ WOLFTPM_LOCAL void TPM2_Packet_MarkU16(TPM2_Packet* packet, int* markSz); WOLFTPM_LOCAL void TPM2_Packet_PlaceU16(TPM2_Packet* packet, int markSz); WOLFTPM_LOCAL void TPM2_Packet_MarkU32(TPM2_Packet* packet, int* markSz); WOLFTPM_LOCAL void TPM2_Packet_PlaceU32(TPM2_Packet* packet, int markSz); -WOLFTPM_LOCAL void TPM2_Packet_AppendAuth(TPM2_Packet* packet, TPMS_AUTH_COMMAND* auth, int authCount); +WOLFTPM_LOCAL void TPM2_Packet_AppendAuth(TPM2_Packet* packet, TPMS_AUTH_COMMAND* auth, const int authCount); WOLFTPM_LOCAL void TPM2_Packet_ParseAuth(TPM2_Packet* packet, TPMS_AUTH_RESPONSE* auth); WOLFTPM_LOCAL void TPM2_Packet_AppendPCR(TPM2_Packet* packet, TPML_PCR_SELECTION* pcr); WOLFTPM_LOCAL void TPM2_Packet_ParsePCR(TPM2_Packet* packet, TPML_PCR_SELECTION* pcr);