Example #1
0
TPM_RESULT TPM_Sbuffer_Load(TPM_STORE_BUFFER *sbuffer,
                            unsigned char **stream,
                            uint32_t *stream_size)
{
    TPM_RESULT  rc = 0;
    uint32_t length;

    /* get the length of the stream to be loaded */
    if (rc == 0) {
        rc = TPM_Load32(&length, stream, stream_size);
    }
    /* check stream_size */
    if (rc == 0) {
        if (*stream_size < length) {
            printf("TPM_Sbuffer_Load: Error, stream_size %u less than %u\n",
                   *stream_size, length);
            rc = TPM_BAD_PARAM_SIZE;
        }
    }
    if (rc == 0) {
        rc = TPM_Sbuffer_Append(sbuffer, *stream, length);
        *stream += length;
        *stream_size -= length;
    }    
    return rc;
}
Example #2
0
TPM_RESULT TPM_Sbuffer_Test(void)
{
    TPM_RESULT  rc = 0;
    TPM_STORE_BUFFER sbuffer;
    size_t total_count;
    unsigned char count;
    unsigned char data[256];    /* dummy data */
    
    printf(" TPM_Sbuffer_Test:\n");
    TPM_Sbuffer_Init(&sbuffer);
    total_count = 0;
    while ((total_count != TPM_ALLOC_MAX) && rc == 0) {
        if (rc == 0) {
            rc = TPM_Random(&count, 1);
        }
        if (rc == 0) {
            printf(" TPM_Sbuffer_Test: count %u\n", count);
            /* last time through */
            if (total_count + count > TPM_ALLOC_MAX) {
                count = TPM_ALLOC_MAX - total_count;
            }
            rc = TPM_Sbuffer_Append(&sbuffer,data, count);
        }
        if (rc == 0) {
            total_count += count;
        }
        printf(" TPM_Sbuffer_Test: total_count %lu\n", (unsigned long)total_count);
    }
    TPM_Sbuffer_Delete(&sbuffer);
    return rc;
}
Example #3
0
TPM_RESULT TPM_Sbuffer_Append8(TPM_STORE_BUFFER *sbuffer, uint8_t data)
{
    TPM_RESULT  rc = 0;

    rc = TPM_Sbuffer_Append(sbuffer, (const unsigned char *)(&data), sizeof(uint8_t));
    return rc;
}
Example #4
0
TPM_RESULT TPM_Sbuffer_Append32(TPM_STORE_BUFFER *sbuffer, uint32_t data)
{
    TPM_RESULT  rc = 0;

    uint32_t ndata = htonl(data);
    rc = TPM_Sbuffer_Append(sbuffer, (const unsigned char *)(&ndata), sizeof(uint32_t));
    return rc;
}
Example #5
0
TPM_RESULT TPM_Nonce_Store(TPM_STORE_BUFFER *sbuffer,
                           const TPM_NONCE tpm_nonce)
{
    TPM_RESULT  rc = 0;

    printf("  TPM_Nonce_Store:\n");
    rc = TPM_Sbuffer_Append(sbuffer, tpm_nonce, TPM_NONCE_SIZE);        
    return rc;
}
Example #6
0
TPM_RESULT TPM_Digest_Store(TPM_STORE_BUFFER *sbuffer,
			    const TPM_DIGEST tpm_digest)
{
    TPM_RESULT	rc = 0;

    printf("  TPM_Digest_Store:\n");
    rc = TPM_Sbuffer_Append(sbuffer, tpm_digest, TPM_DIGEST_SIZE);	
    return rc;
}
Example #7
0
TPM_RESULT TPM_Sbuffer_AppendSBuffer(TPM_STORE_BUFFER *destSbuffer,
                                     TPM_STORE_BUFFER *srcSbuffer)
{
    TPM_RESULT  rc = 0;
    const unsigned char *buffer;
    uint32_t length;
    
    if (rc == 0) {
        TPM_Sbuffer_Get(srcSbuffer, &buffer, &length);
        rc = TPM_Sbuffer_Append(destSbuffer, buffer, length);
    }
    return rc;
}
Example #8
0
TPM_RESULT TPM_PermanentFlags_StoreBytes(TPM_STORE_BUFFER *sbuffer,
					 const TPM_PERMANENT_FLAGS *tpm_permanent_flags)
{
    TPM_RESULT rc = 0;
     
    printf(" TPM_PermanentFlags_StoreBytes:\n");
    /* store tag */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append16(sbuffer, TPM_TAG_PERMANENT_FLAGS);
    }
    /* store disable */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->disable), sizeof(BYTE));
    }
    /* store ownership */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->ownership), sizeof(BYTE));
    }
    /* store deactivated */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->deactivated), sizeof(BYTE));
    }
    /* store readPubek */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->readPubek), sizeof(BYTE));
    }
    /* store disableOwnerClear */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->disableOwnerClear), sizeof(BYTE));
    }
    /* store allowMaintenance */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->allowMaintenance), sizeof(BYTE));
    }
    /* store physicalPresenceLifetimeLock */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->physicalPresenceLifetimeLock),
				sizeof(BYTE));
    }
    /* store physicalPresenceHWEnable */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->physicalPresenceHWEnable),
				sizeof(BYTE));
    }
    /* store physicalPresenceCMDEnable */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->physicalPresenceCMDEnable),
				sizeof(BYTE));
    }
    /* store CEKPUsed */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->CEKPUsed), sizeof(BYTE));
    }
    /* store TPMpost */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->TPMpost), sizeof(BYTE));
    }
    /* store TPMpostLock */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->TPMpostLock), sizeof(BYTE));
    }
    /* store FIPS */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->FIPS), sizeof(BYTE));		
    }
    /* store operator */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->tpmOperator), sizeof(BYTE));
    }
    /* store enableRevokeEK */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->enableRevokeEK), sizeof(BYTE));
    }
    /* store nvLocked */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->nvLocked), sizeof(BYTE));
    }
    /* store readSRKPub */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->readSRKPub), sizeof(BYTE));
    }
    /* store tpmEstablished */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->tpmEstablished), sizeof(BYTE));
    }
    /* store maintenanceDone */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer, &(tpm_permanent_flags->maintenanceDone), sizeof(BYTE));
    }
#if  (TPM_REVISION >= 103)	/* added for rev 103 */
    /* store disableFullDALogicInfo */
    if (rc == 0) {
	rc = TPM_Sbuffer_Append(sbuffer,
				&(tpm_permanent_flags->disableFullDALogicInfo), sizeof(BYTE));
    }
#endif
    return rc;
}