コード例 #1
0
ファイル: tpm2_hash.cpp プロジェクト: gwei3/tpm2.0-tools
int hash(TPMI_RH_HIERARCHY hierarchyValue, TPM2B_MAX_BUFFER *data, TPMI_ALG_HASH halg, const char *outHashFilePath, const char *outTicketFilePath)
{
    UINT32 rval;

    TPM2B_DIGEST outHash = { { sizeof(TPM2B_DIGEST)-2, } };
    TPMT_TK_HASHCHECK validation;

    rval = Tss2_Sys_Hash(sysContext, 0, data, halg, hierarchyValue, &outHash, &validation, 0);
    if(rval != TPM_RC_SUCCESS)
    {
        printf("\n......TPM2_Hash Error. TPM Error:0x%x......\n", rval);
        return -1;
    }
    printf("\ntpm2_hash succ.\n\n");

    printf("\nhash value(hex type): ");
    for(UINT16 i = 0; i < outHash.t.size; i++)
        printf("%02x ", outHash.t.buffer[i]);
    printf("\n");

    printf("\nvalidation value(hex type): ");
    for(INT16 j = 0; j < validation.digest.t.size; j++)
        printf("%02x ", validation.digest.t.buffer[j]);
    printf("\n");

    if(saveDataToFile(outHashFilePath, (UINT8 *)&outHash, sizeof(outHash)))
        return -2;
    if(saveDataToFile(outTicketFilePath, (UINT8 *)&validation, sizeof(validation)))
        return -3;

    return 0;
}
コード例 #2
0
ファイル: TpmHash.c プロジェクト: 01org/tpm2.0-tools
//
// This function does a hash on a string of data.
//
UINT32 TpmHash( TPMI_ALG_HASH hashAlg, UINT16 size, BYTE *data, TPM2B_DIGEST *result )
{
    TPM_RC rval;
    TPM2B_MAX_BUFFER dataSizedBuffer;
    UINT16 i;
    TSS2_SYS_CONTEXT *sysContext;
    
    dataSizedBuffer.t.size = size;
    for( i = 0; i < size; i++ )
        dataSizedBuffer.t.buffer[i] = data[i];
    
    sysContext = InitSysContext( 3000, resMgrTctiContext, &abiVersion );
    if( sysContext == 0 )
        return TSS2_APP_RC_INIT_SYS_CONTEXT_FAILED;
    
    rval = Tss2_Sys_Hash ( sysContext, 0, &dataSizedBuffer, hashAlg, TPM_RH_NULL, result, 0, 0);

    TeardownSysContext( &sysContext );
    
    return rval;
}