| /* SPDX-License-Identifier: BSD-2-Clause */ |
| /******************************************************************************* |
| * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG |
| * All rights reserved. |
| *******************************************************************************/ |
| #ifndef TSS2_FAPI_H |
| #define TSS2_FAPI_H |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "tss2_tcti.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* Type definitions */ |
| |
| typedef struct FAPI_CONTEXT FAPI_CONTEXT; |
| |
| |
| /* Defines for blob type of Fapi_GetEsysBlob */ |
| |
| #define FAPI_ESYSBLOB_CONTEXTLOAD 1 |
| #define FAPI_ESYSBLOB_DESERIALIZE 2 |
| |
| /* Context functions */ |
| |
| TSS2_RC Fapi_Initialize( |
| FAPI_CONTEXT **context, |
| char const *uri); |
| |
| TSS2_RC Fapi_Initialize_Async( |
| FAPI_CONTEXT **context, |
| char const *uri); |
| |
| TSS2_RC Fapi_Initialize_Finish( |
| FAPI_CONTEXT **context); |
| |
| void Fapi_Finalize( |
| FAPI_CONTEXT **context); |
| |
| TSS2_RC Fapi_GetTcti( |
| FAPI_CONTEXT *context, |
| TSS2_TCTI_CONTEXT **tcti); |
| |
| void Fapi_Free( |
| void *ptr); |
| |
| #if defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined (__QNXNTO__) || defined (__VXWORKS__) |
| #if defined (__VXWORKS__) |
| #include <sys/poll.h> |
| #else |
| #include <poll.h> |
| #endif |
| typedef struct pollfd FAPI_POLL_HANDLE; |
| #elif defined(_WIN32) |
| #include <windows.h> |
| typedef HANDLE FAPI_POLL_HANDLE; |
| #else |
| typedef void FAPI_POLL_HANDLE; |
| #ifndef FAPI_SUPPRESS_POLL_WARNINGS |
| #pragma message "Info: Platform not supported for FAPI_POLL_HANDLES" |
| #endif |
| #endif |
| |
| TSS2_RC Fapi_GetPollHandles( |
| FAPI_CONTEXT *context, |
| FAPI_POLL_HANDLE **handles, |
| size_t *num_handles); |
| |
| TSS2_RC Fapi_GetInfo( |
| FAPI_CONTEXT *context, |
| char **info); |
| |
| TSS2_RC Fapi_GetInfo_Async( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetInfo_Finish( |
| FAPI_CONTEXT *context, |
| char **info); |
| |
| /* General functions */ |
| |
| TSS2_RC Fapi_Provision( |
| FAPI_CONTEXT *context, |
| char const *authValueEh, |
| char const *authValueSh, |
| char const *authValueLockout); |
| |
| TSS2_RC Fapi_Provision_Async( |
| FAPI_CONTEXT *context, |
| char const *authValueEh, |
| char const *authValueSh, |
| char const *authValueLockout); |
| |
| TSS2_RC Fapi_Provision_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetPlatformCertificates( |
| FAPI_CONTEXT *context, |
| uint8_t **certificates, |
| size_t *certificatesSize); |
| |
| TSS2_RC Fapi_GetPlatformCertificates_Async( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetPlatformCertificates_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **certificates, |
| size_t *certificatesSize); |
| |
| TSS2_RC Fapi_GetRandom( |
| FAPI_CONTEXT *context, |
| size_t numBytes, |
| uint8_t **data); |
| |
| TSS2_RC Fapi_GetRandom_Async( |
| FAPI_CONTEXT *context, |
| size_t numBytes); |
| |
| TSS2_RC Fapi_GetRandom_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **data); |
| |
| TSS2_RC Fapi_Import( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *importData); |
| |
| TSS2_RC Fapi_Import_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *importData); |
| |
| TSS2_RC Fapi_Import_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_List( |
| FAPI_CONTEXT *context, |
| char const *searchPath, |
| char **pathList); |
| |
| TSS2_RC Fapi_List_Async( |
| FAPI_CONTEXT *context, |
| char const *searchPath); |
| |
| TSS2_RC Fapi_List_Finish( |
| FAPI_CONTEXT *context, |
| char **pathList); |
| |
| TSS2_RC Fapi_Delete( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_Delete_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_Delete_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetEsysBlob( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t *type, |
| uint8_t **data, |
| size_t *length); |
| |
| TSS2_RC Fapi_GetEsysBlob_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_GetEsysBlob_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t *type, |
| uint8_t **data, |
| size_t *length); |
| |
| TSS2_RC Fapi_ChangeAuth( |
| FAPI_CONTEXT *context, |
| char const *entityPath, |
| char const *authValue); |
| |
| TSS2_RC Fapi_ChangeAuth_Async( |
| FAPI_CONTEXT *context, |
| char const *entityPath, |
| char const *authValue); |
| |
| TSS2_RC Fapi_ChangeAuth_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_SetDescription( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *description); |
| |
| TSS2_RC Fapi_SetDescription_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *description); |
| |
| TSS2_RC Fapi_SetDescription_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetDescription( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char **description); |
| |
| TSS2_RC Fapi_GetDescription_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_GetDescription_Finish( |
| FAPI_CONTEXT *context, |
| char **description); |
| |
| TSS2_RC Fapi_SetAppData( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t const *appData, |
| size_t appDataSize); |
| |
| TSS2_RC Fapi_SetAppData_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t const *appData, |
| size_t appDataSize); |
| |
| TSS2_RC Fapi_SetAppData_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetAppData( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t **appData, |
| size_t *appDataSize); |
| |
| TSS2_RC Fapi_GetAppData_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_GetAppData_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **appData, |
| size_t *appDataSize); |
| |
| TSS2_RC Fapi_GetTpmBlobs( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t **tpm2bPublic, |
| size_t *tpm2bPublicSize, |
| uint8_t **tpm2bPrivate, |
| size_t *tpm2bPrivateSize, |
| char **policy); |
| |
| TSS2_RC Fapi_GetTpmBlobs_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_GetTpmBlobs_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **tpm2bPublic, |
| size_t *tpm2bPublicSize, |
| uint8_t **tpm2bPrivate, |
| size_t *tpm2bPrivateSize, |
| char **policy); |
| |
| /* Key functions */ |
| |
| TSS2_RC Fapi_CreateKey( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *type, |
| char const *policyPath, |
| char const *authValue); |
| |
| TSS2_RC Fapi_CreateKey_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *type, |
| char const *policyPath, |
| char const *authValue); |
| |
| TSS2_RC Fapi_CreateKey_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_Sign( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| char const *padding, |
| uint8_t const *digest, |
| size_t digestSize, |
| uint8_t **signature, |
| size_t *signatureSize, |
| char **publicKey, |
| char **certificate); |
| |
| TSS2_RC Fapi_Sign_Async( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| char const *padding, |
| uint8_t const *digest, |
| size_t digestSize); |
| |
| TSS2_RC Fapi_Sign_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **signature, |
| size_t *signatureSize, |
| char **publicKey, |
| char **certificate); |
| |
| TSS2_RC Fapi_VerifySignature( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| uint8_t const *digest, |
| size_t digestSize, |
| uint8_t const *signature, |
| size_t signatureSize); |
| |
| TSS2_RC Fapi_VerifySignature_Async( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| uint8_t const *digest, |
| size_t digestSize, |
| uint8_t const *signature, |
| size_t signatureSize); |
| |
| TSS2_RC Fapi_VerifySignature_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_Encrypt( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| uint8_t const *plainText, |
| size_t plainTextSize, |
| uint8_t **cipherText, |
| size_t *cipherTextSize); |
| |
| TSS2_RC Fapi_Encrypt_Async( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| uint8_t const *plainText, |
| size_t plainTextSize); |
| |
| TSS2_RC Fapi_Encrypt_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **cipherText, |
| size_t *cipherTextSize ); |
| |
| TSS2_RC Fapi_Decrypt( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| uint8_t const *cipherText, |
| size_t cipherTextSize, |
| uint8_t **plainText, |
| size_t *plainTextSize); |
| |
| TSS2_RC Fapi_Decrypt_Async( |
| FAPI_CONTEXT *context, |
| char const *keyPath, |
| uint8_t const *cipherText, |
| size_t cipherTextSize); |
| |
| TSS2_RC Fapi_Decrypt_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **plainText, |
| size_t *plainTextSize); |
| |
| TSS2_RC Fapi_SetCertificate( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *x509certData); |
| |
| TSS2_RC Fapi_SetCertificate_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *x509certData); |
| |
| TSS2_RC Fapi_SetCertificate_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_GetCertificate( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char **x509certData); |
| |
| TSS2_RC Fapi_GetCertificate_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_GetCertificate_Finish( |
| FAPI_CONTEXT *context, |
| char **x509certData); |
| |
| TSS2_RC Fapi_ExportKey( |
| FAPI_CONTEXT *context, |
| char const *pathOfKeyToDuplicate, |
| char const *pathToPublicKeyOfNewParent, |
| char **exportedData); |
| |
| TSS2_RC Fapi_ExportKey_Async( |
| FAPI_CONTEXT *context, |
| char const *pathOfKeyToDuplicate, |
| char const *pathToPublicKeyOfNewParent); |
| |
| TSS2_RC Fapi_ExportKey_Finish( |
| FAPI_CONTEXT *context, |
| char **exportedData); |
| |
| /* Seal functions */ |
| |
| TSS2_RC Fapi_CreateSeal( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *type, |
| size_t size, |
| char const *policyPath, |
| char const *authValue, |
| uint8_t const *data); |
| |
| TSS2_RC Fapi_CreateSeal_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *type, |
| size_t size, |
| char const *policyPath, |
| char const *authValue, |
| uint8_t const *data); |
| |
| TSS2_RC Fapi_CreateSeal_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_Unseal( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t **data, |
| size_t *size); |
| |
| TSS2_RC Fapi_Unseal_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_Unseal_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **data, |
| size_t *size); |
| |
| /* Policy functions */ |
| |
| TSS2_RC Fapi_ExportPolicy( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char **jsonPolicy); |
| |
| TSS2_RC Fapi_ExportPolicy_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_ExportPolicy_Finish( |
| FAPI_CONTEXT *context, |
| char **jsonPolicy); |
| |
| TSS2_RC Fapi_AuthorizePolicy( |
| FAPI_CONTEXT *context, |
| char const *policyPath, |
| char const *keyPath, |
| uint8_t const *policyRef, |
| size_t policyRefSize); |
| |
| TSS2_RC Fapi_AuthorizePolicy_Async( |
| FAPI_CONTEXT *context, |
| char const *policyPath, |
| char const *keyPath, |
| uint8_t const *policyRef, |
| size_t policyRefSize); |
| |
| TSS2_RC Fapi_AuthorizePolicy_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_WriteAuthorizeNv( |
| FAPI_CONTEXT *context, |
| char const *nvPath, |
| char const *policyPath); |
| |
| TSS2_RC Fapi_WriteAuthorizeNv_Async( |
| FAPI_CONTEXT *context, |
| char const *nvPath, |
| char const *policyPath); |
| |
| TSS2_RC Fapi_WriteAuthorizeNv_Finish( |
| FAPI_CONTEXT *context); |
| |
| /* Attestation functions */ |
| |
| TSS2_RC Fapi_PcrRead( |
| FAPI_CONTEXT *context, |
| uint32_t pcrIndex, |
| uint8_t **pcrValue, |
| size_t *pcrValueSize, |
| char **pcrLog); |
| |
| TSS2_RC Fapi_PcrRead_Async( |
| FAPI_CONTEXT *context, |
| uint32_t pcrIndex); |
| |
| TSS2_RC Fapi_PcrRead_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **pcrValue, |
| size_t *pcrValueSize, |
| char **pcrLog); |
| |
| TSS2_RC Fapi_PcrExtend( |
| FAPI_CONTEXT *context, |
| uint32_t pcr, |
| uint8_t const *data, |
| size_t dataSize, |
| char const *logData); |
| |
| TSS2_RC Fapi_PcrExtend_Async( |
| FAPI_CONTEXT *context, |
| uint32_t pcr, |
| uint8_t const *data, |
| size_t dataSize, |
| char const *logData); |
| |
| TSS2_RC Fapi_PcrExtend_Finish( |
| FAPI_CONTEXT *context); |
| |
| |
| TSS2_RC Fapi_Quote( |
| FAPI_CONTEXT *context, |
| uint32_t *pcrList, |
| size_t pcrListSize, |
| char const *keyPath, |
| char const *quoteType, |
| uint8_t const *qualifyingData, |
| size_t qualifyingDataSize, |
| char **quoteInfo, |
| uint8_t **signature, |
| size_t *signatureSize, |
| char **pcrLog, |
| char **certificate); |
| |
| TSS2_RC Fapi_Quote_Async( |
| FAPI_CONTEXT *context, |
| uint32_t *pcrList, |
| size_t pcrListSize, |
| char const *keyPath, |
| char const *quoteType, |
| uint8_t const *qualifyingData, |
| size_t qualifyingDataSize); |
| |
| TSS2_RC Fapi_Quote_Finish( |
| FAPI_CONTEXT *context, |
| char **quoteInfo, |
| uint8_t **signature, |
| size_t *signatureSize, |
| char **pcrLog, |
| char **certificate); |
| |
| TSS2_RC Fapi_VerifyQuote( |
| FAPI_CONTEXT *context, |
| char const *publicKeyPath, |
| uint8_t const *qualifyingData, |
| size_t qualifyingDataSize, |
| char const *quoteInfo, |
| uint8_t const *signature, |
| size_t signatureSize, |
| char const *pcrLog); |
| |
| TSS2_RC Fapi_VerifyQuote_Async( |
| FAPI_CONTEXT *context, |
| char const *publicKeyPath, |
| uint8_t const *qualifyingData, |
| size_t qualifyingDataSize, |
| char const *quoteInfo, |
| uint8_t const *signature, |
| size_t signatureSize, |
| char const *pcrLog); |
| |
| TSS2_RC Fapi_VerifyQuote_Finish( |
| FAPI_CONTEXT *context); |
| |
| /* NV functions */ |
| |
| TSS2_RC Fapi_CreateNv( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *type, |
| size_t size, |
| char const *policyPath, |
| char const *authValue); |
| |
| TSS2_RC Fapi_CreateNv_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| char const *type, |
| size_t size, |
| char const *policyPath, |
| char const *authValue); |
| |
| TSS2_RC Fapi_CreateNv_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_NvRead( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t **data, |
| size_t *size, |
| char **logData); |
| |
| TSS2_RC Fapi_NvRead_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_NvRead_Finish( |
| FAPI_CONTEXT *context, |
| uint8_t **data, |
| size_t *size, |
| char **logData); |
| |
| TSS2_RC Fapi_NvWrite( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t const *data, |
| size_t size); |
| |
| TSS2_RC Fapi_NvWrite_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t const *data, |
| size_t size); |
| |
| TSS2_RC Fapi_NvWrite_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_NvExtend( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t const *data, |
| size_t size, |
| char const *logData); |
| |
| TSS2_RC Fapi_NvExtend_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint8_t const *data, |
| size_t size, |
| char const *logData); |
| |
| TSS2_RC Fapi_NvExtend_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_NvIncrement( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_NvIncrement_Async( |
| FAPI_CONTEXT *context, |
| char const *path); |
| |
| TSS2_RC Fapi_NvIncrement_Finish( |
| FAPI_CONTEXT *context); |
| |
| TSS2_RC Fapi_NvSetBits( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint64_t bitmap); |
| |
| TSS2_RC Fapi_NvSetBits_Async( |
| FAPI_CONTEXT *context, |
| char const *path, |
| uint64_t bitmap); |
| |
| TSS2_RC Fapi_NvSetBits_Finish( |
| FAPI_CONTEXT *context); |
| |
| typedef TSS2_RC (*Fapi_CB_Auth)( |
| char const *objectPath, |
| char const *description, |
| char const **auth, |
| void *userData); |
| |
| TSS2_RC Fapi_SetAuthCB( |
| FAPI_CONTEXT *context, |
| Fapi_CB_Auth callback, |
| void *userData); |
| |
| typedef TSS2_RC (*Fapi_CB_Branch)( |
| char const *objectPath, |
| char const *description, |
| char const **branchNames, |
| size_t numBranches, |
| size_t *selectedBranch, |
| void *userData); |
| |
| TSS2_RC Fapi_SetBranchCB( |
| FAPI_CONTEXT *context, |
| Fapi_CB_Branch callback, |
| void *userData); |
| |
| typedef TSS2_RC (*Fapi_CB_Sign)( |
| char const *objectPath, |
| char const *description, |
| char const *publicKey, |
| char const *publicKeyHint, |
| uint32_t hashAlg, |
| uint8_t const *dataToSign, |
| size_t dataToSignSize, |
| uint8_t const **signature, |
| size_t *signatureSize, |
| void *userData); |
| |
| TSS2_RC Fapi_SetSignCB( |
| FAPI_CONTEXT *context, |
| Fapi_CB_Sign callback, |
| void *userData); |
| |
| typedef TSS2_RC (*Fapi_CB_PolicyAction)( |
| char const *objectPath, |
| char const *action, |
| void *userData); |
| |
| TSS2_RC Fapi_SetPolicyActionCB( |
| FAPI_CONTEXT *context, |
| Fapi_CB_PolicyAction callback, |
| void *userData); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* TSS2_FAPI_H */ |