TPM_RC Tss2_Sys_PolicyPCR_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_SH_POLICY policySession, TPM2B_DIGEST *pcrDigest, TPML_PCR_SELECTION *pcrs ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_PolicyPCR ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), policySession, &(SYS_CONTEXT->rval) ); if( pcrDigest == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( pcrDigest->b ) ); Marshal_TPML_PCR_SELECTION( sysContext, pcrs ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_PCR_Allocate_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_RH_PLATFORM authHandle, TPML_PCR_SELECTION *pcrAllocation ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_PCR_Allocate ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), authHandle, &(SYS_CONTEXT->rval) ); Marshal_TPML_PCR_SELECTION( sysContext, pcrAllocation ); SYS_CONTEXT->decryptAllowed = 0; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_CreatePrimary_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_RH_HIERARCHY primaryHandle, TPM2B_SENSITIVE_CREATE *inSensitive, TPM2B_PUBLIC *inPublic, TPM2B_DATA *outsideInfo, TPML_PCR_SELECTION *creationPCR ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } if( creationPCR == NULL ) { return TSS2_SYS_RC_BAD_REFERENCE; } CommonPreparePrologue( sysContext, TPM_CC_CreatePrimary ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), primaryHandle, &(SYS_CONTEXT->rval) ); if( inSensitive == 0 ) { SYS_CONTEXT->decryptNull = 1; } Marshal_TPM2B_SENSITIVE_CREATE( sysContext, inSensitive ); Marshal_TPM2B_PUBLIC( sysContext, inPublic ); MARSHAL_SIMPLE_TPM2B( sysContext, &( outsideInfo->b ) ); Marshal_TPML_PCR_SELECTION( sysContext, creationPCR ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_Quote_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT signHandle, TPM2B_DATA *qualifyingData, TPMT_SIG_SCHEME *inScheme, TPML_PCR_SELECTION *PCRselect ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_Quote ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), signHandle, &(SYS_CONTEXT->rval) ); if( qualifyingData == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( qualifyingData->b ) ); Marshal_TPMT_SIG_SCHEME( sysContext, inScheme ); Marshal_TPML_PCR_SELECTION( sysContext, PCRselect ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }