Peer review fixes. Cleanups for return code checking, stdlib functions, unknown args and coding standards.

pull/243/head
David Garske 2022-10-04 13:08:47 -07:00
parent fac51233c3
commit 41e5750ff2
26 changed files with 171 additions and 93 deletions

View File

@ -230,9 +230,12 @@ int TPM2_Wrapper_BenchArgs(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -160,6 +160,9 @@ int TPM2_CSR_ExampleArgs(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-cert") == 0) {
makeSelfSignedCert = 1;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -32,7 +32,6 @@
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
/******************************************************************************/
/* --- BEGIN TPM2.0 GPIO Configuration example -- */
@ -98,7 +97,7 @@ int TPM2_GPIO_Config_Example(void* userCtx, int argc, char *argv[])
return 0;
}
if (argc == 3) {
gpioMode = atoi(argv[2]);
gpioMode = XATOI(argv[2]);
if (gpioMode > TPM_GPIO_MODE_MAX) {
printf("GPIO mode is out of range (0-%d)\n", TPM_GPIO_MODE_MAX);
usage();
@ -114,7 +113,7 @@ int TPM2_GPIO_Config_Example(void* userCtx, int argc, char *argv[])
argc--;
}
if (argc == 2) {
gpioNum = atoi(argv[1]);
gpioNum = XATOI(argv[1]);
if (gpioNum < TPM_GPIO_NUM_MIN || gpioNum > TPM_GPIO_NUM_MAX) {
printf("GPIO is out of range (%d-%d)\n", TPM_GPIO_NUM_MIN, TPM_GPIO_NUM_MAX);
usage();

View File

@ -31,9 +31,7 @@
#include <examples/tpm_io.h>
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h>
#if !defined(WOLFTPM2_NO_WRAPPER) && \
(defined(WOLFTPM_ST33) || defined(WOLFTPM_NUVOTON))
@ -66,7 +64,7 @@ int TPM2_GPIO_Read_Example(void* userCtx, int argc, char *argv[])
usage();
return 0;
}
pin = atoi(argv[1]);
pin = XATOI(argv[1]);
if(pin < TPM_GPIO_NUM_MIN || pin > TPM_GPIO_NUM_MAX) {
usage();
return 0;

View File

@ -32,7 +32,6 @@
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h>
#if !defined(WOLFTPM2_NO_WRAPPER) && \
(defined(WOLFTPM_ST33) || defined(WOLFTPM_NUVOTON))
@ -65,7 +64,7 @@ int TPM2_GPIO_Set_Example(void* userCtx, int argc, char *argv[])
usage();
return 0;
}
pin = atoi(argv[1]);
pin = XATOI(argv[1]);
if(pin < TPM_GPIO_NUM_MIN || pin > TPM_GPIO_NUM_MAX) {
usage();
return 0;
@ -75,9 +74,12 @@ int TPM2_GPIO_Set_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-high") == 0) {
pinState = 0x01;
}
if (XSTRCMP(argv[argc-1], "-low") == 0) {
else if (XSTRCMP(argv[argc-1], "-low") == 0) {
pinState = 0x00;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
};
nvIndex = TPM_NV_GPIO_SPACE + (pin-TPM_GPIO_NUM_MIN);

View File

@ -29,7 +29,6 @@
#include <examples/tpm_test_keys.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
#ifndef WOLFTPM2_NO_WRAPPER
@ -94,37 +93,41 @@ int TPM2_CreatePrimaryKey_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-rsa") == 0) {
alg = TPM_ALG_RSA;
}
if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
else if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
alg = TPM_ALG_ECC;
}
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
else if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
if (XSTRCMP(argv[argc-1], "-eh") == 0) {
else if (XSTRCMP(argv[argc-1], "-eh") == 0) {
hierarchy = TPM_RH_ENDORSEMENT;
}
if (XSTRCMP(argv[argc-1], "-ph") == 0) {
else if (XSTRCMP(argv[argc-1], "-ph") == 0) {
hierarchy = TPM_RH_PLATFORM;
}
if (XSTRCMP(argv[argc-1], "-oh") == 0) {
else if (XSTRCMP(argv[argc-1], "-oh") == 0) {
hierarchy = TPM_RH_OWNER;
}
if (XSTRCMP(argv[argc-1], "-unique=") == 0) {
else if (XSTRCMP(argv[argc-1], "-unique=") == 0) {
uniqueStr = argv[argc-1] + 8;
}
if (XSTRCMP(argv[argc-1], "-auth=") == 0) {
else if (XSTRCMP(argv[argc-1], "-auth=") == 0) {
authStr = argv[argc-1] + 6;
}
if (XSTRCMP(argv[argc-1], "-store=") == 0) {
persistHandle = (word32)strtol(argv[argc-1] + 7, NULL, 0);
else if (XSTRCMP(argv[argc-1], "-store=") == 0) {
persistHandle = (word32)XSTRTOL(argv[argc-1] + XSTRLEN("-store="),
NULL, 0);
if (persistHandle < 0x81000000 && persistHandle > 0x810FFFF) {
printf("Invalid storage handle %s\n", argv[argc-1] + 7);
persistHandle = 0;
}
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -29,7 +29,6 @@
#include <examples/tpm_test_keys.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
#ifndef WOLFTPM2_NO_WRAPPER
@ -104,7 +103,7 @@ static int symChoice(const char* arg, TPM_ALG_ID* algSym, int* keyBits,
return TPM_RC_FAILURE;
}
*keyBits = atoi(&arg[SYM_EXTRA_OPTS_KEY_BITS_POS]);
*keyBits = XATOI(&arg[SYM_EXTRA_OPTS_KEY_BITS_POS]);
if (*keyBits != 128 && *keyBits != 192 && *keyBits != 256) {
return TPM_RC_FAILURE;
}
@ -159,10 +158,10 @@ int TPM2_Keygen_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-rsa") == 0) {
alg = TPM_ALG_RSA;
}
if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
else if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
alg = TPM_ALG_ECC;
}
if (XSTRCMP(argv[argc-1], "-sym") == 0) {
else if (XSTRCMP(argv[argc-1], "-sym") == 0) {
len = XSTRLEN(argv[argc-1]);
if (len >= SYM_EXTRA_OPTS_LEN) {
/* Did the user provide specific options? */
@ -179,28 +178,31 @@ int TPM2_Keygen_Example(void* userCtx, int argc, char *argv[])
alg = TPM_ALG_SYMCIPHER;
bAIK = 0;
}
if (XSTRCMP(argv[argc-1], "-keyedhash") == 0) {
else if (XSTRCMP(argv[argc-1], "-keyedhash") == 0) {
alg = TPM_ALG_KEYEDHASH;
bAIK = 0;
}
if (XSTRCMP(argv[argc-1], "-t") == 0) {
else if (XSTRCMP(argv[argc-1], "-t") == 0) {
bAIK = 0;
}
if (XSTRCMP(argv[argc-1], "-eh") == 0) {
else if (XSTRCMP(argv[argc-1], "-eh") == 0) {
endorseKey = 1;
}
if (XSTRCMP(argv[argc-1], "-pem") == 0) {
else if (XSTRCMP(argv[argc-1], "-pem") == 0) {
pemFiles = 1;
}
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
else if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
if (XSTRCMP(argv[argc-1], "-unique=") == 0) {
else if (XSTRCMP(argv[argc-1], "-unique=") == 0) {
uniqueStr = argv[argc-1] + 8;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -71,12 +71,15 @@ int TPM2_Keyimport_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
alg = TPM_ALG_ECC;
}
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
else if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -87,12 +87,15 @@ int TPM2_Keyload_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
if (XSTRCMP(argv[argc-1], "-persistent") == 0) {
else if (XSTRCMP(argv[argc-1], "-persistent") == 0) {
persistent = 1;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -28,7 +28,6 @@
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
#ifndef WOLFTPM2_NO_WRAPPER
/******************************************************************************/

View File

@ -34,7 +34,6 @@
#include <examples/tpm_test_keys.h>
#include <stdio.h>
#include <stdlib.h>
#ifndef WOLFTPM2_NO_WRAPPER
@ -67,30 +66,32 @@ int TPM2_NVRAM_Counter_Example(void* userCtx, int argc, char *argv[])
XMEMSET(&storage, 0, sizeof(storage));
if (argc >= 2) {
if (XSTRNCMP(argv[1], "-?", 2) == 0 ||
XSTRNCMP(argv[1], "-h", 2) == 0 ||
XSTRNCMP(argv[1], "--help", 6) == 0) {
if (XSTRCMP(argv[1], "-?") == 0 ||
XSTRCMP(argv[1], "-h") == 0 ||
XSTRCMP(argv[1], "--help") == 0) {
usage();
return 0;
}
}
while (argc) {
if (XSTRNCMP(argv[argc-1], "-aes", 4) == 0) {
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRNCMP(argv[argc-1], "-xor", 4) == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
if (XSTRNCMP(argv[argc-1], "-nvindex=", 8) == 0) {
nvIndex = (word32)strtol(argv[argc-1] + 8, NULL, 0);
else if (XSTRCMP(argv[argc-1], "-nvindex=") == 0) {
nvIndex = (word32)XSTRTOL(argv[argc-1] + XSTRLEN("-nvindex="),
NULL, 0);
if (nvIndex > TPM_20_OWNER_NV_SPACE &&
nvIndex < TPM_20_OWNER_NV_SPACE + 0x003FFFFF)
{
nvIndex < TPM_20_TCG_NV_SPACE) {
printf("Invalid NV Index %s\n", argv[argc-1] + 8);
nvIndex = 0;
}
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}
@ -122,7 +123,8 @@ int TPM2_NVRAM_Counter_Example(void* userCtx, int argc, char *argv[])
(word32)tpmSession.handle.hndl);
/* Set TPM session attributes for parameter encryption */
rc = wolfTPM2_SetAuthSession(&dev, 1, &tpmSession,
(TPMA_SESSION_decrypt | TPMA_SESSION_encrypt | TPMA_SESSION_continueSession));
(TPMA_SESSION_decrypt | TPMA_SESSION_encrypt |
TPMA_SESSION_continueSession));
if (rc != 0) goto exit;
}

View File

@ -34,7 +34,6 @@
#include <examples/tpm_test_keys.h>
#include <stdio.h>
#include <stdlib.h>
#ifndef WOLFTPM2_NO_WRAPPER
@ -83,15 +82,18 @@ int TPM2_NVRAM_Read_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
if (XSTRCMP(argv[argc-1], "-priv") == 0) {
else if (XSTRCMP(argv[argc-1], "-priv") == 0) {
partialRead = PRIVATE_PART_ONLY;
}
if (XSTRCMP(argv[argc-1], "-pub") == 0) {
else if (XSTRCMP(argv[argc-1], "-pub") == 0) {
partialRead = PUBLIC_PART_ONLY;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -86,15 +86,18 @@ int TPM2_NVRAM_Store_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
if (XSTRCMP(argv[argc-1], "-priv") == 0) {
else if (XSTRCMP(argv[argc-1], "-priv") == 0) {
partialStore = PRIVATE_PART_ONLY;
}
if (XSTRCMP(argv[argc-1], "-pub") == 0) {
else if (XSTRCMP(argv[argc-1], "-pub") == 0) {
partialStore = PUBLIC_PART_ONLY;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
};

View File

@ -34,7 +34,6 @@
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
/******************************************************************************/
@ -96,7 +95,7 @@ int TPM2_Extend_Test(void* userCtx, int argc, char *argv[])
usage();
return 0;
}
pcrIndex = atoi(argv[1]);
pcrIndex = XATOI(argv[1]);
}
if (argc >= 3 && argv[2][0] != '-')

View File

@ -32,7 +32,6 @@
#include <examples/tpm_test_keys.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
/******************************************************************************/
/* --- BEGIN TPM2.0 Quote Test -- */
@ -95,7 +94,7 @@ int TPM2_Quote_Test(void* userCtx, int argc, char *argv[])
usage();
return 0;
}
pcrIndex = atoi(argv[1]);
pcrIndex = XATOI(argv[1]);
}
if (argc >= 3 && argv[2][0] != '-')
outputFile = argv[2];
@ -104,10 +103,10 @@ int TPM2_Quote_Test(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
alg = TPM_ALG_ECC;
}
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
else if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
argc--;

View File

@ -34,7 +34,6 @@
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
/******************************************************************************/
@ -73,7 +72,7 @@ int TPM2_Read_Test(void* userCtx, int argc, char *argv[])
}
if (argv[1][0] != '-') {
pcrIndex = atoi(argv[1]);
pcrIndex = XATOI(argv[1]);
if (pcrIndex < (int)PCR_FIRST || pcrIndex > (int)PCR_LAST) {
printf("PCR index is out of range (0-23)\n");
usage();

View File

@ -30,7 +30,6 @@
#include <examples/tpm_test.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
/******************************************************************************/
@ -61,7 +60,7 @@ int TPM2_Reset_Test(void* userCtx, int argc, char *argv[])
} cmdOut;
if (argc == 2) {
pcrIndex = atoi(argv[1]);
pcrIndex = XATOI(argv[1]);
if (pcrIndex < 0 || pcrIndex > 23 || *argv[1] < '0' || *argv[1] > '9') {
printf("PCR index is out of range (0-23)\n");
usage();

View File

@ -76,9 +76,12 @@ int TPM2_Seal_Example(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -31,7 +31,6 @@
#include <examples/tpm_test_keys.h>
#include <stdio.h>
#include <stdlib.h> /* atoi */
/******************************************************************************/

View File

@ -30,7 +30,6 @@
#include "clock_set.h"
#include <stdio.h>
#include <stdlib.h>
/******************************************************************************/
/* --- BEGIN TPM Clock Set Example -- */
@ -71,7 +70,7 @@ int TPM2_ClockSet_Test(void* userCtx, int argc, char *argv[])
goto exit_badargs;
}
/* Otherwise we have the [time] optional argument */
newClock = atoi(argv[1]);
newClock = XATOI(argv[1]);
}
else if (argc == 1) {
newClock = 0;

View File

@ -89,12 +89,15 @@ int TPM2_Timestamp_TestArgs(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
alg = TPM_ALG_ECC;
}
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
else if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -162,12 +162,15 @@ int TPM2_TLS_ServerArgs(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-ecc") == 0) {
useECC = 1;
}
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
else if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -152,9 +152,12 @@ int TPM2_Wrapper_TestArgs(void* userCtx, int argc, char *argv[])
if (XSTRCMP(argv[argc-1], "-aes") == 0) {
paramEncAlg = TPM_ALG_CFB;
}
if (XSTRCMP(argv[argc-1], "-xor") == 0) {
else if (XSTRCMP(argv[argc-1], "-xor") == 0) {
paramEncAlg = TPM_ALG_XOR;
}
else {
printf("Warning: Unrecognized option: %s\n", argv[argc-1]);
}
argc--;
}

View File

@ -3138,12 +3138,14 @@ int wolfTPM2_NVCreateAuth(WOLFTPM2_DEV* dev, WOLFTPM2_HANDLE* parent,
int rc, rctmp, alreadyExists = 0;
NV_DefineSpace_In in;
if (dev == NULL || nv == NULL)
if (dev == NULL || nv == NULL) {
return BAD_FUNC_ARG;
}
/* set session auth for key */
if (dev->ctx.session) {
wolfTPM2_SetAuthHandle(dev, 0, parent);
rc = wolfTPM2_SetAuthHandle(dev, 0, parent);
if (rc != TPM_RC_SUCCESS) { return rc; }
}
XMEMSET(&in, 0, sizeof(in));
@ -3216,12 +3218,16 @@ int wolfTPM2_NVWriteAuth(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv,
word32 pos = 0, towrite;
NV_Write_In in;
if (dev == NULL || nv == NULL)
if (dev == NULL || nv == NULL) {
return BAD_FUNC_ARG;
}
/* make sure the name is computed for the handle */
if (!nv->handle.nameLoaded) {
wolfTPM2_NVOpen(dev, nv, nvIndex, NULL, 0);
rc = wolfTPM2_NVOpen(dev, nv, nvIndex, NULL, 0);
if (rc != 0) {
return rc;
}
}
/* Necessary, because NVWrite has two handles, second is NV Index */
@ -3288,12 +3294,14 @@ int wolfTPM2_NVReadAuth(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv,
NV_Read_In in;
NV_Read_Out out;
if (dev == NULL || nv == NULL || pDataSz == NULL)
if (dev == NULL || nv == NULL || pDataSz == NULL) {
return BAD_FUNC_ARG;
}
/* make sure the name is computed for the handle */
if (!nv->handle.nameLoaded) {
wolfTPM2_NVOpen(dev, nv, nvIndex, NULL, 0);
rc = wolfTPM2_NVOpen(dev, nv, nvIndex, NULL, 0);
if (rc != TPM_RC_SUCCESS) { return rc; }
}
/* Necessary, because NVRead has two handles, second is NV Index */
@ -3366,8 +3374,9 @@ int wolfTPM2_NVOpen(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv, word32 nvIndex,
int rc = TPM_RC_SUCCESS;
TPMS_NV_PUBLIC nvPublic;
if (dev == NULL || nv == NULL || authSz > sizeof(nv->handle.auth.buffer))
if (dev == NULL || nv == NULL || authSz > sizeof(nv->handle.auth.buffer)) {
return BAD_FUNC_ARG;
}
/* build the "handle" */
nv->handle.hndl = nvIndex;
@ -3383,7 +3392,7 @@ int wolfTPM2_NVOpen(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv, word32 nvIndex,
#ifdef DEBUG_WOLFTPM
printf("Failed to open (read) NV\n");
#endif
return TPM_RC_FAILURE;
return rc;
}
/* Compute NV Index name in case of parameter encryption */
@ -3408,8 +3417,9 @@ int wolfTPM2_NVReadPublic(WOLFTPM2_DEV* dev, word32 nvIndex,
NV_ReadPublic_In in;
NV_ReadPublic_Out out;
if (dev == NULL)
if (dev == NULL) {
return BAD_FUNC_ARG;
}
XMEMSET(&in, 0, sizeof(in));
in.nvIndex = nvIndex;
@ -3446,12 +3456,14 @@ int wolfTPM2_NVIncrement(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv)
int rc = TPM_RC_SUCCESS;
NV_Increment_In in;
if (dev == NULL || nv == NULL)
if (dev == NULL || nv == NULL) {
return BAD_FUNC_ARG;
}
/* make sure the name is computed for the handle */
if (!nv->handle.nameLoaded) {
wolfTPM2_NVOpen(dev, nv, nv->handle.hndl, NULL, 0);
rc = wolfTPM2_NVOpen(dev, nv, nv->handle.hndl, NULL, 0);
if (rc != TPM_RC_SUCCESS) { return rc; }
}
/* make sure auth not set */
@ -3462,7 +3474,7 @@ int wolfTPM2_NVIncrement(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv)
#ifdef DEBUG_WOLFTPM
printf("Setting NV index name failed\n");
#endif
return TPM_RC_FAILURE;
return rc;
}
XMEMSET(&in, 0, sizeof(in));
@ -3492,16 +3504,18 @@ int wolfTPM2_NVDeleteAuth(WOLFTPM2_DEV* dev, WOLFTPM2_HANDLE* parent,
int rc;
NV_UndefineSpace_In in;
if (dev == NULL || parent == NULL)
if (dev == NULL || parent == NULL) {
return BAD_FUNC_ARG;
}
/* set session auth for key */
if (dev->ctx.session) {
wolfTPM2_SetAuthHandle(dev, 0, parent);
rc = wolfTPM2_SetAuthHandle(dev, 0, parent);
if (rc != TPM_RC_SUCCESS) { return rc; }
/* Make sure no other auth sessions exist */
wolfTPM2_UnsetAuth(dev, 1);
wolfTPM2_UnsetAuth(dev, 2);
(void)wolfTPM2_UnsetAuth(dev, 1);
(void)wolfTPM2_UnsetAuth(dev, 2);
}
XMEMSET(&in, 0, sizeof(in));

View File

@ -191,6 +191,12 @@ typedef int64_t INT64;
#endif /* !WOLFTPM2_NO_WOLFCRYPT */
#ifndef WOLFTPM_CUSTOM_TYPES
#include <stdlib.h>
#define XSTRTOL(s,e,b) strtol((s),(e),(b))
#define XATOI(s) atoi((s))
#endif
/* enable way for customer to override printf */
#ifdef XPRINTF
#undef printf

View File

@ -35,7 +35,7 @@ typedef struct WOLFTPM2_HANDLE {
TPMT_SYM_DEF symmetric;
TPM2B_NAME name;
int policyAuth; /* Handle requires Policy, not password Auth */
int nameLoaded; /* flag to indicate if "name" was loaded and computed */
unsigned int nameLoaded : 1; /* flag to indicate if "name" was loaded and computed */
} WOLFTPM2_HANDLE;
#define TPM_SES_PWD 0xFF /* Session type for Password that fits in one byte */
@ -1510,6 +1510,7 @@ WOLFTPM_API int wolfTPM2_ExtendPCR(WOLFTPM2_DEV* dev, int pcrIndex, int hashAlg,
\sa wolfTPM2_NVWriteAuth
\sa wolfTPM2_NVReadAuth
\sa wolfTPM2_NVDeleteAuth
\sa wolfTPM2_NVOpen
*/
WOLFTPM_API int wolfTPM2_NVCreateAuth(WOLFTPM2_DEV* dev, WOLFTPM2_HANDLE* parent,
WOLFTPM2_NV* nv, word32 nvIndex, word32 nvAttributes, word32 maxSize,
@ -1561,13 +1562,42 @@ WOLFTPM_API int wolfTPM2_NVWriteAuth(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv,
WOLFTPM_API int wolfTPM2_NVReadAuth(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv,
word32 nvIndex, byte* dataBuf, word32* pDataSz, word32 offset);
/*!
\ingroup wolfTPM2_Wrappers
\brief Increments an NV one-way counter
\return TPM_RC_SUCCESS: successful
\return TPM_RC_FAILURE: generic failure (check TPM IO and TPM return code)
\return BAD_FUNC_ARG: check the provided arguments
\param dev pointer to a TPM2_DEV struct
\param nv pointer to a populated structure of WOLFTPM2_NV type
\sa wolfTPM2_NVOpen
\sa wolfTPM2_NVCreateAuth
*/
WOLFTPM_API int wolfTPM2_NVIncrement(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv);
/*!
\ingroup wolfTPM2_Wrappers
\brief Open an NV and populate the required authentication and name hash.
\return TPM_RC_SUCCESS: successful
\return TPM_RC_FAILURE: generic failure (check TPM IO and TPM return code)
\return BAD_FUNC_ARG: check the provided arguments
\param dev pointer to a TPM2_DEV struct
\param nv pointer to an empty structure of WOLFTPM2_NV type, to hold the new NV Index
\param nvIndex integer value, holding the NV Index Handle given by the TPM upon success
\param auth pointer to a string constant, specifying the password authorization for this NV Index
\param authSz integer value, specifying the size of the password authorization, in bytes
\sa wolfTPM2_NVCreateAuth
\sa wolfTPM2_UnloadHandle
*/
WOLFTPM_API int wolfTPM2_NVOpen(WOLFTPM2_DEV* dev, WOLFTPM2_NV* nv,
word32 nvIndex, const byte* auth, word32 authSz);
/*!
\ingroup wolfTPM2_Wrappers
\brief Destroys an existing NV Index