TPM_RC Tss2_Sys_VerifySignature_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT keyHandle, TPM2B_DIGEST *digest, TPMT_SIGNATURE *signature ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_VerifySignature ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), keyHandle, &(SYS_CONTEXT->rval) ); if( digest == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( digest->b ) ); Marshal_TPMT_SIGNATURE( sysContext, signature ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_PolicySigned_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT authObject, TPMI_SH_POLICY policySession, TPM2B_NONCE *nonceTPM, TPM2B_DIGEST *cpHashA, TPM2B_NONCE *policyRef, INT32 expiration, TPMT_SIGNATURE *auth ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } if( auth == NULL ) { return TSS2_SYS_RC_BAD_REFERENCE; } CommonPreparePrologue( sysContext, TPM_CC_PolicySigned ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), authObject, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), policySession, &(SYS_CONTEXT->rval) ); if( nonceTPM == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( nonceTPM->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( cpHashA->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( policyRef->b ) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), expiration, &(SYS_CONTEXT->rval) ); Marshal_TPMT_SIGNATURE( sysContext, auth ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }