123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736 |
- /* 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 */
|