Skip to content

Commit

Permalink
Merge pull request #256 from dgarske/microchip_bench
Browse files Browse the repository at this point in the history
Microchip macro names and Support for bench with MPLABX Harmony
  • Loading branch information
jpbland1 committed Feb 3, 2023
2 parents ae280a7 + f2a95f3 commit 8181987
Show file tree
Hide file tree
Showing 10 changed files with 29 additions and 17 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -154,7 +154,7 @@ autogen.sh requires: automake and libtool: `sudo apt-get install automake libtoo
--enable-autodetect Enable Runtime Module Detection (default: enable - when no module specified) - WOLFTPM_AUTODETECT
--enable-infineon Enable Infineon SLB9670/SLB9672 TPM Support (default: disabled)
--enable-st Enable ST ST33TPM Support (default: disabled) - WOLFTPM_ST33
--enable-microchip Enable Microchip ATTPM20 Support (default: disabled) - WOLFTPM_MCHP
--enable-microchip Enable Microchip ATTPM20 Support (default: disabled) - WOLFTPM_MICROCHIP
--enable-nuvoton Enable Nuvoton NPCT65x/NPCT75x Support (default: disabled) - WOLFTPM_NUVOTON
--enable-devtpm Enable using Linux kernel driver for /dev/tpmX (default: disabled) - WOLFTPM_LINUX_DEV
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Expand Up @@ -294,7 +294,7 @@ AC_ARG_ENABLE([microchip],
if test "x$ENABLED_MCHP" = "xyes" || test "x$ENABLED_MICROCHIP" = "xyes"
then
ENABLED_MICROCHIP=yes
AM_CFLAGS="$AM_CFLAGS -DWOLFTPM_MCHP"
AM_CFLAGS="$AM_CFLAGS -DWOLFTPM_MICROCHIP"
fi

# Nuvoton NPCT65x/NPCT75x
Expand Down
10 changes: 9 additions & 1 deletion examples/tpm_test.h
Expand Up @@ -82,7 +82,7 @@ static const char pemFileKey[] = "key.pem";
#define TEST_AES_VERIFY kTestAesCbc128Verify
#endif

#ifdef WOLFTPM_MCHP
#ifdef WOLFTPM_MICROCHIP
/* workaround due to issue with older firmware */
#define TEST_WRAP_DIGEST TPM_ALG_SHA1
#else
Expand All @@ -93,10 +93,13 @@ static const char pemFileKey[] = "key.pem";
#ifndef WOLFSSL_USER_CURRTIME
#ifdef _WIN32
#include <time.h>
#elif defined(WOLFTPM_MICROCHIP_HARMONY)
#include "system/time/sys_time.h"
#else
#include <sys/time.h>
#endif
#endif

static inline double gettime_secs(int reset)
{
#ifdef WOLFSSL_USER_CURRTIME
Expand All @@ -106,6 +109,11 @@ static const char pemFileKey[] = "key.pem";
unsigned long long ticks = GetTickCount64();
(void)reset;
return ((double)ticks)/1000.0;
#elif defined(WOLFTPM_MICROCHIP_HARMONY)
if (reset)
SYS_TIME_CounterSet(0);
return (double)(SYS_TIME_Counter64Get()) /
(double)SYS_TIME_FrequencyGet();
#else
struct timeval tv;
gettimeofday(&tv, 0);
Expand Down
2 changes: 1 addition & 1 deletion hal/README.md
Expand Up @@ -23,7 +23,7 @@ If using a HAL IO callback it is registered on library initialization using:
| Barebox | `tpm_io_barebox.c` | `__BAREBOX__` |
| Infineon | `tpm_io_infineon.c` | `WOLFTPM_INFINEON_TRICORE` |
| Linux | `tpm_io_linux.c` | `__linux__` |
| Microchip | `tpm_io_microchip.c` | `WOLFTPM_MICROCHIP` |
| Microchip | `tpm_io_microchip.c` | `WOLFTPM_MICROCHIP_HARMONY` |
| QNX | `tpm_io_qnx.c` | `__QNX__` |
| ST Cube HAL | `tpm_io_st.c` | `WOLFSSL_STM32_CUBEMX` |
| Xilinx | `tpm_io_xilinx.c` | `__XILINX__` |
Expand Down
4 changes: 2 additions & 2 deletions hal/tpm_io.c
Expand Up @@ -60,7 +60,7 @@
#include "hal/tpm_io_xilinx.c"
#elif defined(WOLFTPM_INFINEON_TRICORE)
#include "hal/tpm_io_infineon.c"
#elif defined(WOLFTPM_MICROCHIP)
#elif defined(WOLFTPM_MICROCHIP_HARMONY)
#include "hal/tpm_io_microchip.c"
#endif

Expand All @@ -84,7 +84,7 @@ static int TPM2_IoCb_SPI(TPM2_CTX* ctx, const byte* txBuf, byte* rxBuf,
ret = TPM2_IoCb_Xilinx_SPI(ctx, txBuf, rxBuf, xferSz, userCtx);
#elif defined(WOLFTPM_INFINEON_TRICORE)
ret = TPM2_IoCb_Infineon_TriCore_SPI(ctx, txBuf, rxBuf, xferSz, userCtx);
#elif defined(WOLFTPM_MICROCHIP)
#elif defined(WOLFTPM_MICROCHIP_HARMONY)
ret = TPM2_IoCb_Microchip_SPI(ctx, txBuf, rxBuf, xferSz, userCtx);
#else

Expand Down
4 changes: 2 additions & 2 deletions hal/tpm_io.h
Expand Up @@ -49,7 +49,7 @@
* - Barebox
* - QNX
* - Infineon Tri-Core
* - Microchip MPLAB X Harmony (WOLFTPM_MICROCHIP)
* - Microchip MPLAB X Harmony (WOLFTPM_MICROCHIP_HARMONY)
* Using custom IO Callback is always possible.
*
*/
Expand Down Expand Up @@ -106,7 +106,7 @@ WOLFTPM_LOCAL int TPM2_IoCb_Xilinx_SPI(TPM2_CTX* ctx, const byte* txBuf,
#elif defined(WOLFTPM_INFINEON_TRICORE)
WOLFTPM_LOCAL int TPM2_IoCb_Infineon_TriCore_SPI(TPM2_CTX* ctx, const byte* txBuf,
byte* rxBuf, word16 xferSz, void* userCtx);
#elif defined(WOLFTPM_MICROCHIP)
#elif defined(WOLFTPM_MICROCHIP_HARMONY)
WOLFTPM_LOCAL int TPM2_IoCb_Microchip_SPI(TPM2_CTX* ctx, const byte* txBuf, byte* rxBuf,
word16 xferSz, void* userCtx);
#endif
Expand Down
2 changes: 1 addition & 1 deletion hal/tpm_io_linux.c
Expand Up @@ -68,7 +68,7 @@
#define TPM2_I2C_HZ 400000 /* 400kHz */
#else
/* SPI */
#ifdef WOLFTPM_MCHP
#ifdef WOLFTPM_MICROCHIP
/* Microchip ATTPM20 uses CE0 */
#define TPM2_SPI_DEV_CS "0"
#elif defined(WOLFTPM_ST33)
Expand Down
4 changes: 2 additions & 2 deletions hal/tpm_io_microchip.c
Expand Up @@ -43,7 +43,7 @@
#define TPM2_SPI_HZ TPM2_SPI_MAX_HZ
#endif

#if defined(WOLFTPM_MICROCHIP)
#if defined(WOLFTPM_MICROCHIP_HARMONY)

#ifdef WOLFTPM_CHECK_WAIT_STATE
#error This driver does not support check wait state yet
Expand Down Expand Up @@ -94,7 +94,7 @@ int TPM2_IoCb_Microchip_SPI(TPM2_CTX* ctx, const byte* txBuf, byte* rxBuf,
return ret;
}

#endif /* WOLFTPM_MICROCHIP */
#endif /* WOLFTPM_MICROCHIP_HARMONY */
#endif /* !(WOLFTPM_LINUX_DEV || WOLFTPM_SWTPM || WOLFTPM_WINAPI) */
#endif /* WOLFTPM_INCLUDE_IO_FILE */

Expand Down
8 changes: 4 additions & 4 deletions src/tpm2_wrap.c
Expand Up @@ -51,7 +51,7 @@ static int wolfTPM2_Init_ex(TPM2_CTX* ctx, TPM2HalIoCb ioCb, void* userCtx,

#if !defined(WOLFTPM_LINUX_DEV) && !defined(WOLFTPM_WINAPI)
Startup_In startupIn;
#if defined(WOLFTPM_MCHP) || defined(WOLFTPM_PERFORM_SELFTEST)
#if defined(WOLFTPM_MICROCHIP) || defined(WOLFTPM_PERFORM_SELFTEST)
SelfTest_In selfTest;
#endif
#endif /* ! WOLFTPM_LINUX_DEV */
Expand Down Expand Up @@ -99,7 +99,7 @@ static int wolfTPM2_Init_ex(TPM2_CTX* ctx, TPM2HalIoCb ioCb, void* userCtx,
printf("TPM2_Startup pass\n");
#endif

#if defined(WOLFTPM_MCHP) || defined(WOLFTPM_PERFORM_SELFTEST)
#if defined(WOLFTPM_MICROCHIP) || defined(WOLFTPM_PERFORM_SELFTEST)
/* Do full self-test (Chips such as ATTPM20 require this before some operations) */
XMEMSET(&selfTest, 0, sizeof(selfTest));
selfTest.fullTest = YES;
Expand All @@ -115,7 +115,7 @@ static int wolfTPM2_Init_ex(TPM2_CTX* ctx, TPM2HalIoCb ioCb, void* userCtx,
#endif
#else
rc = TPM_RC_SUCCESS;
#endif /* WOLFTPM_MCHP || WOLFTPM_PERFORM_SELFTEST */
#endif /* WOLFTPM_MICROCHIP || WOLFTPM_PERFORM_SELFTEST */
#endif /* !WOLFTPM_LINUX_DEV && !WOLFTPM_WINAPI */

return rc;
Expand Down Expand Up @@ -4475,7 +4475,7 @@ int wolfTPM2_GetKeyTemplate_Symmetric(TPMT_PUBLIC* publicTemplate, int keyBits,
if (publicTemplate == NULL)
return BAD_FUNC_ARG;

#ifdef WOLFTPM_MCHP
#ifdef WOLFTPM_MICROCHIP
isSign = 0; /* Microchip TPM does not like "sign" set for symmetric keys */
#endif

Expand Down
8 changes: 6 additions & 2 deletions wolftpm/tpm2_types.h
Expand Up @@ -224,7 +224,11 @@ typedef int64_t INT64;
/* TPM HARDWARE TYPE */
/* ---------------------------------------------------------------------------*/
/* Microchip ATTPM20 */
/* #define WOLFTPM_MCHP */
/* #define WOLFTPM_MICROCHIP */
/* #define WOLFTPM_MCHP (old) - for backwards compatibility */
#if defined(WOLFTPM_MCHP) && !defined(WOLFTPM_MICROCHIP)
#define WOLFTPM_MICROCHIP
#endif

/* ST ST33TP TPM 2.0 */
/* #define WOLFTPM_ST33 */
Expand All @@ -238,7 +242,7 @@ typedef int64_t INT64;


/* Chip Specific Settings */
#ifdef WOLFTPM_MCHP
#ifdef WOLFTPM_MICROCHIP
/* Microchip ATTPM20 */
/* Requires SPI wait states */
#ifndef WOLFTPM_CHECK_WAIT_STATE
Expand Down

0 comments on commit 8181987

Please sign in to comment.