tss2_fapi.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. /* SPDX-License-Identifier: BSD-2-Clause */
  2. /*******************************************************************************
  3. * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
  4. * All rights reserved.
  5. *******************************************************************************/
  6. #ifndef TSS2_FAPI_H
  7. #define TSS2_FAPI_H
  8. #include <stddef.h>
  9. #include <stdint.h>
  10. #include "tss2_tcti.h"
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. /* Type definitions */
  15. typedef struct FAPI_CONTEXT FAPI_CONTEXT;
  16. /* Defines for blob type of Fapi_GetEsysBlob */
  17. #define FAPI_ESYSBLOB_CONTEXTLOAD 1
  18. #define FAPI_ESYSBLOB_DESERIALIZE 2
  19. /* Context functions */
  20. TSS2_RC Fapi_Initialize(
  21. FAPI_CONTEXT **context,
  22. char const *uri);
  23. TSS2_RC Fapi_Initialize_Async(
  24. FAPI_CONTEXT **context,
  25. char const *uri);
  26. TSS2_RC Fapi_Initialize_Finish(
  27. FAPI_CONTEXT **context);
  28. void Fapi_Finalize(
  29. FAPI_CONTEXT **context);
  30. TSS2_RC Fapi_GetTcti(
  31. FAPI_CONTEXT *context,
  32. TSS2_TCTI_CONTEXT **tcti);
  33. void Fapi_Free(
  34. void *ptr);
  35. #if defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined (__QNXNTO__) || defined (__VXWORKS__)
  36. #if defined (__VXWORKS__)
  37. #include <sys/poll.h>
  38. #else
  39. #include <poll.h>
  40. #endif
  41. typedef struct pollfd FAPI_POLL_HANDLE;
  42. #elif defined(_WIN32)
  43. #include <windows.h>
  44. typedef HANDLE FAPI_POLL_HANDLE;
  45. #else
  46. typedef void FAPI_POLL_HANDLE;
  47. #ifndef FAPI_SUPPRESS_POLL_WARNINGS
  48. #pragma message "Info: Platform not supported for FAPI_POLL_HANDLES"
  49. #endif
  50. #endif
  51. TSS2_RC Fapi_GetPollHandles(
  52. FAPI_CONTEXT *context,
  53. FAPI_POLL_HANDLE **handles,
  54. size_t *num_handles);
  55. TSS2_RC Fapi_GetInfo(
  56. FAPI_CONTEXT *context,
  57. char **info);
  58. TSS2_RC Fapi_GetInfo_Async(
  59. FAPI_CONTEXT *context);
  60. TSS2_RC Fapi_GetInfo_Finish(
  61. FAPI_CONTEXT *context,
  62. char **info);
  63. /* General functions */
  64. TSS2_RC Fapi_Provision(
  65. FAPI_CONTEXT *context,
  66. char const *authValueEh,
  67. char const *authValueSh,
  68. char const *authValueLockout);
  69. TSS2_RC Fapi_Provision_Async(
  70. FAPI_CONTEXT *context,
  71. char const *authValueEh,
  72. char const *authValueSh,
  73. char const *authValueLockout);
  74. TSS2_RC Fapi_Provision_Finish(
  75. FAPI_CONTEXT *context);
  76. TSS2_RC Fapi_GetPlatformCertificates(
  77. FAPI_CONTEXT *context,
  78. uint8_t **certificates,
  79. size_t *certificatesSize);
  80. TSS2_RC Fapi_GetPlatformCertificates_Async(
  81. FAPI_CONTEXT *context);
  82. TSS2_RC Fapi_GetPlatformCertificates_Finish(
  83. FAPI_CONTEXT *context,
  84. uint8_t **certificates,
  85. size_t *certificatesSize);
  86. TSS2_RC Fapi_GetRandom(
  87. FAPI_CONTEXT *context,
  88. size_t numBytes,
  89. uint8_t **data);
  90. TSS2_RC Fapi_GetRandom_Async(
  91. FAPI_CONTEXT *context,
  92. size_t numBytes);
  93. TSS2_RC Fapi_GetRandom_Finish(
  94. FAPI_CONTEXT *context,
  95. uint8_t **data);
  96. TSS2_RC Fapi_Import(
  97. FAPI_CONTEXT *context,
  98. char const *path,
  99. char const *importData);
  100. TSS2_RC Fapi_Import_Async(
  101. FAPI_CONTEXT *context,
  102. char const *path,
  103. char const *importData);
  104. TSS2_RC Fapi_Import_Finish(
  105. FAPI_CONTEXT *context);
  106. TSS2_RC Fapi_List(
  107. FAPI_CONTEXT *context,
  108. char const *searchPath,
  109. char **pathList);
  110. TSS2_RC Fapi_List_Async(
  111. FAPI_CONTEXT *context,
  112. char const *searchPath);
  113. TSS2_RC Fapi_List_Finish(
  114. FAPI_CONTEXT *context,
  115. char **pathList);
  116. TSS2_RC Fapi_Delete(
  117. FAPI_CONTEXT *context,
  118. char const *path);
  119. TSS2_RC Fapi_Delete_Async(
  120. FAPI_CONTEXT *context,
  121. char const *path);
  122. TSS2_RC Fapi_Delete_Finish(
  123. FAPI_CONTEXT *context);
  124. TSS2_RC Fapi_GetEsysBlob(
  125. FAPI_CONTEXT *context,
  126. char const *path,
  127. uint8_t *type,
  128. uint8_t **data,
  129. size_t *length);
  130. TSS2_RC Fapi_GetEsysBlob_Async(
  131. FAPI_CONTEXT *context,
  132. char const *path);
  133. TSS2_RC Fapi_GetEsysBlob_Finish(
  134. FAPI_CONTEXT *context,
  135. uint8_t *type,
  136. uint8_t **data,
  137. size_t *length);
  138. TSS2_RC Fapi_ChangeAuth(
  139. FAPI_CONTEXT *context,
  140. char const *entityPath,
  141. char const *authValue);
  142. TSS2_RC Fapi_ChangeAuth_Async(
  143. FAPI_CONTEXT *context,
  144. char const *entityPath,
  145. char const *authValue);
  146. TSS2_RC Fapi_ChangeAuth_Finish(
  147. FAPI_CONTEXT *context);
  148. TSS2_RC Fapi_SetDescription(
  149. FAPI_CONTEXT *context,
  150. char const *path,
  151. char const *description);
  152. TSS2_RC Fapi_SetDescription_Async(
  153. FAPI_CONTEXT *context,
  154. char const *path,
  155. char const *description);
  156. TSS2_RC Fapi_SetDescription_Finish(
  157. FAPI_CONTEXT *context);
  158. TSS2_RC Fapi_GetDescription(
  159. FAPI_CONTEXT *context,
  160. char const *path,
  161. char **description);
  162. TSS2_RC Fapi_GetDescription_Async(
  163. FAPI_CONTEXT *context,
  164. char const *path);
  165. TSS2_RC Fapi_GetDescription_Finish(
  166. FAPI_CONTEXT *context,
  167. char **description);
  168. TSS2_RC Fapi_SetAppData(
  169. FAPI_CONTEXT *context,
  170. char const *path,
  171. uint8_t const *appData,
  172. size_t appDataSize);
  173. TSS2_RC Fapi_SetAppData_Async(
  174. FAPI_CONTEXT *context,
  175. char const *path,
  176. uint8_t const *appData,
  177. size_t appDataSize);
  178. TSS2_RC Fapi_SetAppData_Finish(
  179. FAPI_CONTEXT *context);
  180. TSS2_RC Fapi_GetAppData(
  181. FAPI_CONTEXT *context,
  182. char const *path,
  183. uint8_t **appData,
  184. size_t *appDataSize);
  185. TSS2_RC Fapi_GetAppData_Async(
  186. FAPI_CONTEXT *context,
  187. char const *path);
  188. TSS2_RC Fapi_GetAppData_Finish(
  189. FAPI_CONTEXT *context,
  190. uint8_t **appData,
  191. size_t *appDataSize);
  192. TSS2_RC Fapi_GetTpmBlobs(
  193. FAPI_CONTEXT *context,
  194. char const *path,
  195. uint8_t **tpm2bPublic,
  196. size_t *tpm2bPublicSize,
  197. uint8_t **tpm2bPrivate,
  198. size_t *tpm2bPrivateSize,
  199. char **policy);
  200. TSS2_RC Fapi_GetTpmBlobs_Async(
  201. FAPI_CONTEXT *context,
  202. char const *path);
  203. TSS2_RC Fapi_GetTpmBlobs_Finish(
  204. FAPI_CONTEXT *context,
  205. uint8_t **tpm2bPublic,
  206. size_t *tpm2bPublicSize,
  207. uint8_t **tpm2bPrivate,
  208. size_t *tpm2bPrivateSize,
  209. char **policy);
  210. /* Key functions */
  211. TSS2_RC Fapi_CreateKey(
  212. FAPI_CONTEXT *context,
  213. char const *path,
  214. char const *type,
  215. char const *policyPath,
  216. char const *authValue);
  217. TSS2_RC Fapi_CreateKey_Async(
  218. FAPI_CONTEXT *context,
  219. char const *path,
  220. char const *type,
  221. char const *policyPath,
  222. char const *authValue);
  223. TSS2_RC Fapi_CreateKey_Finish(
  224. FAPI_CONTEXT *context);
  225. TSS2_RC Fapi_Sign(
  226. FAPI_CONTEXT *context,
  227. char const *keyPath,
  228. char const *padding,
  229. uint8_t const *digest,
  230. size_t digestSize,
  231. uint8_t **signature,
  232. size_t *signatureSize,
  233. char **publicKey,
  234. char **certificate);
  235. TSS2_RC Fapi_Sign_Async(
  236. FAPI_CONTEXT *context,
  237. char const *keyPath,
  238. char const *padding,
  239. uint8_t const *digest,
  240. size_t digestSize);
  241. TSS2_RC Fapi_Sign_Finish(
  242. FAPI_CONTEXT *context,
  243. uint8_t **signature,
  244. size_t *signatureSize,
  245. char **publicKey,
  246. char **certificate);
  247. TSS2_RC Fapi_VerifySignature(
  248. FAPI_CONTEXT *context,
  249. char const *keyPath,
  250. uint8_t const *digest,
  251. size_t digestSize,
  252. uint8_t const *signature,
  253. size_t signatureSize);
  254. TSS2_RC Fapi_VerifySignature_Async(
  255. FAPI_CONTEXT *context,
  256. char const *keyPath,
  257. uint8_t const *digest,
  258. size_t digestSize,
  259. uint8_t const *signature,
  260. size_t signatureSize);
  261. TSS2_RC Fapi_VerifySignature_Finish(
  262. FAPI_CONTEXT *context);
  263. TSS2_RC Fapi_Encrypt(
  264. FAPI_CONTEXT *context,
  265. char const *keyPath,
  266. uint8_t const *plainText,
  267. size_t plainTextSize,
  268. uint8_t **cipherText,
  269. size_t *cipherTextSize);
  270. TSS2_RC Fapi_Encrypt_Async(
  271. FAPI_CONTEXT *context,
  272. char const *keyPath,
  273. uint8_t const *plainText,
  274. size_t plainTextSize);
  275. TSS2_RC Fapi_Encrypt_Finish(
  276. FAPI_CONTEXT *context,
  277. uint8_t **cipherText,
  278. size_t *cipherTextSize );
  279. TSS2_RC Fapi_Decrypt(
  280. FAPI_CONTEXT *context,
  281. char const *keyPath,
  282. uint8_t const *cipherText,
  283. size_t cipherTextSize,
  284. uint8_t **plainText,
  285. size_t *plainTextSize);
  286. TSS2_RC Fapi_Decrypt_Async(
  287. FAPI_CONTEXT *context,
  288. char const *keyPath,
  289. uint8_t const *cipherText,
  290. size_t cipherTextSize);
  291. TSS2_RC Fapi_Decrypt_Finish(
  292. FAPI_CONTEXT *context,
  293. uint8_t **plainText,
  294. size_t *plainTextSize);
  295. TSS2_RC Fapi_SetCertificate(
  296. FAPI_CONTEXT *context,
  297. char const *path,
  298. char const *x509certData);
  299. TSS2_RC Fapi_SetCertificate_Async(
  300. FAPI_CONTEXT *context,
  301. char const *path,
  302. char const *x509certData);
  303. TSS2_RC Fapi_SetCertificate_Finish(
  304. FAPI_CONTEXT *context);
  305. TSS2_RC Fapi_GetCertificate(
  306. FAPI_CONTEXT *context,
  307. char const *path,
  308. char **x509certData);
  309. TSS2_RC Fapi_GetCertificate_Async(
  310. FAPI_CONTEXT *context,
  311. char const *path);
  312. TSS2_RC Fapi_GetCertificate_Finish(
  313. FAPI_CONTEXT *context,
  314. char **x509certData);
  315. TSS2_RC Fapi_ExportKey(
  316. FAPI_CONTEXT *context,
  317. char const *pathOfKeyToDuplicate,
  318. char const *pathToPublicKeyOfNewParent,
  319. char **exportedData);
  320. TSS2_RC Fapi_ExportKey_Async(
  321. FAPI_CONTEXT *context,
  322. char const *pathOfKeyToDuplicate,
  323. char const *pathToPublicKeyOfNewParent);
  324. TSS2_RC Fapi_ExportKey_Finish(
  325. FAPI_CONTEXT *context,
  326. char **exportedData);
  327. /* Seal functions */
  328. TSS2_RC Fapi_CreateSeal(
  329. FAPI_CONTEXT *context,
  330. char const *path,
  331. char const *type,
  332. size_t size,
  333. char const *policyPath,
  334. char const *authValue,
  335. uint8_t const *data);
  336. TSS2_RC Fapi_CreateSeal_Async(
  337. FAPI_CONTEXT *context,
  338. char const *path,
  339. char const *type,
  340. size_t size,
  341. char const *policyPath,
  342. char const *authValue,
  343. uint8_t const *data);
  344. TSS2_RC Fapi_CreateSeal_Finish(
  345. FAPI_CONTEXT *context);
  346. TSS2_RC Fapi_Unseal(
  347. FAPI_CONTEXT *context,
  348. char const *path,
  349. uint8_t **data,
  350. size_t *size);
  351. TSS2_RC Fapi_Unseal_Async(
  352. FAPI_CONTEXT *context,
  353. char const *path);
  354. TSS2_RC Fapi_Unseal_Finish(
  355. FAPI_CONTEXT *context,
  356. uint8_t **data,
  357. size_t *size);
  358. /* Policy functions */
  359. TSS2_RC Fapi_ExportPolicy(
  360. FAPI_CONTEXT *context,
  361. char const *path,
  362. char **jsonPolicy);
  363. TSS2_RC Fapi_ExportPolicy_Async(
  364. FAPI_CONTEXT *context,
  365. char const *path);
  366. TSS2_RC Fapi_ExportPolicy_Finish(
  367. FAPI_CONTEXT *context,
  368. char **jsonPolicy);
  369. TSS2_RC Fapi_AuthorizePolicy(
  370. FAPI_CONTEXT *context,
  371. char const *policyPath,
  372. char const *keyPath,
  373. uint8_t const *policyRef,
  374. size_t policyRefSize);
  375. TSS2_RC Fapi_AuthorizePolicy_Async(
  376. FAPI_CONTEXT *context,
  377. char const *policyPath,
  378. char const *keyPath,
  379. uint8_t const *policyRef,
  380. size_t policyRefSize);
  381. TSS2_RC Fapi_AuthorizePolicy_Finish(
  382. FAPI_CONTEXT *context);
  383. TSS2_RC Fapi_WriteAuthorizeNv(
  384. FAPI_CONTEXT *context,
  385. char const *nvPath,
  386. char const *policyPath);
  387. TSS2_RC Fapi_WriteAuthorizeNv_Async(
  388. FAPI_CONTEXT *context,
  389. char const *nvPath,
  390. char const *policyPath);
  391. TSS2_RC Fapi_WriteAuthorizeNv_Finish(
  392. FAPI_CONTEXT *context);
  393. /* Attestation functions */
  394. TSS2_RC Fapi_PcrRead(
  395. FAPI_CONTEXT *context,
  396. uint32_t pcrIndex,
  397. uint8_t **pcrValue,
  398. size_t *pcrValueSize,
  399. char **pcrLog);
  400. TSS2_RC Fapi_PcrRead_Async(
  401. FAPI_CONTEXT *context,
  402. uint32_t pcrIndex);
  403. TSS2_RC Fapi_PcrRead_Finish(
  404. FAPI_CONTEXT *context,
  405. uint8_t **pcrValue,
  406. size_t *pcrValueSize,
  407. char **pcrLog);
  408. TSS2_RC Fapi_PcrExtend(
  409. FAPI_CONTEXT *context,
  410. uint32_t pcr,
  411. uint8_t const *data,
  412. size_t dataSize,
  413. char const *logData);
  414. TSS2_RC Fapi_PcrExtend_Async(
  415. FAPI_CONTEXT *context,
  416. uint32_t pcr,
  417. uint8_t const *data,
  418. size_t dataSize,
  419. char const *logData);
  420. TSS2_RC Fapi_PcrExtend_Finish(
  421. FAPI_CONTEXT *context);
  422. TSS2_RC Fapi_Quote(
  423. FAPI_CONTEXT *context,
  424. uint32_t *pcrList,
  425. size_t pcrListSize,
  426. char const *keyPath,
  427. char const *quoteType,
  428. uint8_t const *qualifyingData,
  429. size_t qualifyingDataSize,
  430. char **quoteInfo,
  431. uint8_t **signature,
  432. size_t *signatureSize,
  433. char **pcrLog,
  434. char **certificate);
  435. TSS2_RC Fapi_Quote_Async(
  436. FAPI_CONTEXT *context,
  437. uint32_t *pcrList,
  438. size_t pcrListSize,
  439. char const *keyPath,
  440. char const *quoteType,
  441. uint8_t const *qualifyingData,
  442. size_t qualifyingDataSize);
  443. TSS2_RC Fapi_Quote_Finish(
  444. FAPI_CONTEXT *context,
  445. char **quoteInfo,
  446. uint8_t **signature,
  447. size_t *signatureSize,
  448. char **pcrLog,
  449. char **certificate);
  450. TSS2_RC Fapi_VerifyQuote(
  451. FAPI_CONTEXT *context,
  452. char const *publicKeyPath,
  453. uint8_t const *qualifyingData,
  454. size_t qualifyingDataSize,
  455. char const *quoteInfo,
  456. uint8_t const *signature,
  457. size_t signatureSize,
  458. char const *pcrLog);
  459. TSS2_RC Fapi_VerifyQuote_Async(
  460. FAPI_CONTEXT *context,
  461. char const *publicKeyPath,
  462. uint8_t const *qualifyingData,
  463. size_t qualifyingDataSize,
  464. char const *quoteInfo,
  465. uint8_t const *signature,
  466. size_t signatureSize,
  467. char const *pcrLog);
  468. TSS2_RC Fapi_VerifyQuote_Finish(
  469. FAPI_CONTEXT *context);
  470. /* NV functions */
  471. TSS2_RC Fapi_CreateNv(
  472. FAPI_CONTEXT *context,
  473. char const *path,
  474. char const *type,
  475. size_t size,
  476. char const *policyPath,
  477. char const *authValue);
  478. TSS2_RC Fapi_CreateNv_Async(
  479. FAPI_CONTEXT *context,
  480. char const *path,
  481. char const *type,
  482. size_t size,
  483. char const *policyPath,
  484. char const *authValue);
  485. TSS2_RC Fapi_CreateNv_Finish(
  486. FAPI_CONTEXT *context);
  487. TSS2_RC Fapi_NvRead(
  488. FAPI_CONTEXT *context,
  489. char const *path,
  490. uint8_t **data,
  491. size_t *size,
  492. char **logData);
  493. TSS2_RC Fapi_NvRead_Async(
  494. FAPI_CONTEXT *context,
  495. char const *path);
  496. TSS2_RC Fapi_NvRead_Finish(
  497. FAPI_CONTEXT *context,
  498. uint8_t **data,
  499. size_t *size,
  500. char **logData);
  501. TSS2_RC Fapi_NvWrite(
  502. FAPI_CONTEXT *context,
  503. char const *path,
  504. uint8_t const *data,
  505. size_t size);
  506. TSS2_RC Fapi_NvWrite_Async(
  507. FAPI_CONTEXT *context,
  508. char const *path,
  509. uint8_t const *data,
  510. size_t size);
  511. TSS2_RC Fapi_NvWrite_Finish(
  512. FAPI_CONTEXT *context);
  513. TSS2_RC Fapi_NvExtend(
  514. FAPI_CONTEXT *context,
  515. char const *path,
  516. uint8_t const *data,
  517. size_t size,
  518. char const *logData);
  519. TSS2_RC Fapi_NvExtend_Async(
  520. FAPI_CONTEXT *context,
  521. char const *path,
  522. uint8_t const *data,
  523. size_t size,
  524. char const *logData);
  525. TSS2_RC Fapi_NvExtend_Finish(
  526. FAPI_CONTEXT *context);
  527. TSS2_RC Fapi_NvIncrement(
  528. FAPI_CONTEXT *context,
  529. char const *path);
  530. TSS2_RC Fapi_NvIncrement_Async(
  531. FAPI_CONTEXT *context,
  532. char const *path);
  533. TSS2_RC Fapi_NvIncrement_Finish(
  534. FAPI_CONTEXT *context);
  535. TSS2_RC Fapi_NvSetBits(
  536. FAPI_CONTEXT *context,
  537. char const *path,
  538. uint64_t bitmap);
  539. TSS2_RC Fapi_NvSetBits_Async(
  540. FAPI_CONTEXT *context,
  541. char const *path,
  542. uint64_t bitmap);
  543. TSS2_RC Fapi_NvSetBits_Finish(
  544. FAPI_CONTEXT *context);
  545. typedef TSS2_RC (*Fapi_CB_Auth)(
  546. char const *objectPath,
  547. char const *description,
  548. char const **auth,
  549. void *userData);
  550. TSS2_RC Fapi_SetAuthCB(
  551. FAPI_CONTEXT *context,
  552. Fapi_CB_Auth callback,
  553. void *userData);
  554. typedef TSS2_RC (*Fapi_CB_Branch)(
  555. char const *objectPath,
  556. char const *description,
  557. char const **branchNames,
  558. size_t numBranches,
  559. size_t *selectedBranch,
  560. void *userData);
  561. TSS2_RC Fapi_SetBranchCB(
  562. FAPI_CONTEXT *context,
  563. Fapi_CB_Branch callback,
  564. void *userData);
  565. typedef TSS2_RC (*Fapi_CB_Sign)(
  566. char const *objectPath,
  567. char const *description,
  568. char const *publicKey,
  569. char const *publicKeyHint,
  570. uint32_t hashAlg,
  571. uint8_t const *dataToSign,
  572. size_t dataToSignSize,
  573. uint8_t const **signature,
  574. size_t *signatureSize,
  575. void *userData);
  576. TSS2_RC Fapi_SetSignCB(
  577. FAPI_CONTEXT *context,
  578. Fapi_CB_Sign callback,
  579. void *userData);
  580. typedef TSS2_RC (*Fapi_CB_PolicyAction)(
  581. char const *objectPath,
  582. char const *action,
  583. void *userData);
  584. TSS2_RC Fapi_SetPolicyActionCB(
  585. FAPI_CONTEXT *context,
  586. Fapi_CB_PolicyAction callback,
  587. void *userData);
  588. #ifdef __cplusplus
  589. }
  590. #endif
  591. #endif /* TSS2_FAPI_H */