diff --git a/examples/timestamp/signed_timestamp.c b/examples/timestamp/signed_timestamp.c index 3a0152f..3f36804 100644 --- a/examples/timestamp/signed_timestamp.c +++ b/examples/timestamp/signed_timestamp.c @@ -44,6 +44,13 @@ int TPM2_Timestamp_Test(void* userCtx) WOLFTPM2_DEV dev; TPMS_ATTEST attestedData; + +#ifdef WOLFTPM_WINAPI + int tryNVkey = 0; +#else + int tryNVkey = 1; +#endif + union { /* For managing TPM session */ StartAuthSession_In authSes; @@ -113,31 +120,36 @@ int TPM2_Timestamp_Test(void* userCtx) /* Create RSA Storage Key, also called SRK */ /* See if SRK already exists */ - rc = wolfTPM2_ReadPublicKey(&dev, &storage, TPM2_DEMO_STORAGE_KEY_HANDLE); + if (tryNVkey) { + rc = wolfTPM2_ReadPublicKey(&dev, &storage, TPM2_DEMO_STORAGE_KEY_HANDLE); #ifdef TEST_WRAP_DELETE_KEY - if (rc == 0) { - storage.handle.hndl = TPM2_DEMO_STORAGE_KEY_HANDLE; - rc = wolfTPM2_NVDeleteKey(&dev, TPM_RH_OWNER, &storage); - if (rc != 0) goto exit; - rc = TPM_RC_HANDLE; /* mark handle as missing */ - } + if (rc == 0) { + storage.handle.hndl = TPM2_DEMO_STORAGE_KEY_HANDLE; + rc = wolfTPM2_NVDeleteKey(&dev, TPM_RH_OWNER, &storage); + if (rc != 0) goto exit; + rc = TPM_RC_HANDLE; /* mark handle as missing */ + } #endif - if (rc != 0) { + } + + if (!tryNVkey || (tryNVkey && rc != 0)) { /* Create primary storage key (RSA) */ - rc = wolfTPM2_CreateSRK(&dev, &storage, TPM_ALG_RSA, + rc = wolfTPM2_CreateSRK(&dev, &storage, TPM_ALG_RSA, (byte*)gStorageKeyAuth, sizeof(gStorageKeyAuth)-1); if (rc != 0) goto exit; - /* Move storage key into persistent NV */ - rc = wolfTPM2_NVStoreKey(&dev, TPM_RH_OWNER, &storage, - TPM2_DEMO_STORAGE_KEY_HANDLE); - if (rc != 0) { - wolfTPM2_UnloadHandle(&dev, &storage.handle); - goto exit; + if (tryNVkey) { + /* Move storage key into persistent NV */ + rc = wolfTPM2_NVStoreKey(&dev, TPM_RH_OWNER, &storage, + TPM2_DEMO_STORAGE_KEY_HANDLE); + if (rc != 0) { + wolfTPM2_UnloadHandle(&dev, &storage.handle); + goto exit; + } } printf("Created new RSA Primary Storage Key at 0x%x\n", - TPM2_DEMO_STORAGE_KEY_HANDLE); + storage.handle.hndl); } else { /* specify auth password for storage key */ @@ -282,6 +294,10 @@ exit: } /* Close key handles */ + if (!tryNVkey) { + wolfTPM2_UnloadHandle(&dev, &storage.handle); + } + wolfTPM2_UnloadHandle(&dev, &rsaKey.handle); wolfTPM2_UnloadHandle(&dev, &endorse.handle); diff --git a/src/tpm2_winapi.c b/src/tpm2_winapi.c index 3c56531..53dad0b 100644 --- a/src/tpm2_winapi.c +++ b/src/tpm2_winapi.c @@ -72,14 +72,11 @@ int TPM2_WinApi_SendCommand(TPM2_CTX* ctx, TPM2_Packet* packet) if (ctx->winCtx.tbs_context == NULL) { rc = Tbsi_Context_Create((TBS_CONTEXT_PARAMS*)&tbs_params, &ctx->winCtx.tbs_context); - printf("create rc: %d\n", rc); - } + } /* send the command to the device. Error if the device send fails. */ if (rc == 0) { uint32_t tmp = packet->size; - printf("tx:\n"); - TPM2_PrintBin(packet->buf, packet->pos); rc = Tbsip_Submit_Command(ctx->winCtx.tbs_context, TBS_COMMAND_LOCALITY_ZERO, TBS_COMMAND_PRIORITY_NORMAL, @@ -88,12 +85,6 @@ int TPM2_WinApi_SendCommand(TPM2_CTX* ctx, TPM2_Packet* packet) packet->buf, (UINT32*)&tmp); packet->pos = tmp; - printf("submit rc: %d\n", rc); - } - - if (rc == 0) { - printf("rx:\n"); - TPM2_PrintBin(packet->buf, packet->pos); } return rc; @@ -105,7 +96,6 @@ int TPM2_WinApi_Cleanup(TPM2_CTX* ctx) if (ctx->winCtx.tbs_context != NULL) { rc = Tbsip_Context_Close(ctx->winCtx.tbs_context); ctx->winCtx.tbs_context = NULL; - printf("close rc: %d\n", rc); } return rc;