void Unmarshal_Simple_TPM2B( UINT8 *outBuffPtr, UINT32 maxResponseSize, UINT8 **nextData, TPM2B *value, TSS2_RC *rval ) { //deleted for now--spec issues with nested TPM2B's #if 0 INT64 callerAllocatedSize; #endif int i; UINT16 length; if( *rval == TSS2_RC_SUCCESS ) { if( outBuffPtr == 0 || nextData == 0 || *nextData == 0 ) { *rval = TSS2_SYS_RC_BAD_REFERENCE; } else { if( *rval == TSS2_RC_SUCCESS ) { length = CHANGE_ENDIAN_WORD( *(UINT16 *)*nextData ); if( value != 0 ) { Unmarshal_UINT16( outBuffPtr, maxResponseSize, nextData, &( value->size ), rval ); } else { Unmarshal_UINT16( outBuffPtr, maxResponseSize, nextData, 0, rval ); } if( *rval == TSS2_RC_SUCCESS ) { // Copy to output TPM2B. for( i = 0; i < length; i++ ) { if( value != 0 ) { Unmarshal_UINT8( outBuffPtr, maxResponseSize, nextData, &( value->buffer[i] ), rval ); } else { Unmarshal_UINT8( outBuffPtr, maxResponseSize, nextData, 0, rval ); } if( *rval != TSS2_RC_SUCCESS ) { break; } } } } } } }
TPM_RC Tss2_Sys_PCR_Allocate_Complete( TSS2_SYS_CONTEXT *sysContext, TPMI_YES_NO *allocationSuccess, UINT32 *maxPCR, UINT32 *sizeNeeded, UINT32 *sizeAvailable ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonComplete( sysContext ); Unmarshal_UINT8( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), allocationSuccess, &(SYS_CONTEXT->rval) ); Unmarshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), maxPCR, &(SYS_CONTEXT->rval) ); Unmarshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), sizeNeeded, &(SYS_CONTEXT->rval) ); Unmarshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), sizeAvailable, &(SYS_CONTEXT->rval) ); return SYS_CONTEXT->rval; }
void Unmarshal_TPMS_PCR_SELECTION( TSS2_SYS_CONTEXT *sysContext, TPMS_PCR_SELECTION *pcrSelection ) { UINT32 i; if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; if( pcrSelection == 0 ) return; Unmarshal_UINT16( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &pcrSelection->hash, &( SYS_CONTEXT->rval ) ); Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &pcrSelection->sizeofSelect, &( SYS_CONTEXT->rval ) ); for( i = 0; i < pcrSelection->sizeofSelect; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &pcrSelection->pcrSelect[i], &( SYS_CONTEXT->rval ) ); } return; }
void Unmarshal_TPMS_TAGGED_PCR_SELECT( TSS2_SYS_CONTEXT *sysContext, TPMS_TAGGED_PCR_SELECT *taggedPcrSelect ) { UINT32 i; if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; if( taggedPcrSelect == 0 ) return; Unmarshal_UINT32( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &taggedPcrSelect->tag, &( SYS_CONTEXT->rval ) ); Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &taggedPcrSelect->sizeofSelect, &( SYS_CONTEXT->rval ) ); for( i = 0; i < taggedPcrSelect->sizeofSelect; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &taggedPcrSelect->pcrSelect[i], &( SYS_CONTEXT->rval ) ); } return; }
void Unmarshal_TPMA_SESSION( TSS2_SYS_CONTEXT *sysContext, TPMA_SESSION *session ) { void *tmp; if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; if( session == 0 ) return; tmp = (void *)session; Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), (UINT8 *)tmp, &( SYS_CONTEXT->rval ) ); return; }
void Unmarshal_TPMS_CLOCK_INFO( TSS2_SYS_CONTEXT *sysContext, TPMS_CLOCK_INFO *clockInfo ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; if( clockInfo == 0 ) return; Unmarshal_UINT64( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &clockInfo->clock, &( SYS_CONTEXT->rval ) ); Unmarshal_UINT32( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &clockInfo->resetCount, &( SYS_CONTEXT->rval ) ); Unmarshal_UINT32( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &clockInfo->restartCount, &( SYS_CONTEXT->rval ) ); Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &clockInfo->safe, &( SYS_CONTEXT->rval ) ); return; }
TPM_RC Tss2_Sys_GetCapability_Complete( TSS2_SYS_CONTEXT *sysContext, TPMI_YES_NO *moreData, TPMS_CAPABILITY_DATA *capabilityData ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonComplete( sysContext ); Unmarshal_UINT8( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), moreData, &(SYS_CONTEXT->rval) ); Unmarshal_TPMS_CAPABILITY_DATA( sysContext, capabilityData ); return SYS_CONTEXT->rval; }
void Unmarshal_TPMU_HA( TSS2_SYS_CONTEXT *sysContext, TPMU_HA *ha, UINT32 selector ) { UINT32 i; if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; if( ha == 0 ) return; switch( selector ) { #ifdef TPM_ALG_SHA case TPM_ALG_SHA: for( i = 0; i < SHA_DIGEST_SIZE; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &ha->sha[i], &( SYS_CONTEXT->rval ) ); } break; #endif #ifdef TPM_ALG_SHA1 case TPM_ALG_SHA1: for( i = 0; i < SHA1_DIGEST_SIZE; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &ha->sha1[i], &( SYS_CONTEXT->rval ) ); } break; #endif #ifdef TPM_ALG_SHA256 case TPM_ALG_SHA256: for( i = 0; i < SHA256_DIGEST_SIZE; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &ha->sha256[i], &( SYS_CONTEXT->rval ) ); } break; #endif #ifdef TPM_ALG_SHA384 case TPM_ALG_SHA384: for( i = 0; i < SHA384_DIGEST_SIZE; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &ha->sha384[i], &( SYS_CONTEXT->rval ) ); } break; #endif #ifdef TPM_ALG_SHA512 case TPM_ALG_SHA512: for( i = 0; i < SHA512_DIGEST_SIZE; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &ha->sha512[i], &( SYS_CONTEXT->rval ) ); } break; #endif #ifdef TPM_ALG_SM3_256 case TPM_ALG_SM3_256: for( i = 0; i < SM3_256_DIGEST_SIZE; i++ ) { Unmarshal_UINT8( SYS_CONTEXT->tpmOutBuffPtr, SYS_CONTEXT->maxResponseSize, &(SYS_CONTEXT->nextData), &ha->sm3_256[i], &( SYS_CONTEXT->rval ) ); } break; #endif #ifdef TPM_ALG_NULL case TPM_ALG_NULL: break; #endif } return; }