void Marshal_TPMU_SENSITIVE_COMPOSITE( TSS2_SYS_CONTEXT *sysContext, TPMU_SENSITIVE_COMPOSITE *sensitiveComposite, UINT32 selector ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; switch( selector ) { #ifdef TPM_ALG_RSA case TPM_ALG_RSA: MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitiveComposite->rsa ); break; #endif #ifdef TPM_ALG_ECC case TPM_ALG_ECC: MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitiveComposite->ecc ); break; #endif #ifdef TPM_ALG_KEYEDHASH case TPM_ALG_KEYEDHASH: MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitiveComposite->bits ); break; #endif #ifdef TPM_ALG_SYMCIPHER case TPM_ALG_SYMCIPHER: MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitiveComposite->sym ); break; #endif } return; }
TPM_RC Tss2_Sys_MakeCredential_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT handle, TPM2B_DIGEST *credential, TPM2B_NAME *objectName ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_MakeCredential ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), handle, &(SYS_CONTEXT->rval) ); if( credential == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( credential->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( objectName->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
void Marshal_TPMS_CONTEXT_DATA( TSS2_SYS_CONTEXT *sysContext, TPMS_CONTEXT_DATA *contextData ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&contextData->integrity ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&contextData->encrypted ); return; }
void Marshal_TPMS_SENSITIVE_CREATE( TSS2_SYS_CONTEXT *sysContext, TPMS_SENSITIVE_CREATE *sensitiveCreate ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitiveCreate->userAuth ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitiveCreate->data ); return; }
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; }
void Marshal_TPMS_SIGNATURE_ECC( TSS2_SYS_CONTEXT *sysContext, TPMS_SIGNATURE_ECC *signatureEcc ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), signatureEcc->hash, &( SYS_CONTEXT->rval ) ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&signatureEcc->signatureR ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&signatureEcc->signatureS ); return; }
void Marshal_TPMT_SENSITIVE( TSS2_SYS_CONTEXT *sysContext, TPMT_SENSITIVE *sensitive ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), sensitive->sensitiveType, &( SYS_CONTEXT->rval ) ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitive->authValue ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&sensitive->seedValue ); Marshal_TPMU_SENSITIVE_COMPOSITE( sysContext, &sensitive->sensitive, sensitive->sensitiveType ); return; }
void Marshal_TPMS_AUTH_COMMAND( TSS2_SYS_CONTEXT *sysContext, TPMS_AUTH_COMMAND *authCommand ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), authCommand->sessionHandle, &( SYS_CONTEXT->rval ) ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&authCommand->nonce ); Marshal_TPMA_SESSION( sysContext, authCommand->sessionAttributes ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&authCommand->hmac ); return; }
TPM_RC Tss2_Sys_HashSequenceStart_Prepare( TSS2_SYS_CONTEXT *sysContext, TPM2B_AUTH *auth, TPMI_ALG_HASH hashAlg ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_HashSequenceStart ); if( auth == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( auth->b ) ); Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), hashAlg, &(SYS_CONTEXT->rval) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_HMAC_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT handle, TPM2B_MAX_BUFFER *buffer, TPMI_ALG_HASH hashAlg ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_HMAC ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), handle, &(SYS_CONTEXT->rval) ); if( buffer == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( buffer->b ) ); Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), hashAlg, &(SYS_CONTEXT->rval) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_NV_DefineSpace_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_RH_PROVISION authHandle, TPM2B_AUTH *auth, TPM2B_NV_PUBLIC *publicInfo ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_NV_DefineSpace ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), authHandle, &(SYS_CONTEXT->rval) ); if( auth == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( auth->b ) ); Marshal_TPM2B_NV_PUBLIC( sysContext, publicInfo ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_Load_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT parentHandle, TPM2B_PRIVATE *inPrivate, TPM2B_PUBLIC *inPublic ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_Load ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), parentHandle, &(SYS_CONTEXT->rval) ); if( inPrivate == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( inPrivate->b ) ); Marshal_TPM2B_PUBLIC( sysContext, inPublic ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
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_HierarchyChangeAuth_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_RH_HIERARCHY_AUTH authHandle, TPM2B_AUTH *newAuth ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_HierarchyChangeAuth ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), authHandle, &(SYS_CONTEXT->rval) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( newAuth->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_PolicyCpHash_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_SH_POLICY policySession, TPM2B_DIGEST *cpHashA ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_PolicyCpHash ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), policySession, &(SYS_CONTEXT->rval) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( cpHashA->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
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_EventSequenceComplete_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_PCR pcrHandle, TPMI_DH_OBJECT sequenceHandle, TPM2B_MAX_BUFFER *buffer ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_EventSequenceComplete ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), pcrHandle, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), sequenceHandle, &(SYS_CONTEXT->rval) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( buffer->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_PCR_Event_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_PCR pcrHandle, TPM2B_EVENT *eventData ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_PCR_Event ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), pcrHandle, &(SYS_CONTEXT->rval) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( eventData->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_Hash_Prepare( TSS2_SYS_CONTEXT *sysContext, TPM2B_MAX_BUFFER *data, TPMI_ALG_HASH hashAlg, TPMI_RH_HIERARCHY hierarchy ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_Hash ); if( data == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( data->b ) ); Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), hashAlg, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), hierarchy, &(SYS_CONTEXT->rval) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_CertifyCreation_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT signHandle, TPMI_DH_OBJECT objectHandle, TPM2B_DATA *qualifyingData, TPM2B_DIGEST *creationHash, TPMT_SIG_SCHEME *inScheme, TPMT_TK_CREATION *creationTicket ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } if( inScheme == NULL || creationTicket == NULL ) { return TSS2_SYS_RC_BAD_REFERENCE; } CommonPreparePrologue( sysContext, TPM_CC_CertifyCreation ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), signHandle, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), objectHandle, &(SYS_CONTEXT->rval) ); if( qualifyingData == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( qualifyingData->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( creationHash->b ) ); Marshal_TPMT_SIG_SCHEME( sysContext, inScheme ); Marshal_TPMT_TK_CREATION( sysContext, creationTicket ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_PolicyAuthorize_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_SH_POLICY policySession, TPM2B_DIGEST *approvedPolicy, TPM2B_NONCE *policyRef, TPM2B_NAME *keySign, TPMT_TK_VERIFIED *checkTicket ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } if( checkTicket == NULL ) { return TSS2_SYS_RC_BAD_REFERENCE; } CommonPreparePrologue( sysContext, TPM_CC_PolicyAuthorize ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), policySession, &(SYS_CONTEXT->rval) ); if( approvedPolicy == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( approvedPolicy->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( policyRef->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( keySign->b ) ); Marshal_TPMT_TK_VERIFIED( sysContext, checkTicket ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_Import_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT parentHandle, TPM2B_DATA *encryptionKey, TPM2B_PUBLIC *objectPublic, TPM2B_PRIVATE *duplicate, TPM2B_ENCRYPTED_SECRET *inSymSeed, TPMT_SYM_DEF_OBJECT *symmetricAlg ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_Import ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), parentHandle, &(SYS_CONTEXT->rval) ); if( encryptionKey == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( encryptionKey->b ) ); Marshal_TPM2B_PUBLIC( sysContext, objectPublic ); MARSHAL_SIMPLE_TPM2B( sysContext, &( duplicate->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( inSymSeed->b ) ); Marshal_TPMT_SYM_DEF_OBJECT( sysContext, symmetricAlg ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_PolicyTicket_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_SH_POLICY policySession, TPM2B_TIMEOUT *timeout, TPM2B_DIGEST *cpHashA, TPM2B_NONCE *policyRef, TPM2B_NAME *authName, TPMT_TK_AUTH *ticket ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_PolicyTicket ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), policySession, &(SYS_CONTEXT->rval) ); if( timeout == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( timeout->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( cpHashA->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( policyRef->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( authName->b ) ); Marshal_TPMT_TK_AUTH( sysContext, ticket ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_RSA_Decrypt_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT keyHandle, TPM2B_PUBLIC_KEY_RSA *cipherText, TPMT_RSA_DECRYPT *inScheme, TPM2B_DATA *label ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } if( inScheme == NULL ) { return TSS2_SYS_RC_BAD_REFERENCE; } CommonPreparePrologue( sysContext, TPM_CC_RSA_Decrypt ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), keyHandle, &(SYS_CONTEXT->rval) ); if( cipherText == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( cipherText->b ) ); Marshal_TPMT_RSA_DECRYPT( sysContext, inScheme ); MARSHAL_SIMPLE_TPM2B( sysContext, &( label->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_Rewrap_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT oldParent, TPMI_DH_OBJECT newParent, TPM2B_PRIVATE *inDuplicate, TPM2B_NAME *name, TPM2B_ENCRYPTED_SECRET *inSymSeed ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_Rewrap ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), oldParent, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), newParent, &(SYS_CONTEXT->rval) ); if( inDuplicate == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( inDuplicate->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( name->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( inSymSeed->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
TPM_RC Tss2_Sys_EncryptDecrypt_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT keyHandle, TPMI_YES_NO decrypt, TPMI_ALG_SYM_MODE mode, TPM2B_IV *ivIn, TPM2B_MAX_BUFFER *inData ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_EncryptDecrypt ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), keyHandle, &(SYS_CONTEXT->rval) ); Marshal_UINT8( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), decrypt, &(SYS_CONTEXT->rval) ); Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), mode, &(SYS_CONTEXT->rval) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( ivIn->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( inData->b ) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
void Marshal_TPMT_TK_CREATION( TSS2_SYS_CONTEXT *sysContext, TPMT_TK_CREATION *tkCreation ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), tkCreation->tag, &( SYS_CONTEXT->rval ) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), tkCreation->hierarchy, &( SYS_CONTEXT->rval ) ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&tkCreation->digest ); return; }
TPM_RC Tss2_Sys_NV_Certify_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_DH_OBJECT signHandle, TPMI_RH_NV_AUTH authHandle, TPMI_RH_NV_INDEX nvIndex, TPM2B_DATA *qualifyingData, TPMT_SIG_SCHEME *inScheme, UINT16 size, UINT16 offset ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } if( inScheme == NULL ) { return TSS2_SYS_RC_BAD_REFERENCE; } CommonPreparePrologue( sysContext, TPM_CC_NV_Certify ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), signHandle, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), authHandle, &(SYS_CONTEXT->rval) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), nvIndex, &(SYS_CONTEXT->rval) ); if( qualifyingData == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( qualifyingData->b ) ); Marshal_TPMT_SIG_SCHEME( sysContext, inScheme ); Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), size, &(SYS_CONTEXT->rval) ); Marshal_UINT16( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), offset, &(SYS_CONTEXT->rval) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 1; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }
void Marshal_TPMS_CONTEXT( TSS2_SYS_CONTEXT *sysContext, TPMS_CONTEXT *context ) { if( SYS_CONTEXT->rval != TSS2_RC_SUCCESS ) return; Marshal_UINT64( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), context->sequence, &( SYS_CONTEXT->rval ) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), context->savedHandle, &( SYS_CONTEXT->rval ) ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), context->hierarchy, &( SYS_CONTEXT->rval ) ); MARSHAL_SIMPLE_TPM2B( sysContext, (TPM2B *)&context->contextBlob ); return; }
TPM_RC Tss2_Sys_PolicyDuplicationSelect_Prepare( TSS2_SYS_CONTEXT *sysContext, TPMI_SH_POLICY policySession, TPM2B_NAME *objectName, TPM2B_NAME *newParentName, TPMI_YES_NO includeObject ) { if( sysContext == NULL ) { return( TSS2_SYS_RC_BAD_REFERENCE ); } CommonPreparePrologue( sysContext, TPM_CC_PolicyDuplicationSelect ); Marshal_UINT32( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), policySession, &(SYS_CONTEXT->rval) ); if( objectName == 0 ) { SYS_CONTEXT->decryptNull = 1; } MARSHAL_SIMPLE_TPM2B( sysContext, &( objectName->b ) ); MARSHAL_SIMPLE_TPM2B( sysContext, &( newParentName->b ) ); Marshal_UINT8( SYS_CONTEXT->tpmInBuffPtr, SYS_CONTEXT->maxCommandSize, &(SYS_CONTEXT->nextData), includeObject, &(SYS_CONTEXT->rval) ); SYS_CONTEXT->decryptAllowed = 1; SYS_CONTEXT->encryptAllowed = 0; SYS_CONTEXT->authAllowed = 1; CommonPrepareEpilogue( sysContext ); return SYS_CONTEXT->rval; }