Added Linux SPI stdio support for running on Rasberry Pi. Cleanups for wolfTPM.

pull/2/head
David Garske 2018-02-08 12:21:39 -08:00
parent 9036e7bdec
commit 156fc9b521
11 changed files with 243 additions and 166 deletions

4
.gitignore vendored
View File

@ -22,3 +22,7 @@ test-suite.log
src/.deps
src/.libs
RemoteSystemsTempFiles
examples/tpm/.deps
*.o
examples/tpm/tpm2_demo
examples/tpm/.libs

View File

@ -32,7 +32,7 @@ extern SPI_HandleTypeDef hspi1;
#ifdef WOLF_TPM2
extern int TPM2_Demo(void);
#include <examples/tpm/tpm2_demo.h>
#endif

View File

@ -78,7 +78,7 @@ maintainer-clean-local:
# !!!! first line of rule has to start with a hard (real) tab, not spaces
egs:
$(MAKE) examples/mqttclient/mqttclient;
$(MAKE) examples/tpm/tpm2_demo;
install-exec-local: install-generic-config

View File

@ -5,12 +5,23 @@ This example demonstrates calling the various TPM 2.0 API's.
## Building
`./configure && make`
1. Build wolfSSL:
```
./autogen.sh
./configure --enable-ecc --enable-sha512 && make && sudo make install
```
2. Build wolfTPM:
```
./configure && make
```
## Platform
This example was written for the STM32 with the CubeMX HAL. To add additional SPI hardware support insert your own interface call in `tpm2_demo.c` for the `TPM2_IoCb` function.
This example was written for use on Raspberry Pi or the STM32 with the CubeMX HAL. To add additional SPI hardware support insert your own interface call in `tpm2_demo.c` for the `TPM2_IoCb` function.
## Sample Output

View File

@ -1,5 +1,5 @@
# wolftpm
# Copyright (C) 2016 wolfSSL Inc.
# Copyright (C) 2018 wolfSSL Inc.
# All right reserved.
AC_INIT([wolftpm],[0.1.0],[https://github.com/wolfssl/wolfTPM/issues],[wolftpm],[http://www.wolfssl.com])
@ -18,7 +18,7 @@ AC_ARG_PROGRAM
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([src/config.h])
WOLFMQTT_LIBRARY_VERSION=1:0:0
WOLFTPM_LIBRARY_VERSION=1:0:0
# | | |
# +------+ | +---+
# | | |
@ -30,7 +30,7 @@ WOLFMQTT_LIBRARY_VERSION=1:0:0
# | +- increment if source code has changed
# | set to zero if current is incremented
# +- increment if interfaces have been added, removed or changed
AC_SUBST([WOLFMQTT_LIBRARY_VERSION])
AC_SUBST([WOLFTPM_LIBRARY_VERSION])
LT_PREREQ([2.2])
LT_INIT([disable-static], [win32-dll])
@ -67,7 +67,7 @@ AC_CHECK_LIB(network,socket)
# DEBUG
DEBUG_CFLAGS="-g -O0"
DEBUG_CPPFLAGS="-DDEBUG -DDEBUG_WOLFMQTT"
DEBUG_CPPFLAGS="-DDEBUG -DDEBUG_WOLFTPM"
AX_DEBUG
AS_IF([test "x$ax_enable_debug" = "xyes"],

View File

@ -1,4 +1,13 @@
# vim:ft=automake
# All paths should be given relative to the root
EXTRA_DIST+= examples/tpm/tpm2_demo.c
if BUILD_EXAMPLES
noinst_PROGRAMS += examples/tpm/tpm2_demo
noinst_HEADERS += examples/tpm/tpm2_demo.h
examples_tpm_tpm2_demo_SOURCES = examples/tpm/tpm2_demo.c
examples_tpm_tpm2_demo_LDADD = src/libwolftpm.la $(LIB_STATIC_ADD)
examples_tpm_tpm2_demo_DEPENDENCIES = src/libwolftpm.la
endif
dist_example_DATA+= examples/tpm/tpm2_demo.c
DISTCLEANFILES+= examples/tpm/.libs/tpm_demo

View File

@ -1,6 +1,6 @@
/* tpm2_demo.c
*
* Copyright (C) 2006-2017 wolfSSL Inc.
* Copyright (C) 2006-2018 wolfSSL Inc.
*
* This file is part of wolfSSL. (formerly known as CyaSSL)
*
@ -30,21 +30,30 @@
#include <wolfssl/wolfcrypt/logging.h>
#include <wolftpm/tpm2.h>
#include <examples/tpm/tpm2_demo.h>
/* Local variables */
static TPM2_CTX gTpm2Ctx;
/* Configuration for the SPI interface */
#ifdef WOLFSSL_STM32_CUBEMX
extern SPI_HandleTypeDef hspi1;
#define TPM2_USER_CTX &hspi1
#else
#define TPM2_USER_CTX NULL
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define TPM2_USER_CTX (void*)"/dev/spidev0.0"
#endif
/* IO Callback */
static TPM_RC TPM2_IoCb(TPM2_CTX* ctx, const byte* txBuf, byte* rxBuf,
word16 xferSz, void* userCtx)
{
int ret = TPM_RC_FAILURE;
#ifdef WOLFSSL_STM32_CUBEMX
/* STM32 CubeMX Hal */
SPI_HandleTypeDef* hspi = (SPI_HandleTypeDef*)userCtx;
HAL_StatusTypeDef status;
@ -52,18 +61,26 @@ static TPM_RC TPM2_IoCb(TPM2_CTX* ctx, const byte* txBuf, byte* rxBuf,
status = HAL_SPI_TransmitReceive(hspi, (byte*)txBuf, rxBuf, xferSz, 5000);
__HAL_SPI_DISABLE(hspi);
if (status == HAL_OK)
return TPM_RC_SUCCESS;
ret = TPM_RC_SUCCESS;
#else
/* TODO: Add your platform here for HW interface */
(void)ctx;
(void)txBuf;
(void)rxBuf;
(void)xferSz;
(void)userCtx;
/* Use Linux Style SPI access */
const char* devPath = (const char*)userCtx;
size_t size;
int devFile = open(devPath, O_RDWR);
if (devFile >= 0) {
size = write(devFile, txBuf, xferSz);
if (size == xferSz) {
size = read(devFile, rxBuf, xferSz);
ret = TPM_RC_SUCCESS;
}
close(devFile);
}
#endif
return TPM_RC_FAILURE;
(void)ctx;
return ret;
}
#define RAND_GET_SZ 32
@ -104,7 +121,6 @@ int TPM2_Demo(void)
} cmdOut;
int pcrCount, pcrIndex, i;
TPML_TAGGED_TPM_PROPERTY* tpmProp;
TPM_HANDLE ek;
#ifdef DEBUG_WOLFSSL
wolfSSL_Debugging_ON();
@ -263,3 +279,10 @@ int TPM2_Demo(void)
return rc;
}
#ifndef NO_MAIN_DRIVER
int main(void)
{
return TPM2_Demo();
}
#endif

View File

@ -0,0 +1,29 @@
/* tpm2_demo.h
*
* Copyright (C) 2006-2018 wolfSSL Inc.
*
* This file is part of wolfSSL. (formerly known as CyaSSL)
*
* wolfTPM is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* wolfTPM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef _TPM2_DEMO_H_
#define _TPM2_DEMO_H_
int TPM2_Demo(void);
#endif /* _TPM2_DEMO_H_ */

View File

@ -7,6 +7,6 @@ lib_LTLIBRARIES+= src/libwolftpm.la
src_libwolftpm_la_SOURCES = src/tpm2.c
src_libwolftpm_la_CFLAGS = -DBUILDING_WOLFTPM $(AM_CFLAGS)
src_libwolftpm_la_CPPFLAGS = -DBUILDING_WOLFTPM $(AM_CPPFLAGS)
src_libwolftpm_la_LDFLAGS = ${AM_LDFLAGS} -no-undefined -version-info ${WOLFMQTT_LIBRARY_VERSION}
src_libwolftpm_la_LDFLAGS = ${AM_LDFLAGS} -no-undefined -version-info ${WOLFTPM_LIBRARY_VERSION}
src_libwolftpm_la_DEPENDENCIES =
EXTRA_DIST +=

View File

@ -22,6 +22,7 @@
#ifndef __TPM2_H__
#define __TPM2_H__
#include <wolftpm/visibility.h>
#include <wolfssl/wolfcrypt/types.h>
#include <wolfssl/wolfcrypt/hash.h>
#include <wolfssl/wolfcrypt/rsa.h>
@ -1833,17 +1834,17 @@ typedef struct TPM2_CTX {
/* Functions */
#define _TPM_Init TPM2_Init
WOLFSSL_API TPM_RC TPM2_Init(TPM2_CTX* ctx, TPM2HalIoCb ioCb, void* userCtx);
WOLFTPM_API TPM_RC TPM2_Init(TPM2_CTX* ctx, TPM2HalIoCb ioCb, void* userCtx);
typedef struct {
TPM_SU startupType;
} Startup_In;
WOLFSSL_API TPM_RC TPM2_Startup(Startup_In* in);
WOLFTPM_API TPM_RC TPM2_Startup(Startup_In* in);
typedef struct {
TPM_SU shutdownType;
} Shutdown_In;
WOLFSSL_API TPM_RC TPM2_Shutdown(Shutdown_In* in);
WOLFTPM_API TPM_RC TPM2_Shutdown(Shutdown_In* in);
typedef struct {
@ -1855,14 +1856,14 @@ typedef struct {
TPMI_YES_NO moreData;
TPMS_CAPABILITY_DATA capabilityData;
} GetCapability_Out;
WOLFSSL_API TPM_RC TPM2_GetCapability(GetCapability_In* in,
WOLFTPM_API TPM_RC TPM2_GetCapability(GetCapability_In* in,
GetCapability_Out* out);
typedef struct {
TPMI_YES_NO fullTest;
} SelfTest_In;
WOLFSSL_API TPM_RC TPM2_SelfTest(SelfTest_In* in);
WOLFTPM_API TPM_RC TPM2_SelfTest(SelfTest_In* in);
typedef struct {
TPML_ALG toTest;
@ -1870,14 +1871,14 @@ typedef struct {
typedef struct {
TPML_ALG toDoList;
} IncrementalSelfTest_Out;
WOLFSSL_API TPM_RC TPM2_IncrementalSelfTest(IncrementalSelfTest_In* in,
WOLFTPM_API TPM_RC TPM2_IncrementalSelfTest(IncrementalSelfTest_In* in,
IncrementalSelfTest_Out* out);
typedef struct {
TPM2B_MAX_BUFFER outData;
TPM_RC testResult;
} GetTestResult_Out;
WOLFSSL_API TPM_RC TPM2_GetTestResult(GetTestResult_Out* out);
WOLFTPM_API TPM_RC TPM2_GetTestResult(GetTestResult_Out* out);
typedef struct {
@ -1886,12 +1887,12 @@ typedef struct {
typedef struct {
TPM2B_DIGEST randomBytes;
} GetRandom_Out;
WOLFSSL_API TPM_RC TPM2_GetRandom(GetRandom_In* in, GetRandom_Out* out);
WOLFTPM_API TPM_RC TPM2_GetRandom(GetRandom_In* in, GetRandom_Out* out);
typedef struct {
TPM2B_SENSITIVE_DATA inData;
} StirRandom_In;
WOLFSSL_API TPM_RC TPM2_StirRandom(StirRandom_In* in);
WOLFTPM_API TPM_RC TPM2_StirRandom(StirRandom_In* in);
typedef struct {
TPML_PCR_SELECTION pcrSelectionIn;
@ -1901,7 +1902,7 @@ typedef struct {
TPML_PCR_SELECTION pcrSelectionOut;
TPML_DIGEST pcrValues;
} PCR_Read_Out;
WOLFSSL_API TPM_RC TPM2_PCR_Read(PCR_Read_In* in, PCR_Read_Out* out);
WOLFTPM_API TPM_RC TPM2_PCR_Read(PCR_Read_In* in, PCR_Read_Out* out);
typedef struct {
@ -1909,7 +1910,7 @@ typedef struct {
TPMS_AUTH_COMMAND auth;
TPML_DIGEST_VALUES digests;
} PCR_Extend_In;
WOLFSSL_API TPM_RC TPM2_PCR_Extend(PCR_Extend_In* in);
WOLFTPM_API TPM_RC TPM2_PCR_Extend(PCR_Extend_In* in);
typedef struct {
@ -1927,7 +1928,7 @@ typedef struct {
TPM2B_DIGEST creationHash;
TPMT_TK_CREATION creationTicket;
} Create_Out;
WOLFSSL_API TPM_RC TPM2_Create(Create_In* in, Create_Out* out);
WOLFTPM_API TPM_RC TPM2_Create(Create_In* in, Create_Out* out);
typedef struct {
TPMI_DH_OBJECT parentHandle;
@ -1941,7 +1942,7 @@ typedef struct {
TPM2B_PUBLIC outPublic;
TPM2B_NAME name;
} CreateLoaded_Out;
WOLFSSL_API TPM_RC TPM2_CreateLoaded(CreateLoaded_In* in,
WOLFTPM_API TPM_RC TPM2_CreateLoaded(CreateLoaded_In* in,
CreateLoaded_Out* out);
@ -1960,7 +1961,7 @@ typedef struct {
TPMT_TK_CREATION creationTicket;
TPM2B_NAME name;
} CreatePrimary_Out;
WOLFSSL_API TPM_RC TPM2_CreatePrimary(CreatePrimary_In* in,
WOLFTPM_API TPM_RC TPM2_CreatePrimary(CreatePrimary_In* in,
CreatePrimary_Out* out);
typedef struct {
@ -1973,13 +1974,13 @@ typedef struct {
TPM_HANDLE objectHandle;
TPM2B_NAME name;
} Load_Out;
WOLFSSL_API TPM_RC TPM2_Load(Load_In* in, Load_Out* out);
WOLFTPM_API TPM_RC TPM2_Load(Load_In* in, Load_Out* out);
typedef struct {
TPMI_DH_CONTEXT flushHandle;
} FlushContext_In;
WOLFSSL_API TPM_RC TPM2_FlushContext(FlushContext_In* in);
WOLFTPM_API TPM_RC TPM2_FlushContext(FlushContext_In* in);
typedef struct {
@ -1989,7 +1990,7 @@ typedef struct {
typedef struct {
TPM2B_SENSITIVE_DATA outData;
} Unseal_Out;
WOLFSSL_API TPM_RC TPM2_Unseal(Unseal_In* in, Unseal_Out* out);
WOLFTPM_API TPM_RC TPM2_Unseal(Unseal_In* in, Unseal_Out* out);
typedef struct {
@ -2005,13 +2006,13 @@ typedef struct {
TPMI_SH_AUTH_SESSION sessionHandle;
TPM2B_NONCE nonceTPM;
} StartAuthSession_Out;
WOLFSSL_API TPM_RC TPM2_StartAuthSession(StartAuthSession_In* in,
WOLFTPM_API TPM_RC TPM2_StartAuthSession(StartAuthSession_In* in,
StartAuthSession_Out* out);
typedef struct {
TPMI_SH_POLICY sessionHandle;
} PolicyRestart_In;
WOLFSSL_API TPM_RC TPM2_PolicyRestart(PolicyRestart_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyRestart(PolicyRestart_In* in);
typedef struct {
@ -2023,7 +2024,7 @@ typedef struct {
TPM_HANDLE objectHandle;
TPM2B_NAME name;
} LoadExternal_Out;
WOLFSSL_API TPM_RC TPM2_LoadExternal(LoadExternal_In* in,
WOLFTPM_API TPM_RC TPM2_LoadExternal(LoadExternal_In* in,
LoadExternal_Out* out);
typedef struct {
@ -2034,7 +2035,7 @@ typedef struct {
TPM2B_NAME name;
TPM2B_NAME qualifiedName;
} ReadPublic_Out;
WOLFSSL_API TPM_RC TPM2_ReadPublic(ReadPublic_In* in, ReadPublic_Out* out);
WOLFTPM_API TPM_RC TPM2_ReadPublic(ReadPublic_In* in, ReadPublic_Out* out);
typedef struct {
TPMI_DH_OBJECT activateHandle;
@ -2045,7 +2046,7 @@ typedef struct {
typedef struct {
TPM2B_DIGEST certInfo;
} ActivateCredential_Out;
WOLFSSL_API TPM_RC TPM2_ActivateCredential(ActivateCredential_In* in,
WOLFTPM_API TPM_RC TPM2_ActivateCredential(ActivateCredential_In* in,
ActivateCredential_Out* out);
typedef struct {
@ -2057,7 +2058,7 @@ typedef struct {
TPM2B_ID_OBJECT credentialBlob;
TPM2B_ENCRYPTED_SECRET secret;
} MakeCredential_Out;
WOLFSSL_API TPM_RC TPM2_MakeCredential(MakeCredential_In* in,
WOLFTPM_API TPM_RC TPM2_MakeCredential(MakeCredential_In* in,
MakeCredential_Out* out);
typedef struct {
@ -2068,7 +2069,7 @@ typedef struct {
typedef struct {
TPM2B_PRIVATE outPrivate;
} ObjectChangeAuth_Out;
WOLFSSL_API TPM_RC TPM2_ObjectChangeAuth(ObjectChangeAuth_In* in,
WOLFTPM_API TPM_RC TPM2_ObjectChangeAuth(ObjectChangeAuth_In* in,
ObjectChangeAuth_Out* out);
@ -2083,7 +2084,7 @@ typedef struct {
TPM2B_PRIVATE duplicate;
TPM2B_ENCRYPTED_SECRET outSymSeed;
} Duplicate_Out;
WOLFSSL_API TPM_RC TPM2_Duplicate(Duplicate_In* in, Duplicate_Out* out);
WOLFTPM_API TPM_RC TPM2_Duplicate(Duplicate_In* in, Duplicate_Out* out);
typedef struct {
TPMI_DH_OBJECT oldParent;
@ -2096,7 +2097,7 @@ typedef struct {
TPM2B_PRIVATE outDuplicate;
TPM2B_ENCRYPTED_SECRET outSymSeed;
} Rewrap_Out;
WOLFSSL_API TPM_RC TPM2_Rewrap(Rewrap_In* in, Rewrap_Out* out);
WOLFTPM_API TPM_RC TPM2_Rewrap(Rewrap_In* in, Rewrap_Out* out);
typedef struct {
TPMI_DH_OBJECT parentHandle;
@ -2109,7 +2110,7 @@ typedef struct {
typedef struct {
TPM2B_PRIVATE outPrivate;
} Import_Out;
WOLFSSL_API TPM_RC TPM2_Import(Import_In* in, Import_Out* out);
WOLFTPM_API TPM_RC TPM2_Import(Import_In* in, Import_Out* out);
typedef struct {
TPMI_DH_OBJECT keyHandle;
@ -2120,7 +2121,7 @@ typedef struct {
typedef struct {
TPM2B_PUBLIC_KEY_RSA outData;
} RSA_Encrypt_Out;
WOLFSSL_API TPM_RC TPM2_RSA_Encrypt(RSA_Encrypt_In* in, RSA_Encrypt_Out* out);
WOLFTPM_API TPM_RC TPM2_RSA_Encrypt(RSA_Encrypt_In* in, RSA_Encrypt_Out* out);
typedef struct {
@ -2132,7 +2133,7 @@ typedef struct {
typedef struct {
TPM2B_PUBLIC_KEY_RSA message;
} RSA_Decrypt_Out;
WOLFSSL_API TPM_RC TPM2_RSA_Decrypt(RSA_Decrypt_In* in, RSA_Decrypt_Out* out);
WOLFTPM_API TPM_RC TPM2_RSA_Decrypt(RSA_Decrypt_In* in, RSA_Decrypt_Out* out);
typedef struct {
@ -2142,7 +2143,7 @@ typedef struct {
TPM2B_ECC_POINT zPoint;
TPM2B_ECC_POINT pubPoint;
} ECDH_KeyGen_Out;
WOLFSSL_API TPM_RC TPM2_ECDH_KeyGen(ECDH_KeyGen_In* in, ECDH_KeyGen_Out* out);
WOLFTPM_API TPM_RC TPM2_ECDH_KeyGen(ECDH_KeyGen_In* in, ECDH_KeyGen_Out* out);
typedef struct {
@ -2152,7 +2153,7 @@ typedef struct {
typedef struct {
TPM2B_ECC_POINT outPoint;
} ECDH_ZGen_Out;
WOLFSSL_API TPM_RC TPM2_ECDH_ZGen(ECDH_ZGen_In* in, ECDH_ZGen_Out* out);
WOLFTPM_API TPM_RC TPM2_ECDH_ZGen(ECDH_ZGen_In* in, ECDH_ZGen_Out* out);
typedef struct {
TPMI_ECC_CURVE curveID;
@ -2160,7 +2161,7 @@ typedef struct {
typedef struct {
TPMS_ALGORITHM_DETAIL_ECC parameters;
} ECC_Parameters_Out;
WOLFSSL_API TPM_RC TPM2_ECC_Parameters(ECC_Parameters_In* in,
WOLFTPM_API TPM_RC TPM2_ECC_Parameters(ECC_Parameters_In* in,
ECC_Parameters_Out* out);
typedef struct {
@ -2174,7 +2175,7 @@ typedef struct {
TPM2B_ECC_POINT outZ1;
TPM2B_ECC_POINT outZ2;
} ZGen_2Phase_Out;
WOLFSSL_API TPM_RC TPM2_ZGen_2Phase(ZGen_2Phase_In* in, ZGen_2Phase_Out* out);
WOLFTPM_API TPM_RC TPM2_ZGen_2Phase(ZGen_2Phase_In* in, ZGen_2Phase_Out* out);
typedef struct {
@ -2188,7 +2189,7 @@ typedef struct {
TPM2B_MAX_BUFFER outData;
TPM2B_IV ivOut;
} EncryptDecrypt_Out;
WOLFSSL_API TPM_RC TPM2_EncryptDecrypt(EncryptDecrypt_In* in,
WOLFTPM_API TPM_RC TPM2_EncryptDecrypt(EncryptDecrypt_In* in,
EncryptDecrypt_Out* out);
typedef struct {
@ -2202,7 +2203,7 @@ typedef struct {
TPM2B_MAX_BUFFER outData;
TPM2B_IV ivOut;
} EncryptDecrypt2_Out;
WOLFSSL_API TPM_RC TPM2_EncryptDecrypt2(EncryptDecrypt2_In* in,
WOLFTPM_API TPM_RC TPM2_EncryptDecrypt2(EncryptDecrypt2_In* in,
EncryptDecrypt2_Out* out);
@ -2215,7 +2216,7 @@ typedef struct {
TPM2B_DIGEST outHash;
TPMT_TK_HASHCHECK validation;
} Hash_Out;
WOLFSSL_API TPM_RC TPM2_Hash(Hash_In* in, Hash_Out* out);
WOLFTPM_API TPM_RC TPM2_Hash(Hash_In* in, Hash_Out* out);
typedef struct {
TPMI_DH_OBJECT handle;
@ -2225,7 +2226,7 @@ typedef struct {
typedef struct {
TPM2B_DIGEST outHMAC;
} HMAC_Out;
WOLFSSL_API TPM_RC TPM2_HMAC(HMAC_In* in, HMAC_Out* out);
WOLFTPM_API TPM_RC TPM2_HMAC(HMAC_In* in, HMAC_Out* out);
typedef struct {
@ -2236,7 +2237,7 @@ typedef struct {
typedef struct {
TPMI_DH_OBJECT sequenceHandle;
} HMAC_Start_Out;
WOLFSSL_API TPM_RC TPM2_HMAC_Start(HMAC_Start_In* in, HMAC_Start_Out* out);
WOLFTPM_API TPM_RC TPM2_HMAC_Start(HMAC_Start_In* in, HMAC_Start_Out* out);
typedef struct {
@ -2246,14 +2247,14 @@ typedef struct {
typedef struct {
TPMI_DH_OBJECT sequenceHandle;
} HashSequenceStart_Out;
WOLFSSL_API TPM_RC TPM2_HashSequenceStart(HashSequenceStart_In* in,
WOLFTPM_API TPM_RC TPM2_HashSequenceStart(HashSequenceStart_In* in,
HashSequenceStart_Out* out);
typedef struct {
TPMI_DH_OBJECT sequenceHandle;
TPM2B_MAX_BUFFER buffer;
} SequenceUpdate_In;
WOLFSSL_API TPM_RC TPM2_SequenceUpdate(SequenceUpdate_In* in);
WOLFTPM_API TPM_RC TPM2_SequenceUpdate(SequenceUpdate_In* in);
typedef struct {
TPMI_DH_OBJECT sequenceHandle;
@ -2264,7 +2265,7 @@ typedef struct {
TPM2B_DIGEST result;
TPMT_TK_HASHCHECK validation;
} SequenceComplete_Out;
WOLFSSL_API TPM_RC TPM2_SequenceComplete(SequenceComplete_In* in,
WOLFTPM_API TPM_RC TPM2_SequenceComplete(SequenceComplete_In* in,
SequenceComplete_Out* out);
@ -2276,7 +2277,7 @@ typedef struct {
typedef struct {
TPML_DIGEST_VALUES results;
} EventSequenceComplete_Out;
WOLFSSL_API TPM_RC TPM2_EventSequenceComplete(EventSequenceComplete_In* in,
WOLFTPM_API TPM_RC TPM2_EventSequenceComplete(EventSequenceComplete_In* in,
EventSequenceComplete_Out* out);
@ -2290,7 +2291,7 @@ typedef struct {
TPM2B_ATTEST certifyInfo;
TPMT_SIGNATURE signature;
} Certify_Out;
WOLFSSL_API TPM_RC TPM2_Certify(Certify_In* in, Certify_Out* out);
WOLFTPM_API TPM_RC TPM2_Certify(Certify_In* in, Certify_Out* out);
typedef struct {
@ -2305,7 +2306,7 @@ typedef struct {
TPM2B_ATTEST certifyInfo;
TPMT_SIGNATURE signature;
} CertifyCreation_Out;
WOLFSSL_API TPM_RC TPM2_CertifyCreation(CertifyCreation_In* in, CertifyCreation_Out* out);
WOLFTPM_API TPM_RC TPM2_CertifyCreation(CertifyCreation_In* in, CertifyCreation_Out* out);
typedef struct {
@ -2318,7 +2319,7 @@ typedef struct {
TPM2B_ATTEST quoted;
TPMT_SIGNATURE signature;
} Quote_Out;
WOLFSSL_API TPM_RC TPM2_Quote(Quote_In* in, Quote_Out* out);
WOLFTPM_API TPM_RC TPM2_Quote(Quote_In* in, Quote_Out* out);
typedef struct {
TPMI_RH_ENDORSEMENT privacyAdminHandle;
@ -2331,7 +2332,7 @@ typedef struct {
TPM2B_ATTEST auditInfo;
TPMT_SIGNATURE signature;
} GetSessionAuditDigest_Out;
WOLFSSL_API TPM_RC TPM2_GetSessionAuditDigest(GetSessionAuditDigest_In* in,
WOLFTPM_API TPM_RC TPM2_GetSessionAuditDigest(GetSessionAuditDigest_In* in,
GetSessionAuditDigest_Out* out);
typedef struct {
@ -2344,7 +2345,7 @@ typedef struct {
TPM2B_ATTEST auditInfo;
TPMT_SIGNATURE signature;
} GetCommandAuditDigest_Out;
WOLFSSL_API TPM_RC TPM2_GetCommandAuditDigest(GetCommandAuditDigest_In* in,
WOLFTPM_API TPM_RC TPM2_GetCommandAuditDigest(GetCommandAuditDigest_In* in,
GetCommandAuditDigest_Out* out);
typedef struct {
@ -2357,7 +2358,7 @@ typedef struct {
TPM2B_ATTEST timeInfo;
TPMT_SIGNATURE signature;
} GetTime_Out;
WOLFSSL_API TPM_RC TPM2_GetTime(GetTime_In* in, GetTime_Out* out);
WOLFTPM_API TPM_RC TPM2_GetTime(GetTime_In* in, GetTime_Out* out);
typedef struct {
TPMI_DH_OBJECT signHandle;
@ -2371,7 +2372,7 @@ typedef struct {
TPM2B_ECC_POINT E;
UINT16 counter;
} Commit_Out;
WOLFSSL_API TPM_RC TPM2_Commit(Commit_In* in, Commit_Out* out);
WOLFTPM_API TPM_RC TPM2_Commit(Commit_In* in, Commit_Out* out);
typedef struct {
@ -2381,7 +2382,7 @@ typedef struct {
TPM2B_ECC_POINT Q;
UINT16 counter;
} EC_Ephemeral_Out;
WOLFSSL_API TPM_RC TPM2_EC_Ephemeral(EC_Ephemeral_In* in,
WOLFTPM_API TPM_RC TPM2_EC_Ephemeral(EC_Ephemeral_In* in,
EC_Ephemeral_Out* out);
typedef struct {
@ -2392,7 +2393,7 @@ typedef struct {
typedef struct {
TPMT_TK_VERIFIED validation;
} VerifySignature_Out;
WOLFSSL_API TPM_RC TPM2_VerifySignature(VerifySignature_In* in,
WOLFTPM_API TPM_RC TPM2_VerifySignature(VerifySignature_In* in,
VerifySignature_Out* out);
@ -2405,7 +2406,7 @@ typedef struct {
typedef struct {
TPMT_SIGNATURE signature;
} Sign_Out;
WOLFSSL_API TPM_RC TPM2_Sign(Sign_In* in, Sign_Out* out);
WOLFTPM_API TPM_RC TPM2_Sign(Sign_In* in, Sign_Out* out);
typedef struct {
@ -2414,7 +2415,7 @@ typedef struct {
TPML_CC setList;
TPML_CC clearList;
} SetCommandCodeAuditStatus_In;
WOLFSSL_API TPM_RC TPM2_SetCommandCodeAuditStatus(
WOLFTPM_API TPM_RC TPM2_SetCommandCodeAuditStatus(
SetCommandCodeAuditStatus_In* in);
@ -2425,7 +2426,7 @@ typedef struct {
typedef struct {
TPML_DIGEST_VALUES digests;
} PCR_Event_Out;
WOLFSSL_API TPM_RC TPM2_PCR_Event(PCR_Event_In* in, PCR_Event_Out* out);
WOLFTPM_API TPM_RC TPM2_PCR_Event(PCR_Event_In* in, PCR_Event_Out* out);
typedef struct {
@ -2438,7 +2439,7 @@ typedef struct {
UINT32 sizeNeeded;
UINT32 sizeAvailable;
} PCR_Allocate_Out;
WOLFSSL_API TPM_RC TPM2_PCR_Allocate(PCR_Allocate_In* in,
WOLFTPM_API TPM_RC TPM2_PCR_Allocate(PCR_Allocate_In* in,
PCR_Allocate_Out* out);
typedef struct {
@ -2447,18 +2448,18 @@ typedef struct {
TPMI_ALG_HASH hashAlg;
TPMI_DH_PCR pcrNum;
} PCR_SetAuthPolicy_In;
WOLFSSL_API TPM_RC TPM2_PCR_SetAuthPolicy(PCR_SetAuthPolicy_In* in);
WOLFTPM_API TPM_RC TPM2_PCR_SetAuthPolicy(PCR_SetAuthPolicy_In* in);
typedef struct {
TPMI_DH_PCR pcrHandle;
TPM2B_DIGEST auth;
} PCR_SetAuthValue_In;
WOLFSSL_API TPM_RC TPM2_PCR_SetAuthValue(PCR_SetAuthValue_In* in);
WOLFTPM_API TPM_RC TPM2_PCR_SetAuthValue(PCR_SetAuthValue_In* in);
typedef struct {
TPMI_DH_PCR pcrHandle;
} PCR_Reset_In;
WOLFSSL_API TPM_RC TPM2_PCR_Reset(PCR_Reset_In* in);
WOLFTPM_API TPM_RC TPM2_PCR_Reset(PCR_Reset_In* in);
typedef struct {
@ -2474,7 +2475,7 @@ typedef struct {
TPM2B_TIMEOUT timeout;
TPMT_TK_AUTH policyTicket;
} PolicySigned_Out;
WOLFSSL_API TPM_RC TPM2_PolicySigned(PolicySigned_In* in,
WOLFTPM_API TPM_RC TPM2_PolicySigned(PolicySigned_In* in,
PolicySigned_Out* out);
typedef struct {
@ -2489,7 +2490,7 @@ typedef struct {
TPM2B_TIMEOUT timeout;
TPMT_TK_AUTH policyTicket;
} PolicySecret_Out;
WOLFSSL_API TPM_RC TPM2_PolicySecret(PolicySecret_In* in,
WOLFTPM_API TPM_RC TPM2_PolicySecret(PolicySecret_In* in,
PolicySecret_Out* out);
typedef struct {
@ -2500,26 +2501,26 @@ typedef struct {
TPM2B_NAME authName;
TPMT_TK_AUTH ticket;
} PolicyTicket_In;
WOLFSSL_API TPM_RC TPM2_PolicyTicket(PolicyTicket_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyTicket(PolicyTicket_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPML_DIGEST pHashList;
} PolicyOR_In;
WOLFSSL_API TPM_RC TPM2_PolicyOR(PolicyOR_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyOR(PolicyOR_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPM2B_DIGEST pcrDigest;
TPML_PCR_SELECTION pcrs;
} PolicyPCR_In;
WOLFSSL_API TPM_RC TPM2_PolicyPCR(PolicyPCR_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyPCR(PolicyPCR_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPMA_LOCALITY locality;
} PolicyLocality_In;
WOLFSSL_API TPM_RC TPM2_PolicyLocality(PolicyLocality_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyLocality(PolicyLocality_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
@ -2529,7 +2530,7 @@ typedef struct {
UINT16 offset;
TPM_EO operation;
} PolicyNV_In;
WOLFSSL_API TPM_RC TPM2_PolicyNV(PolicyNV_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyNV(PolicyNV_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
@ -2537,30 +2538,30 @@ typedef struct {
UINT16 offset;
TPM_EO operation;
} PolicyCounterTimer_In;
WOLFSSL_API TPM_RC TPM2_PolicyCounterTimer(PolicyCounterTimer_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyCounterTimer(PolicyCounterTimer_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPM_CC code;
} PolicyCommandCode_In;
WOLFSSL_API TPM_RC TPM2_PolicyCommandCode(PolicyCommandCode_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyCommandCode(PolicyCommandCode_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
} PolicyPhysicalPresence_In;
WOLFSSL_API TPM_RC TPM2_PolicyPhysicalPresence(PolicyPhysicalPresence_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyPhysicalPresence(PolicyPhysicalPresence_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPM2B_DIGEST cpHashA;
} PolicyCpHash_In;
WOLFSSL_API TPM_RC TPM2_PolicyCpHash(PolicyCpHash_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyCpHash(PolicyCpHash_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPM2B_DIGEST nameHash;
} PolicyNameHash_In;
WOLFSSL_API TPM_RC TPM2_PolicyNameHash(PolicyNameHash_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyNameHash(PolicyNameHash_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
@ -2568,7 +2569,7 @@ typedef struct {
TPM2B_NAME newParentName;
TPMI_YES_NO includeObject;
} PolicyDuplicationSelect_In;
WOLFSSL_API TPM_RC TPM2_PolicyDuplicationSelect(PolicyDuplicationSelect_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyDuplicationSelect(PolicyDuplicationSelect_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
@ -2577,17 +2578,17 @@ typedef struct {
TPM2B_NAME keySign;
TPMT_TK_VERIFIED checkTicket;
} PolicyAuthorize_In;
WOLFSSL_API TPM_RC TPM2_PolicyAuthorize(PolicyAuthorize_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyAuthorize(PolicyAuthorize_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
} PolicyAuthValue_In;
WOLFSSL_API TPM_RC TPM2_PolicyAuthValue(PolicyAuthValue_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyAuthValue(PolicyAuthValue_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
} PolicyPassword_In;
WOLFSSL_API TPM_RC TPM2_PolicyPassword(PolicyPassword_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyPassword(PolicyPassword_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
@ -2595,32 +2596,32 @@ typedef struct {
typedef struct {
TPM2B_DIGEST policyDigest;
} PolicyGetDigest_Out;
WOLFSSL_API TPM_RC TPM2_PolicyGetDigest(PolicyGetDigest_In* in, PolicyGetDigest_Out* out);
WOLFTPM_API TPM_RC TPM2_PolicyGetDigest(PolicyGetDigest_In* in, PolicyGetDigest_Out* out);
typedef struct {
TPMI_SH_POLICY policySession;
TPMI_YES_NO writtenSet;
} PolicyNvWritten_In;
WOLFSSL_API TPM_RC TPM2_PolicyNvWritten(PolicyNvWritten_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyNvWritten(PolicyNvWritten_In* in);
typedef struct {
TPMI_SH_POLICY policySession;
TPM2B_DIGEST templateHash;
} PolicyTemplate_In;
WOLFSSL_API TPM_RC TPM2_PolicyTemplate(PolicyTemplate_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyTemplate(PolicyTemplate_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
TPMI_RH_NV_INDEX nvIndex;
TPMI_SH_POLICY policySession;
} PolicyAuthorizeNV_In;
WOLFSSL_API TPM_RC TPM2_PolicyAuthorizeNV(PolicyAuthorizeNV_In* in);
WOLFTPM_API TPM_RC TPM2_PolicyAuthorizeNV(PolicyAuthorizeNV_In* in);
WOLFSSL_API void _TPM_Hash_Start(void);
WOLFSSL_API void _TPM_Hash_Data(UINT32 dataSize, BYTE *data);
WOLFSSL_API void _TPM_Hash_End(void);
WOLFTPM_API void _TPM_Hash_Start(void);
WOLFTPM_API void _TPM_Hash_Data(UINT32 dataSize, BYTE *data);
WOLFTPM_API void _TPM_Hash_End(void);
typedef struct {
@ -2628,48 +2629,48 @@ typedef struct {
TPMI_RH_ENABLES enable;
TPMI_YES_NO state;
} HierarchyControl_In;
WOLFSSL_API TPM_RC TPM2_HierarchyControl(HierarchyControl_In* in);
WOLFTPM_API TPM_RC TPM2_HierarchyControl(HierarchyControl_In* in);
typedef struct {
TPMI_RH_HIERARCHY_AUTH authHandle;
TPM2B_DIGEST authPolicy;
TPMI_ALG_HASH hashAlg;
} SetPrimaryPolicy_In;
WOLFSSL_API TPM_RC TPM2_SetPrimaryPolicy(SetPrimaryPolicy_In* in);
WOLFTPM_API TPM_RC TPM2_SetPrimaryPolicy(SetPrimaryPolicy_In* in);
typedef struct {
TPMI_RH_PLATFORM authHandle;
} ChangePPS_In;
WOLFSSL_API TPM_RC TPM2_ChangePPS(ChangePPS_In* in);
WOLFTPM_API TPM_RC TPM2_ChangePPS(ChangePPS_In* in);
typedef struct {
TPMI_RH_PLATFORM authHandle;
} ChangeEPS_In;
WOLFSSL_API TPM_RC TPM2_ChangeEPS(ChangeEPS_In* in);
WOLFTPM_API TPM_RC TPM2_ChangeEPS(ChangeEPS_In* in);
typedef struct {
TPMI_RH_CLEAR authHandle;
} Clear_In;
WOLFSSL_API TPM_RC TPM2_Clear(Clear_In* in);
WOLFTPM_API TPM_RC TPM2_Clear(Clear_In* in);
typedef struct {
TPMI_RH_CLEAR auth;
TPMI_YES_NO disable;
} ClearControl_In;
WOLFSSL_API TPM_RC TPM2_ClearControl(ClearControl_In* in);
WOLFTPM_API TPM_RC TPM2_ClearControl(ClearControl_In* in);
typedef struct {
TPMI_RH_HIERARCHY_AUTH authHandle;
TPM2B_AUTH newAuth;
} HierarchyChangeAuth_In;
WOLFSSL_API TPM_RC TPM2_HierarchyChangeAuth(HierarchyChangeAuth_In* in);
WOLFTPM_API TPM_RC TPM2_HierarchyChangeAuth(HierarchyChangeAuth_In* in);
typedef struct {
TPMI_RH_LOCKOUT lockHandle;
} DictionaryAttackLockReset_In;
WOLFSSL_API TPM_RC TPM2_DictionaryAttackLockReset(DictionaryAttackLockReset_In* in);
WOLFTPM_API TPM_RC TPM2_DictionaryAttackLockReset(DictionaryAttackLockReset_In* in);
typedef struct {
TPMI_RH_LOCKOUT lockHandle;
@ -2677,7 +2678,7 @@ typedef struct {
UINT32 newRecoveryTime;
UINT32 lockoutRecovery;
} DictionaryAttackParameters_In;
WOLFSSL_API TPM_RC TPM2_DictionaryAttackParameters(DictionaryAttackParameters_In* in);
WOLFTPM_API TPM_RC TPM2_DictionaryAttackParameters(DictionaryAttackParameters_In* in);
typedef struct {
@ -2685,13 +2686,13 @@ typedef struct {
TPML_CC setList;
TPML_CC clearList;
} PP_Commands_In;
WOLFSSL_API TPM_RC TPM2_PP_Commands(PP_Commands_In* in);
WOLFTPM_API TPM_RC TPM2_PP_Commands(PP_Commands_In* in);
typedef struct {
TPMI_RH_PLATFORM authHandle;
UINT32 algorithmSet;
} SetAlgorithmSet_In;
WOLFSSL_API TPM_RC TPM2_SetAlgorithmSet(SetAlgorithmSet_In* in);
WOLFTPM_API TPM_RC TPM2_SetAlgorithmSet(SetAlgorithmSet_In* in);
typedef struct {
TPMI_RH_PLATFORM authorization;
@ -2699,7 +2700,7 @@ typedef struct {
TPM2B_DIGEST fuDigest;
TPMT_SIGNATURE manifestSignature;
} FieldUpgradeStart_In;
WOLFSSL_API TPM_RC TPM2_FieldUpgradeStart(FieldUpgradeStart_In* in);
WOLFTPM_API TPM_RC TPM2_FieldUpgradeStart(FieldUpgradeStart_In* in);
typedef struct {
TPM2B_MAX_BUFFER fuData;
@ -2708,7 +2709,7 @@ typedef struct {
TPMT_HA nextDigest;
TPMT_HA firstDigest;
} FieldUpgradeData_Out;
WOLFSSL_API TPM_RC TPM2_FieldUpgradeData(FieldUpgradeData_In* in,
WOLFTPM_API TPM_RC TPM2_FieldUpgradeData(FieldUpgradeData_In* in,
FieldUpgradeData_Out* out);
typedef struct {
@ -2717,7 +2718,7 @@ typedef struct {
typedef struct {
TPM2B_MAX_BUFFER fuData;
} FirmwareRead_Out;
WOLFSSL_API TPM_RC TPM2_FirmwareRead(FirmwareRead_In* in, FirmwareRead_Out* out);
WOLFTPM_API TPM_RC TPM2_FirmwareRead(FirmwareRead_In* in, FirmwareRead_Out* out);
typedef struct {
@ -2726,7 +2727,7 @@ typedef struct {
typedef struct {
TPMS_CONTEXT context;
} ContextSave_Out;
WOLFSSL_API TPM_RC TPM2_ContextSave(ContextSave_In* in, ContextSave_Out* out);
WOLFTPM_API TPM_RC TPM2_ContextSave(ContextSave_In* in, ContextSave_Out* out);
typedef struct {
TPMS_CONTEXT context;
@ -2734,7 +2735,7 @@ typedef struct {
typedef struct {
TPMI_DH_CONTEXT loadedHandle;
} ContextLoad_Out;
WOLFSSL_API TPM_RC TPM2_ContextLoad(ContextLoad_In* in, ContextLoad_Out* out);
WOLFTPM_API TPM_RC TPM2_ContextLoad(ContextLoad_In* in, ContextLoad_Out* out);
typedef struct {
@ -2742,31 +2743,31 @@ typedef struct {
TPMI_DH_OBJECT objectHandle;
TPMI_DH_PERSISTENT persistentHandle;
} EvictControl_In;
WOLFSSL_API TPM_RC TPM2_EvictControl(EvictControl_In* in);
WOLFTPM_API TPM_RC TPM2_EvictControl(EvictControl_In* in);
typedef struct {
TPMS_TIME_INFO currentTime;
} ReadClock_Out;
WOLFSSL_API TPM_RC TPM2_ReadClock(ReadClock_Out* out);
WOLFTPM_API TPM_RC TPM2_ReadClock(ReadClock_Out* out);
typedef struct {
TPMI_RH_PROVISION auth;
UINT64 newTime;
} ClockSet_In;
WOLFSSL_API TPM_RC TPM2_ClockSet(ClockSet_In* in);
WOLFTPM_API TPM_RC TPM2_ClockSet(ClockSet_In* in);
typedef struct {
TPMI_RH_PROVISION auth;
TPM_CLOCK_ADJUST rateAdjust;
} ClockRateAdjust_In;
WOLFSSL_API TPM_RC TPM2_ClockRateAdjust(ClockRateAdjust_In* in);
WOLFTPM_API TPM_RC TPM2_ClockRateAdjust(ClockRateAdjust_In* in);
typedef struct {
TPMT_PUBLIC_PARMS parameters;
} TestParms_In;
WOLFSSL_API TPM_RC TPM2_TestParms(TestParms_In* in);
WOLFTPM_API TPM_RC TPM2_TestParms(TestParms_In* in);
typedef struct {
@ -2774,19 +2775,19 @@ typedef struct {
TPM2B_AUTH auth;
TPM2B_NV_PUBLIC publicInfo;
} NV_DefineSpace_In;
WOLFSSL_API TPM_RC TPM2_NV_DefineSpace(NV_DefineSpace_In* in);
WOLFTPM_API TPM_RC TPM2_NV_DefineSpace(NV_DefineSpace_In* in);
typedef struct {
TPMI_RH_PROVISION authHandle;
TPMI_RH_NV_INDEX nvIndex;
} NV_UndefineSpace_In;
WOLFSSL_API TPM_RC TPM2_NV_UndefineSpace(NV_UndefineSpace_In* in);
WOLFTPM_API TPM_RC TPM2_NV_UndefineSpace(NV_UndefineSpace_In* in);
typedef struct {
TPMI_RH_NV_INDEX nvIndex;
TPMI_RH_PLATFORM platform;
} NV_UndefineSpaceSpecial_In;
WOLFSSL_API TPM_RC TPM2_NV_UndefineSpaceSpecial(NV_UndefineSpaceSpecial_In* in);
WOLFTPM_API TPM_RC TPM2_NV_UndefineSpaceSpecial(NV_UndefineSpaceSpecial_In* in);
typedef struct {
TPMI_RH_NV_INDEX nvIndex;
@ -2795,7 +2796,7 @@ typedef struct {
TPM2B_NV_PUBLIC nvPublic;
TPM2B_NAME nvName;
} NV_ReadPublic_Out;
WOLFSSL_API TPM_RC TPM2_NV_ReadPublic(NV_ReadPublic_In* in, NV_ReadPublic_Out* out);
WOLFTPM_API TPM_RC TPM2_NV_ReadPublic(NV_ReadPublic_In* in, NV_ReadPublic_Out* out);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
@ -2803,38 +2804,38 @@ typedef struct {
TPM2B_MAX_NV_BUFFER data;
UINT16 offset;
} NV_Write_In;
WOLFSSL_API TPM_RC TPM2_NV_Write(NV_Write_In* in);
WOLFTPM_API TPM_RC TPM2_NV_Write(NV_Write_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
TPMI_RH_NV_INDEX nvIndex;
} NV_Increment_In;
WOLFSSL_API TPM_RC TPM2_NV_Increment(NV_Increment_In* in);
WOLFTPM_API TPM_RC TPM2_NV_Increment(NV_Increment_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
TPMI_RH_NV_INDEX nvIndex;
TPM2B_MAX_NV_BUFFER data;
} NV_Extend_In;
WOLFSSL_API TPM_RC TPM2_NV_Extend(NV_Extend_In* in);
WOLFTPM_API TPM_RC TPM2_NV_Extend(NV_Extend_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
TPMI_RH_NV_INDEX nvIndex;
UINT64 bits;
} NV_SetBits_In;
WOLFSSL_API TPM_RC TPM2_NV_SetBits(NV_SetBits_In* in);
WOLFTPM_API TPM_RC TPM2_NV_SetBits(NV_SetBits_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
TPMI_RH_NV_INDEX nvIndex;
} NV_WriteLock_In;
WOLFSSL_API TPM_RC TPM2_NV_WriteLock(NV_WriteLock_In* in);
WOLFTPM_API TPM_RC TPM2_NV_WriteLock(NV_WriteLock_In* in);
typedef struct {
TPMI_RH_PROVISION authHandle;
} NV_GlobalWriteLock_In;
WOLFSSL_API TPM_RC TPM2_NV_GlobalWriteLock(NV_GlobalWriteLock_In* in);
WOLFTPM_API TPM_RC TPM2_NV_GlobalWriteLock(NV_GlobalWriteLock_In* in);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
@ -2845,19 +2846,19 @@ typedef struct {
typedef struct {
TPM2B_MAX_NV_BUFFER data;
} NV_Read_Out;
WOLFSSL_API TPM_RC TPM2_NV_Read(NV_Read_In* in, NV_Read_Out* out);
WOLFTPM_API TPM_RC TPM2_NV_Read(NV_Read_In* in, NV_Read_Out* out);
typedef struct {
TPMI_RH_NV_AUTH authHandle;
TPMI_RH_NV_INDEX nvIndex;
} NV_ReadLock_In;
WOLFSSL_API TPM_RC TPM2_NV_ReadLock(NV_ReadLock_In* in);
WOLFTPM_API TPM_RC TPM2_NV_ReadLock(NV_ReadLock_In* in);
typedef struct {
TPMI_RH_NV_INDEX nvIndex;
TPM2B_AUTH newAuth;
} NV_ChangeAuth_In;
WOLFSSL_API TPM_RC TPM2_NV_ChangeAuth(NV_ChangeAuth_In* in);
WOLFTPM_API TPM_RC TPM2_NV_ChangeAuth(NV_ChangeAuth_In* in);
typedef struct {
TPMI_DH_OBJECT signHandle;
@ -2872,13 +2873,13 @@ typedef struct {
TPM2B_ATTEST certifyInfo;
TPMT_SIGNATURE signature;
} NV_Certify_Out;
WOLFSSL_API TPM_RC TPM2_NV_Certify(NV_Certify_In* in, NV_Certify_Out* out);
WOLFTPM_API TPM_RC TPM2_NV_Certify(NV_Certify_In* in, NV_Certify_Out* out);
/* Helper API's - Not based on spec */
WOLFSSL_API int TPM2_GetHashDigestSize(TPMI_ALG_HASH hashAlg);
WOLFSSL_API const char* TPM2_GetAlgName(TPM_ALG_ID alg);
WOLFSSL_API const char* TPM2_GetRCString(TPM_RC rc);
WOLFSSL_API void TPM2_SetupPCRSel(TPML_PCR_SELECTION* pcr, TPM_ALG_ID alg, int pcrIndex);
WOLFTPM_API int TPM2_GetHashDigestSize(TPMI_ALG_HASH hashAlg);
WOLFTPM_API const char* TPM2_GetAlgName(TPM_ALG_ID alg);
WOLFTPM_API const char* TPM2_GetRCString(TPM_RC rc);
WOLFTPM_API void TPM2_SetupPCRSel(TPML_PCR_SELECTION* pcr, TPM_ALG_ID alg, int pcrIndex);
#endif /* __TPM2_H__ */

View File

@ -2,14 +2,14 @@
*
* Copyright (C) 2006-2018 wolfSSL Inc.
*
* This file is part of wolfMQTT.
* This file is part of wolfTPM.
*
* wolfMQTT is free software; you can redistribute it and/or modify
* wolfTPM is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* wolfMQTT is distributed in the hope that it will be useful,
* wolfTPM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
@ -21,41 +21,41 @@
/* Visibility control macros */
#ifndef WOLFMQTT_VISIBILITY_H
#define WOLFMQTT_VISIBILITY_H
#ifndef WOLFTPM_VISIBILITY_H
#define WOLFTPM_VISIBILITY_H
/* WOLFMQTT_API is used for the public API symbols.
/* WOLFTPM_API is used for the public API symbols.
It either imports or exports (or does nothing for static builds)
WOLFMQTT_LOCAL is used for non-API symbols (private).
WOLFTPM_LOCAL is used for non-API symbols (private).
*/
#if defined(BUILDING_WOLFMQTT)
#if defined(BUILDING_WOLFTPM)
#if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
#define WOLFMQTT_API __attribute__ ((visibility("default")))
#define WOLFMQTT_LOCAL __attribute__ ((visibility("hidden")))
#define WOLFTPM_API __attribute__ ((visibility("default")))
#define WOLFTPM_LOCAL __attribute__ ((visibility("hidden")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
#define WOLFMQTT_API __global
#define WOLFMQTT_LOCAL __hidden
#define WOLFTPM_API __global
#define WOLFTPM_LOCAL __hidden
#elif defined(_MSC_VER)
#ifdef _WINDLL
#define WOLFMQTT_API __declspec(dllexport)
#define WOLFTPM_API __declspec(dllexport)
#else
#define WOLFMQTT_API
#define WOLFTPM_API
#endif
#define WOLFMQTT_LOCAL
#define WOLFTPM_LOCAL
#else
#define WOLFMQTT_API
#define WOLFMQTT_LOCAL
#define WOLFTPM_API
#define WOLFTPM_LOCAL
#endif /* HAVE_VISIBILITY */
#else /* BUILDING_WOLFMQTT */
#else /* BUILDING_WOLFTPM */
#if defined(_MSC_VER)
#define WOLFMQTT_API __declspec(dllimport)
#define WOLFMQTT_LOCAL
#define WOLFTPM_API __declspec(dllimport)
#define WOLFTPM_LOCAL
#else
#define WOLFMQTT_API
#define WOLFMQTT_LOCAL
#define WOLFTPM_API
#define WOLFTPM_LOCAL
#endif
#endif /* BUILDING_WOLFMQTT */
#endif /* BUILDING_WOLFTPM */
#endif /* WOLFMQTT_VISIBILITY_H */
#endif /* WOLFTPM_VISIBILITY_H */