mirror of https://github.com/wolfSSL/wolfTPM.git
Add TPM2_PrintPublicArea to help debugging
Signed-off-by: Dimitar Tomov <dimi@wolfssl.com>pull/143/head
parent
daa690293d
commit
dfb65753e1
81
src/tpm2.c
81
src/tpm2.c
|
@ -5785,6 +5785,87 @@ void TPM2_PrintAuth(const TPMS_AUTH_COMMAND* authCmd)
|
|||
printf("hmacSize=%u hmacBuffer:\n", authCmd->hmac.size);
|
||||
TPM2_PrintBin(authCmd->hmac.buffer, authCmd->hmac.size);
|
||||
}
|
||||
|
||||
void TPM2_PrintPublicArea(const TPM2B_PUBLIC* pub)
|
||||
{
|
||||
printf("publicArea:\n");
|
||||
printf("Total public area size is = %d\n", pub->size);
|
||||
/* Sanity check */
|
||||
if (pub->size > (sizeof(TPM2B_PUBLIC)) || pub->size == 0) {
|
||||
printf("Incorrect publicArea size. Aborting debug print\n");
|
||||
return;
|
||||
}
|
||||
printf("algType = 0x%2.2X\n", pub->publicArea.type);
|
||||
printf("nameAlg = 0x%2.2X\n", pub->publicArea.nameAlg);
|
||||
printf("objectAttributes = 0x%X\n", pub->publicArea.objectAttributes);
|
||||
printf("authPolicy size = %d\n", pub->publicArea.authPolicy.size);
|
||||
/* authPolicy is optional */
|
||||
if (pub->publicArea.authPolicy.size > 0 &&
|
||||
pub->publicArea.authPolicy.size < sizeof(pub->publicArea.authPolicy)) {
|
||||
TPM2_PrintBin(pub->publicArea.authPolicy.buffer,
|
||||
pub->publicArea.authPolicy.size);
|
||||
}
|
||||
else {
|
||||
printf("authPolicy size is incorrect = %d\n", pub->publicArea.authPolicy.size);
|
||||
}
|
||||
/* parameters and unique field depend on algType */
|
||||
switch(pub->publicArea.type) {
|
||||
case TPM_ALG_KEYEDHASH:
|
||||
printf("KeyedHash scheme = 0x%2.2X\n", pub->publicArea.parameters.keyedHashDetail.scheme.scheme);
|
||||
printf("KeyedHash details = 0x%2.2X\n", pub->publicArea.parameters.keyedHashDetail.scheme.details.hmac.hashAlg);
|
||||
|
||||
printf("KeyedHash unique\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.keyedHash.buffer, pub->publicArea.unique.keyedHash.size);
|
||||
break;
|
||||
|
||||
case TPM_ALG_SYMCIPHER:
|
||||
printf("symDetail algorithm = 0x%2.2X\n", pub->publicArea.parameters.symDetail.sym.algorithm);
|
||||
printf("symDetail keyBits = 0x%2.2X\n", pub->publicArea.parameters.symDetail.sym.keyBits.sym);
|
||||
printf("symDetail mode = 0x%2.2X\n", pub->publicArea.parameters.symDetail.sym.mode.sym);
|
||||
|
||||
printf("symDetail unique\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.sym.buffer, pub->publicArea.unique.sym.size);
|
||||
break;
|
||||
|
||||
case TPM_ALG_RSA:
|
||||
printf("rsaDetail algorithm = 0x%2.2X\n", pub->publicArea.parameters.rsaDetail.symmetric.algorithm);
|
||||
printf("rsaDetail keyBits = 0x%2.2X\n", pub->publicArea.parameters.rsaDetail.symmetric.keyBits.sym);
|
||||
printf("rsaDetail mode = 0x%2.2X\n", pub->publicArea.parameters.rsaDetail.symmetric.mode.sym);
|
||||
printf("rsaDetail scheme = 0x%2.2X\n", pub->publicArea.parameters.rsaDetail.scheme.scheme);
|
||||
printf("rsaDetail scheme details = 0x%2.2X\n", pub->publicArea.parameters.rsaDetail.scheme.details.anySig.hashAlg);
|
||||
printf("rsaDetail keyBits = 0x%2.2X\n", pub->publicArea.parameters.rsaDetail.keyBits);
|
||||
printf("rsaDetail exponent = 0x%X\n", pub->publicArea.parameters.rsaDetail.exponent);
|
||||
|
||||
printf("RSA Detail unique\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.rsa.buffer, pub->publicArea.unique.rsa.size);
|
||||
break;
|
||||
|
||||
case TPM_ALG_ECC:
|
||||
printf("eccDetail algorithm = 0x%2.2X\n", pub->publicArea.parameters.eccDetail.symmetric.algorithm);
|
||||
printf("eccDetail keyBits = 0x%2.2X\n", pub->publicArea.parameters.eccDetail.symmetric.keyBits.sym);
|
||||
printf("eccDetail mode = 0x%2.2X\n", pub->publicArea.parameters.eccDetail.symmetric.mode.sym);
|
||||
printf("eccDetail scheme = 0x%2.2X\n", pub->publicArea.parameters.eccDetail.scheme.scheme);
|
||||
printf("eccDetail scheme details = 0x%2.2X\n", pub->publicArea.parameters.eccDetail.scheme.details.any.hashAlg);
|
||||
printf("eccDetail curveID = 0x%2.2X\n", pub->publicArea.parameters.eccDetail.curveID);
|
||||
printf("eccDetail KDF scheme = 0x%X\n", pub->publicArea.parameters.eccDetail.kdf.scheme);
|
||||
printf("eccDetail KDF details = 0x%X\n", pub->publicArea.parameters.eccDetail.kdf.details.any.hashAlg);
|
||||
|
||||
printf("ECC Detail unique X\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.ecc.x.buffer, pub->publicArea.unique.ecc.x.size);
|
||||
printf("ECC Detail unique Y\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.ecc.y.buffer, pub->publicArea.unique.ecc.y.size);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* derive does not seem to have specific fields in the parameters struct */
|
||||
printf("Derive unique label\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.derive.label.buffer, pub->publicArea.unique.derive.label.size);
|
||||
printf("Derive unique context\n");
|
||||
TPM2_PrintBin(pub->publicArea.unique.derive.context.buffer, pub->publicArea.unique.derive.context.size);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
|
|
|
@ -955,6 +955,7 @@ int wolfTPM2_CreateKey(WOLFTPM2_DEV* dev, WOLFTPM2_KEYBLOB* keyBlob,
|
|||
printf("TPM2_Create key: pub %d, priv %d\n",
|
||||
createOut.outPublic.size, createOut.outPrivate.size);
|
||||
TPM2_PrintBin(createOut.outPrivate.buffer, createOut.outPrivate.size);
|
||||
TPM2_PrintPublicArea(&createOut.outPublic);
|
||||
#endif
|
||||
|
||||
keyBlob->handle.auth = createIn.inSensitive.sensitive.userAuth;
|
||||
|
|
|
@ -2821,9 +2821,11 @@ WOLFTPM_API UINT16 TPM2_GetVendorID(void);
|
|||
#ifdef DEBUG_WOLFTPM
|
||||
WOLFTPM_API void TPM2_PrintBin(const byte* buffer, word32 length);
|
||||
WOLFTPM_API void TPM2_PrintAuth(const TPMS_AUTH_COMMAND* authCmd);
|
||||
WOLFTPM_API void TPM2_PrintPublicArea(const TPM2B_PUBLIC* pub);
|
||||
#else
|
||||
#define TPM2_PrintBin(b, l)
|
||||
#define TPM2_PrintAuth(b, l)
|
||||
#define TPM2_PrintPublicArea(b)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
Loading…
Reference in New Issue