tpm2-tss  3.2.0
TPM Software stack 2.0 TCG spec compliant implementation
fapi_int.h
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*******************************************************************************
3  * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
4  * All rights reserved.
5  ******************************************************************************/
6 #ifndef FAPI_INT_H
7 #define FAPI_INT_H
8 
9 #include "fapi_types.h"
10 #include "ifapi_policy_types.h"
11 #include "ifapi_policy_instantiate.h"
12 #include "ifapi_eventlog.h"
13 #include "ifapi_io.h"
14 #include "ifapi_profiles.h"
15 #include "ifapi_macros.h"
16 #include "ifapi_keystore.h"
17 #include "ifapi_policy_store.h"
18 #include "ifapi_config.h"
19 
20 #include <stdlib.h>
21 #include <stdint.h>
22 #include <unistd.h>
23 #include <string.h>
24 #include <inttypes.h>
25 #include <stdarg.h>
26 #include <stdbool.h>
27 #include <sys/stat.h>
28 #include <stdio.h>
29 #include <errno.h>
30 #include <fcntl.h>
31 #include <json-c/json.h>
32 #include <poll.h>
33 
34 #include "tss2_esys.h"
35 #include "tss2_fapi.h"
36 
37 #define DEFAULT_LOG_DIR "/run/tpm2_tss"
38 #define IFAPI_PCR_LOG_FILE "pcr.log"
39 #define IFAPI_OBJECT_TYPE ".json"
40 #define IFAPI_OBJECT_FILE "object.json"
41 #define IFAPI_SRK_KEY_PATH "/HS/SRK"
42 #define IFAPI_EK_KEY_PATH "/HE/EK"
43 #define IFAPI_HS_PATH "/HS"
44 #define IFAPI_HE_PATH "/HE"
45 #define IFAPI_HN_PATH "/HN"
46 #define IFAPI_LOCKOUT_PATH "/LOCKOUT"
47 #define IFAPI_SRK_OBJECT_PATH "/HS/SRK/object.json"
48 #define IFAPI_HS_OBJECT_PATH "/HS/object.json"
49 
50 typedef UINT32 TSS2_KEY_TYPE;
51 #define TSS2_SRK 2
52 #define TSS2_EK 3
53 #define MIN_EK_CERT_HANDLE 0x1c00000
54 #define MIN_PLATFORM_CERT_HANDLE 0x01C08000
55 #define MAX_PLATFORM_CERT_HANDLE 0x01C0FFFF
56 
57 typedef UINT8 IFAPI_SESSION_TYPE;
58 #define IFAPI_SESSION_GENEK 0x01
59 #define IFAPI_SESSION1 0x02
60 #define IFAPI_SESSION2 0x04
61 
62 #define IFAPI_POLICY_PATH "policy"
63 #define IFAPI_NV_PATH "nv"
64 #define IFAPI_EXT_PATH "ext"
65 #define IFAPI_FILE_DELIM "/"
66 #define IFAPI_LIST_DELIM ":"
67 #define IFAPI_FILE_DELIM_CHAR '/'
68 #define IFAPI_PUB_KEY_DIR "ext"
69 #define IFAPI_POLICY_DIR "policy"
70 #define IFAPI_PEM_PUBLIC_STRING "-----BEGIN PUBLIC KEY-----"
71 #define IFAPI_PEM_PRIVATE_KEY "-----PRIVATE KEY-----"
72 #define IFAPI_JSON_TAG_POLICY "policy"
73 #define IFAPI_JSON_TAG_OBJECT_TYPE "objectType"
74 #define IFAPI_JSON_TAG_DUPLICATE "public_parent"
75 
76 #define FAPI_WRITE W_OK
77 #define FAPI_READ R_OK
78 
79 #if TPM2_MAX_NV_BUFFER_SIZE > TPM2_MAX_DIGEST_BUFFER
80 #define IFAPI_MAX_BUFFER_SIZE TPM2_MAX_NV_BUFFER_SIZE
81 #else
82 #define IFAPI_MAX_BUFFER_SIZE TPM2_MAX_DIGEST_BUFFER
83 #endif
84 
85 #define IFAPI_FLUSH_PARENT true
86 #define IFAPI_NOT_FLUSH_PARENT false
87 
88 /* Definition of FAPI buffer for TPM2B transmission */
89 typedef struct {
90  UINT16 size;
91  BYTE buffer[IFAPI_MAX_BUFFER_SIZE];
93 
94 #define OSSL_FREE(S,TYPE) if((S) != NULL) {TYPE##_free((void*) (S)); (S)=NULL;}
95 
96 
97 #define FAPI_COPY_DIGEST(dest_buffer, dest_size, src, src_size) \
98  if (src_size > sizeof(TPMU_HA)) { \
99  return_error(TSS2_FAPI_RC_BAD_VALUE, "Digest size too large."); \
100  } \
101  memcpy(dest_buffer, (src), (src_size)); \
102  dest_size = src_size
103 
104 #define HASH_UPDATE(CONTEXT, TYPE, OBJECT, R, LABEL) \
105  { \
106  uint8_t buffer[sizeof(TYPE)]; \
107  size_t offset = 0; \
108  R = Tss2_MU_ ## TYPE ## _Marshal(OBJECT, \
109  &buffer[0], sizeof(TYPE), &offset); \
110  goto_if_error(R, "Marshal for hash update", LABEL); \
111  R = ifapi_crypto_hash_update(CONTEXT, \
112  (const uint8_t *) &buffer[0], \
113  offset); \
114  goto_if_error(R, "crypto hash update", LABEL); }
115 
116 #define HASH_UPDATE_BUFFER(CONTEXT, BUFFER, SIZE, R, LABEL) \
117  R = ifapi_crypto_hash_update(CONTEXT, \
118  (const uint8_t *) BUFFER, SIZE) ; \
119  goto_if_error(R, "crypto hash update", LABEL);
120 
121 #define FAPI_SYNC(r,msg,label, ...) \
122  if (base_rc(r) == TSS2_BASE_RC_TRY_AGAIN) \
123  return TSS2_FAPI_RC_TRY_AGAIN; \
124  if (r != TSS2_RC_SUCCESS) { \
125  LOG_ERROR(TPM2_ERROR_FORMAT " " msg, TPM2_ERROR_TEXT(r), ## __VA_ARGS__); \
126  goto label; \
127  }
128 
130 enum IFAPI_GET_CERT_STATE {
131  GET_CERT_INIT = 0,
132  GET_CERT_WAIT_FOR_GET_CAP,
133  GET_CERT_GET_CERT_NV,
134  GET_CERT_GET_CERT_NV_FINISH,
135  GET_CERT_GET_CERT_READ_PUBLIC,
136  GET_CERT_GET_CERT_READ_HIERARCHY,
137  GET_CERT_READ_CERT
138 };
139 
141 enum IFAPI_CLEANUP_STATE {
142  CLEANUP_INIT = 0,
143  CLEANUP_SESSION1,
144  CLEANUP_SESSION2,
145  CLEANUP_SRK
146 };
147 
148 #define IFAPI_MAX_CAP_INFO 17
149 
150 typedef struct {
151  char *description;
152  TPMS_CAPABILITY_DATA *capability;
154 
155 typedef struct {
156  char *fapi_version;
158  IFAPI_CAP_INFO cap[IFAPI_MAX_CAP_INFO];
159 } IFAPI_INFO;
160 
163 typedef struct {
164  TPMI_YES_NO system;
166  TPMI_YES_NO persistent;
168  TPM2B_PUBLIC public;
170 
173 typedef struct {
174  TPMI_YES_NO system;
176  TPMI_RH_HIERARCHY hierarchy;
177  char *description;
178  TPMS_NV_PUBLIC public;
180 
183 typedef struct {
184  TPMT_SIG_SCHEME sig_scheme;
185  TPMS_ATTEST attest;
187 
188 
190 enum _FAPI_STATE_NV_READ {
191  NV_READ_INIT = 0,
192  NV_READ_AUTHORIZE,
193  NV_READ_AUTHORIZE2,
194  NV_READ_AUTH_SENT
195 };
196 
198 enum _FAPI_STATE_NV_WRITE {
199  NV2_WRITE_INIT = 0,
200  NV2_WRITE_READ,
201  NV2_WRITE_WAIT_FOR_SESSSION,
202  NV2_WRITE_NULL_AUTH_SENT,
203  NV2_WRITE_AUTH_SENT,
204  NV2_WRITE_WRITE_PREPARE,
205  NV2_WRITE_WRITE,
206  NV2_WRITE_AUTHORIZE,
207  NV2_WRITE_AUTHORIZE2
208 };
209 
212 typedef struct {
213  char *nvPath ;
214  char *policyPath;
215  TPM2B_NV_PUBLIC public;
218  size_t numBytes;
219  UINT16 bytesRequested;
220  UINT16 offset;
221  size_t data_idx;
222  const uint8_t *data;
223  uint8_t *rdata;
224  size_t size;
227  TPM2B_AUTH auth;
230  uint64_t bitmap;
233  enum _FAPI_STATE_NV_READ nv_read_state;
234  enum _FAPI_STATE_NV_WRITE nv_write_state;
235  uint8_t *write_data;
236  char *logData;
237  json_object *jso_event_log;
238  TPMI_RH_NV_INDEX maxNvIndex;
240  TPML_DIGEST_VALUES digests;
242 } IFAPI_NV_Cmds;
243 
246 typedef struct {
247  TPMS_CAPABILITY_DATA *capability; /* TPM capability data to check available algs */
248  char **pathlist;
249  size_t numPaths;
252  size_t primary_idx;
253  size_t path_idx;
256 
259 typedef struct {
260  TPML_DIGEST_VALUES digest_list;
261  TPML_DIGEST_VALUES *event_digests;
263  TPML_PCR_SELECTION pcr_selection;
264  TPML_PCR_SELECTION *pcr_selection_out;
265  UINT32 update_count;
266  TPML_DIGEST *pcrValues; /* The values returned by PCR_Read */
267  TPM2_HANDLE pcrIndex;
268  TPMI_ALG_HASH hashAlg;
269  const char *keyPath;
272  TPMS_CAPABILITY_DATA *capabilityData; /* TPM capability data to check available algs */
273  uint32_t *pcrList;
274  size_t pcrListSize;
275  TPM2B_DATA qualifyingData;
276  uint8_t const *eventData;
277  TPM2B_EVENT event;
278  size_t eventDataSize;
279  uint32_t const *hashAlgs;
280  uint32_t *hashAlgs2;
281  size_t numHashAlgs;
282  char const *quoteInfo;
283  TPM2B_ATTEST *tpm_quoted;
284  TPMT_SIGNATURE *tpm_signature;
285  uint8_t *signature;
286  size_t signatureSize;
287  char const *logData;
288  char *pcrLog;
289  IFAPI_EVENT pcr_event;
290  json_object *event_list;
291  FAPI_QUOTE_INFO fapi_quote_info;
292  uint8_t *pcrValue;
293  size_t pcrValueSize;
294  char *event_log_file;
295 } IFAPI_PCR;
296 
299 typedef struct {
300  char *description;
303  char *object_path;
304  json_object *jso;
305  char *jso_string;
307 
310 typedef struct {
311  size_t numBytes;
312  size_t idx;
313  UINT16 bytesRequested;
314  uint8_t *data;
315  uint8_t *ret_data;
317 
320 typedef struct {
321  const char *pem_cert;
322  char *pem_cert_dup;
323  const char *key_path;
327 
329 enum IFAPI_KEY_CREATE_STATE {
330  KEY_CREATE_INIT = 0,
331  KEY_CREATE_WAIT_FOR_SESSION,
332  KEY_CREATE_WAIT_FOR_PARENT,
333  KEY_CREATE_AUTH_SENT,
334  KEY_CREATE_WAIT_FOR_LOAD_AUTHORIZATION,
335  KEY_CREATE_WAIT_FOR_KEY,
336  KEY_CREATE_WAIT_FOR_HIERARCHY,
337  KEY_CREATE_AUTHORIZE_HIERARCHY,
338  KEY_CREATE_WAIT_FOR_EVICT_CONTROL,
339  KEY_CREATE_WRITE_PREPARE,
340  KEY_CREATE_WRITE,
341  KEY_CREATE_FLUSH1,
342  KEY_CREATE_FLUSH2,
343  KEY_CREATE_CALCULATE_POLICY,
344  KEY_CREATE_PRIMARY_CALCULATE_POLICY,
345  KEY_CREATE_WAIT_FOR_AUTHORIZATION,
346  KEY_CREATE_CLEANUP,
347  KEY_CREATE_WAIT_FOR_RANDOM,
348  KEY_CREATE_PRIMARY_INIT,
349  KEY_CREATE_PRIMARY_WAIT_FOR_SESSION,
350  KEY_CREATE_PRIMARY_WAIT_FOR_HIERARCHY,
351  KEY_CREATE_PRIMARY_WAIT_FOR_AUTHORIZE1,
352  KEY_CREATE_PRIMARY_WAIT_FOR_AUTHORIZE2,
353  KEY_CREATE_PRIMARY_WAIT_FOR_PRIMARY,
354  KEY_CREATE_PRIMARY_WAIT_FOR_EVICT_CONTROL,
355  KEY_CREATE_PRIMARY_FLUSH,
356  KEY_CREATE_PRIMARY_WRITE_PREPARE,
357  KEY_CREATE_PRIMARY_WRITE,
358  KEY_CREATE_PRIMARY_CLEANUP
359 };
360 
363 typedef struct {
364  enum IFAPI_KEY_CREATE_STATE state;
365  const char *keyPath;
370  TPM2B_PUBLIC public;
372  TPM2B_SENSITIVE_CREATE inSensitive;
373  TPM2B_DATA outsideInfo;
374  TPML_PCR_SELECTION creationPCR;
375  ESYS_TR handle;
376  const char *authValue;
377  const char *policyPath;
378  const IFAPI_PROFILE *profile;
382 
385 typedef struct {
386  char const *keyPath;
387  uint8_t const *in_data;
388  size_t in_dataSize;
391  size_t numBytes;
392  size_t decrypt;
393  UINT16 bytesRequested;
394  TPMT_RSA_DECRYPT rsa_scheme;
395  ESYS_TR object_handle;
396  char *policy_path;
397  ESYS_TR auth_session;
398  const IFAPI_PROFILE *profile;
399  uint8_t *plainText;
400  size_t plainTextSize;
401  uint8_t *cipherText;
402  size_t cipherTextSize;
404 
406 enum FAPI_SIGN_STATE {
407  SIGN_INIT = 0,
408  SIGN_WAIT_FOR_SESSION,
409  SIGN_WAIT_FOR_KEY,
410  SIGN_AUTH_SENT,
411  SIGN_WAIT_FOR_FLUSH
412 };
413 
416 typedef struct {
417  enum FAPI_SIGN_STATE state;
418  const char *keyPath;
420  TPM2B_DIGEST digest;
421  TPMT_SIG_SCHEME scheme;
423  TPMT_SIGNATURE *tpm_signature;
424  TPMI_YES_NO decrypt;
425  TPMT_SIGNATURE *signature;
426  char const *padding;
427  char *certificate;
428  uint8_t *ret_signature;
429  size_t signatureSize;
430  char *publicKey;
432 
435 typedef struct {
436  const char *keyPath;
438  TPM2B_SENSITIVE_DATA *unseal_data;
439 } IFAPI_Unseal;
440 
441 
444 typedef struct {
445  TPMS_CAPABILITY_DATA *capability_data;
446  TPMS_CAPABILITY_DATA *fetched_data;
447  size_t idx_info_cap;
448  IFAPI_INFO info_obj;
449  UINT32 property_count;
450  UINT32 property;
451 } IFAPI_GetInfo;
452 
454 enum IFAPI_HIERACHY_AUTHORIZATION_STATE {
455  HIERARCHY_CHANGE_AUTH_INIT = 0,
456  HIERARCHY_CHANGE_AUTH_NULL_AUTH_SENT,
457  HIERARCHY_CHANGE_AUTH_AUTH_SENT
458 };
459 
461 enum IFAPI_HIERACHY_POLICY_AUTHORIZATION_STATE {
462  HIERARCHY_CHANGE_POLICY_INIT = 0,
463  HIERARCHY_CHANGE_POLICY_NULL_AUTH_SENT,
464  HIERARCHY_CHANGE_POLICY_AUTHORIZE,
465  HIERARCHY_CHANGE_POLICY_AUTH_SENT
466 };
467 
470 typedef struct {
471  const char *entityPath;
474  const char *authValue;
475  TPM2B_AUTH newAuthValue;
476  TPM2B_PRIVATE *newPrivate;
481 
484 typedef struct {
485  const char *policyPath;
486  const char *signingKeyPath;
487  TPM2B_DIGEST policyRef;
488  TPMS_POLICYAUTHORIZATION authorization;
490 
493 typedef struct {
494  const char *policyPath;
495  TPMI_ALG_HASH *hash_alg;
496  size_t hash_size;
497  size_t digest_idx;
499 
502 typedef struct {
510  TPM2B_PUBLIC public;
511  char **pathlist;
512  size_t numPaths;
514  size_t hiearchy_idx;
515  size_t path_idx;
517  TPM2B_SENSITIVE_CREATE inSensitive;
518  TPM2B_DATA outsideInfo;
519  TPML_PCR_SELECTION creationPCR;
520  ESYS_TR handle;
521  const char *authValueLockout;
522  const char *authValueEh;
523  const char *policyPathEh;
524  const char *authValueSh;
525  const char *policyPathSh;
526  size_t digest_idx;
527  size_t hash_size;
528  TPM2_HANDLE cert_nv_idx;
529  TPM2B_NV_PUBLIC *nvPublic;
530  ESYS_TR esys_nv_cert_handle;
531  char *pem_cert;
532  TPM2_ALG_ID cert_key_type;
533  size_t cert_count;
534  size_t cert_idx;
535  TPMS_CAPABILITY_DATA *capabilityData;
536  IFAPI_OBJECT hierarchy_object;
537  TPM2B_AUTH hierarchy_auth;
538  TPM2B_DIGEST policy_digest;
539  char *intermed_crt;
540  char *root_crt;
541  TPMA_PERMANENT auth_state;
542  ESYS_TR srk_esys_handle;
543  ESYS_TR ek_esys_handle;
544  ESYS_TR srk_tpm_handle;
545  ESYS_TR ek_tpm_handle;
546  bool srk_exists;
548 
551 typedef struct {
552  char *path;
554  IFAPI_OBJECT pkey_object;
555  TPM2B_SENSITIVE_CREATE inSensitive;
556  TPM2B_DATA outsideInfo;
557  TPML_PCR_SELECTION creationPCR;
558  ESYS_TR handle;
559  TPMI_DH_PERSISTENT persistent_handle;
560  TPMS_CAPABILITY_DATA *capabilityData;
562 
565 typedef struct {
566  const char *keyPath;
567  uint8_t const *signature;
568  size_t signatureSize;
569  uint8_t const *digest;
570  size_t digestSize;
571  IFAPI_OBJECT key_object;
573 
575 enum IFAPI_STATE_POLICY {
576  POLICY_INIT = 0,
577  POLICY_READ,
578  POLICY_READ_FINISH,
579  POLICY_INSTANTIATE_PREPARE,
580  POLICY_INSTANTIATE,
581  POLICY_EXECUTE,
582  POLICY_FLUSH
583 };
584 
585 typedef struct IFAPI_POLICY_EXEC_CTX IFAPI_POLICY_EXEC_CTX;
586 typedef struct IFAPI_POLICYUTIL_STACK IFAPI_POLICYUTIL_STACK;
587 
589 enum FAPI_CREATE_SESSION_STATE {
590  CREATE_SESSION_INIT = 0,
591  CREATE_SESSION,
592  WAIT_FOR_CREATE_SESSION
593 };
594 
597 typedef struct {
598  enum IFAPI_STATE_POLICY state;
599  struct TPMS_POLICY policy;
600  size_t digest_idx;
601  size_t hash_size;
602  char **pathlist;
603  TPMI_ALG_HASH hash_alg;
604  IFAPI_POLICY_EXEC_CTX *policy_stack;
607  IFAPI_POLICYUTIL_STACK *util_current_policy;
608  IFAPI_POLICYUTIL_STACK *policyutil_stack;
614  enum FAPI_CREATE_SESSION_STATE create_session_state;
615  char *path;
618 
620 enum IFAPI_STATE_FILE_SEARCH {
621  FSEARCH_INIT = 0,
622  FSEARCH_READ,
623  FSEARCH_OBJECT
624 };
625 
628 typedef struct {
629  enum IFAPI_STATE_FILE_SEARCH state;
630  char **pathlist;
631  size_t path_idx;
632  size_t numPaths;
633  char *current_path;
635 
637 enum _FAPI_STATE_LOAD_KEY {
638  LOAD_KEY_GET_PATH = 0,
639  LOAD_KEY_READ_KEY,
640  LOAD_KEY_WAIT_FOR_PRIMARY,
641  LOAD_KEY_LOAD_KEY,
642  LOAD_KEY_AUTH,
643  LOAD_KEY_AUTHORIZE
644 };
645 
648 typedef struct {
649  char const *pathOfKeyToDuplicate;
651  TPM2B_PUBLIC public_parent;
656  struct TPMS_POLICY policy;
657  ESYS_TR handle_ext_key;
658  char *exportedData;
660 
663 typedef struct {
664  char const *path;
668  TPMI_ALG_HASH hashAlg;
669  size_t profile_idx;
674 
677 typedef struct {
678  IFAPI_OBJECT object;
679  TPM2B_NAME parent_name;
680  IFAPI_OBJECT *parent_object;
681  IFAPI_OBJECT new_object;
682  char *parent_path;
683  char *out_path;
684  TPM2B_PRIVATE *private;
685  char *jso_string;
686  const IFAPI_PROFILE *profile;
688 
689 
692 typedef struct {
693  enum _FAPI_STATE_LOAD_KEY state;
695  NODE_OBJECT_T *key_list;
696  IFAPI_OBJECT auth_object;
697  size_t position;
698  ESYS_TR handle;
699  ESYS_TR parent_handle;
700  bool parent_handle_persistent;
701  IFAPI_OBJECT *key_object;
702  char *key_path;
703 } IFAPI_LoadKey;
704 
707 typedef struct {
708  bool is_key;
710  ESYS_TR new_object_handle;
711  TPM2_HANDLE permanentHandle;
714  char *path;
716  char **pathlist;
717  size_t numPaths;
718  size_t path_idx;
720 
723 typedef struct {
724  uint8_t type;
725  uint8_t *data;
726  size_t length;
727  bool is_key;
729  ESYS_TR new_object_handle;
730  TPM2_HANDLE permanentHandle;
733  char *path;
737 
740 typedef struct {
741  const char *searchPath;
743 
749 typedef union {
750  IFAPI_Provision Provision;
751  IFAPI_Key_Create Key_Create;
752  IFAPI_Key_SetCertificate Key_SetCertificate;
753  IFAPI_Entity_ChangeAuth Entity_ChangeAuth;
754  IFAPI_Entity_Delete Entity_Delete;
755  IFAPI_GetEsysBlob GetEsysBlob;
756  IFAPI_Entities_List Entities_List;
757  IFAPI_Key_VerifySignature Key_VerifySignature;
758  IFAPI_Data_EncryptDecrypt Data_EncryptDecrypt;
759  IFAPI_PCR pcr;
760  IFAPI_INITIALIZE Initialize;
761  IFAPI_Path_SetDescription path_set_info;
762  IFAPI_Fapi_AuthorizePolicy Policy_AuthorizeNewPolicy;
763  IFAPI_api_WriteAuthorizeNv WriteAuthorizeNV;
764  IFAPI_ExportKey ExportKey;
765  IFAPI_ImportKey ImportKey;
766  IFAPI_Unseal Unseal;
767  IFAPI_GetInfo GetInfo;
768  IFAPI_ExportPolicy ExportPolicy;
770 
772 enum _FAPI_STATE_PRIMARY {
773  PRIMARY_INIT = 0,
774  PRIMARY_READ_KEY,
775  PRIMARY_READ_HIERARCHY,
776  PRIMARY_READ_HIERARCHY_FINISH,
777  PRIMARY_AUTHORIZE_HIERARCHY,
778  PRIMARY_GET_AUTH_VALUE,
779  PRIMARY_WAIT_FOR_PRIMARY,
780  PRIMARY_HAUTH_SENT,
781  PRIMARY_CREATED,
782  PRIMARY_VERIFY_PERSISTENT,
783  PRIMARY_GET_CAP
784 };
785 
787 enum _FAPI_STATE_SESSION {
788  SESSION_INIT = 0,
789  SESSION_WAIT_FOR_PRIMARY,
790  SESSION_CREATE_SESSION,
791  SESSION_WAIT_FOR_SESSION1,
792  SESSION_WAIT_FOR_SESSION2
793 };
794 
796 enum _FAPI_STATE_GET_RANDOM {
797  GET_RANDOM_INIT = 0,
798  GET_RANDOM_SENT
799 };
800 
802 enum _FAPI_FLUSH_STATE {
803  FLUSH_INIT = 0,
804  WAIT_FOR_FLUSH
805 };
806 
808 enum _FAPI_STATE {
809  _FAPI_STATE_INIT = 0,
812  _FAPI_STATE_INTERNALERROR,
814  INITIALIZE_READ,
815  INITIALIZE_INIT_TCTI,
816  INITIALIZE_GET_CAP,
817  INITIALIZE_WAIT_FOR_CAP,
818  INITIALIZE_READ_PROFILE,
819  INITIALIZE_READ_PROFILE_INIT,
820  INITIALIZE_READ_TIME,
821  INITIALIZE_CHECK_NULL_PRIMARY,
822  INITIALIZE_READ_NULL_PRIMARY,
823  PROVISION_WAIT_FOR_GET_CAP_AUTH_STATE,
824  PROVISION_WAIT_FOR_GET_CAP0,
825  PROVISION_WAIT_FOR_GET_CAP1,
826  PROVISION_INIT_GET_CAP2,
827  PROVISION_WAIT_FOR_GET_CAP2,
828  PROVISION_GET_CERT_NV,
829  PROVISION_GET_CERT_NV_FINISH,
830  PROVISION_GET_CERT_READ_PUBLIC,
831  PROVISION_READ_CERT,
832  PROVISION_PREPARE_READ_ROOT_CERT,
833  PROVISION_READ_ROOT_CERT,
834  PROVISION_INIT,
835  PROVISION_INIT_SRK,
836  PROVISION_WAIT_FOR_EK_SESSION,
837  PROVISION_WAIT_FOR_SRK_SESSION,
838  PROVISION_AUTH_EK_NO_AUTH_SENT,
839  PROVISION_AUTH_EK_AUTH_SENT,
840  PROVISION_AUTH_SRK_NO_AUTH_SENT,
841  PROVISION_AUTH_SRK_AUTH_SENT,
842  PROVISION_CLEAN_EK_SESSION,
843  PROVISION_CLEAN_SRK_SESSION,
844  PROVISION_EK_WRITE_PREPARE,
845  PROVISION_EK_WRITE,
846  PROVISION_EK_CHECK_CERT,
847  PROVISION_SRK_WRITE_PREPARE,
848  PROVISION_SRK_WRITE,
849  PROVISION_WAIT_FOR_EK_PERSISTENT,
850  PROVISION_WAIT_FOR_SRK_PERSISTENT,
851  PROVISION_CHANGE_LOCKOUT_AUTH,
852  PROVISION_CHANGE_EH_CHECK,
853  PROVISION_CHANGE_EH_AUTH,
854  PROVISION_CHANGE_SH_CHECK,
855  PROVISION_CHANGE_SH_AUTH,
856  PROVISION_EH_CHANGE_POLICY,
857  PROVISION_SH_CHANGE_POLICY,
858  PROVISION_LOCKOUT_CHANGE_POLICY,
859  PROVISION_FINISHED,
860  PROVISION_WRITE_SH,
861  PROVISION_WRITE_EH,
862  PROVISION_PREPARE_NULL,
863  PROVISION_WRITE_NULL,
864  PROVISION_WRITE_LOCKOUT,
865  PROVISION_WRITE_LOCKOUT_PARAM,
866  PROVISION_PREPARE_LOCKOUT_PARAM,
867  PROVISION_AUTHORIZE_LOCKOUT,
868  PROVISION_FLUSH_SRK,
869  PROVISION_FLUSH_EK,
870  PROVISION_CHECK_FOR_VENDOR_CERT,
871  PROVISION_GET_VENDOR,
872  PROVISION_GET_HIERARCHIES,
873  PROVISION_READ_HIERARCHIES,
874  PROVISION_READ_HIERARCHY,
875  PROVISION_WRITE_HIERARCHIES,
876  PROVISION_WRITE_HIERARCHY,
877  PROVISION_PREPARE_GET_CAP_AUTH_STATE,
878  PROVISION_SRK_GET_PERSISTENT_NAME,
879  PROVISION_CHECK_SRK_EVICT_CONTROL,
880 
881  KEY_CREATE,
882  KEY_CREATE_PRIMARY,
883 
884  CREATE_SEAL,
885 
886  KEY_SET_CERTIFICATE_READ,
887  KEY_SET_CERTIFICATE_WRITE,
888 
889  KEY_GET_CERTIFICATE_READ,
890 
891  GET_RANDOM_WAIT_FOR_SESSION,
892  GET_RANDOM_WAIT_FOR_RANDOM,
893  GET_RANDOM_CLEANUP,
894 
895  NV_CREATE_READ_PROFILE,
896  NV_CREATE_READ_HIERARCHY,
897  NV_CREATE_AUTHORIZE_HIERARCHY,
898  NV_CREATE_GET_INDEX,
899  NV_CREATE_FIND_INDEX,
900  NV_CREATE_WAIT_FOR_SESSION,
901 
902  NV_CREATE_AUTH_SENT,
903  NV_CREATE_WRITE,
904  NV_CREATE_CALCULATE_POLICY,
905 
906  NV_WRITE_READ,
907  NV_WRITE_WRITE,
908  NV_WRITE_CLEANUP,
909 
910  NV_EXTEND_READ,
911  NV_EXTEND_WAIT_FOR_SESSION,
912  NV_EXTEND_AUTHORIZE,
913  NV_EXTEND_AUTH_SENT,
914  NV_EXTEND_WRITE,
915  NV_EXTEND_CLEANUP,
916 
917  NV_INCREMENT_READ,
918  NV_INCREMENT_WAIT_FOR_SESSION,
919  NV_INCREMENT_AUTHORIZE,
920  NV_INCREMENT_AUTH_SENT,
921  NV_INCREMENT_WRITE,
922  NV_INCREMENT_CLEANUP,
923 
924  NV_SET_BITS_READ,
925  NV_SET_BITS_WAIT_FOR_SESSION,
926  NV_SET_BITS_AUTHORIZE,
927  NV_SET_BITS_AUTH_SENT,
928  NV_SET_BITS_WRITE,
929  NV_SET_BITS_CLEANUP,
930 
931  NV_READ_READ,
932  NV_READ_WAIT,
933  NV_READ_WAIT_FOR_SESSION,
934  NV_READ_CLEANUP,
935 
936  ENTITY_DELETE_GET_FILE,
937  ENTITY_DELETE_READ,
938  ENTITY_DELETE_WAIT_FOR_SESSION,
939  ENTITY_DELETE_NULL_AUTH_SENT_FOR_KEY,
940  ENTITY_DELETE_AUTH_SENT_FOR_KEY,
941  ENTITY_DELETE_NULL_AUTH_SENT_FOR_NV,
942  ENTITY_DELETE_AUTH_SENT_FOR_NV,
943  ENTITY_DELETE_KEY,
944  ENTITY_DELETE_KEY_WAIT_FOR_HIERARCHY,
945  ENTITY_DELETE_KEY_WAIT_FOR_AUTHORIZATION,
946  ENTITY_DELETE_AUTHORIZE_NV,
947  ENTITY_DELETE_FILE,
948  ENTITY_DELETE_POLICY,
949  ENTITY_DELETE_REMOVE_DIRS,
950  ENTITY_DELETE_CLEANUP,
951  ENTITY_DELETE_READ_HIERARCHY,
952 
953  GET_ESYS_BLOB_GET_FILE,
954  GET_ESYS_BLOB_READ,
955  GET_ESYS_BLOB_NULL_AUTH_SENT_FOR_KEY,
956  GET_ESYS_BLOB_AUTH_SENT_FOR_KEY,
957  GET_ESYS_BLOB_NULL_AUTH_SENT_FOR_NV,
958  GET_ESYS_BLOB_AUTH_SENT_FOR_NV,
959  GET_ESYS_BLOB_KEY,
960  GET_ESYS_BLOB_WAIT_FOR_KEY,
961  GET_ESYS_BLOB_WAIT_FOR_CONTEXT_SAVE,
962  GET_ESYS_BLOB_SERIALIZE,
963  GET_ESYS_BLOB_FILE,
964  GET_ESYS_BLOB_WAIT_FOR_FLUSH,
965  GET_ESYS_BLOB_CLEANUP,
966 
967  ENTITY_GET_TPM_BLOBS_READ,
968 
969  KEY_SIGN_WAIT_FOR_KEY,
970  KEY_SIGN_WAIT_FOR_SIGN,
971  KEY_SIGN_CLEANUP,
972 
973  ENTITY_CHANGE_AUTH_WAIT_FOR_SESSION,
974  ENTITY_CHANGE_AUTH_WAIT_FOR_KEY,
975  ENTITY_CHANGE_AUTH_AUTH_SENT,
976  ENTITY_CHANGE_AUTH_WAIT_FOR_FLUSH,
977  ENTITY_CHANGE_AUTH_WRITE_PREPARE,
978  ENTITY_CHANGE_AUTH_WRITE,
979  ENTITY_CHANGE_AUTH_WAIT_FOR_KEY_AUTH,
980  ENTITY_CHANGE_AUTH_WAIT_FOR_NV_READ,
981  ENTITY_CHANGE_AUTH_WAIT_FOR_NV_AUTH,
982  ENTITY_CHANGE_AUTH_WAIT_FOR_NV_CHANGE_AUTH,
983  ENTITY_CHANGE_AUTH_HIERARCHY_CHANGE_AUTH,
984  ENTITY_CHANGE_AUTH_HIERARCHY_READ,
985  ENTITY_CHANGE_AUTH_HIERARCHY_AUTHORIZE,
986  ENTITY_CHANGE_AUTH_CLEANUP,
987 
988  DATA_ENCRYPT_WAIT_FOR_PROFILE,
989  DATA_ENCRYPT_WAIT_FOR_SESSION,
990  DATA_ENCRYPT_WAIT_FOR_KEY,
991  DATA_ENCRYPT_WAIT_FOR_FLUSH,
992  DATA_ENCRYPT_WAIT_FOR_RSA_ENCRYPTION,
993  DATA_ENCRYPT_CLEAN,
994 
995  DATA_DECRYPT_WAIT_FOR_PROFILE,
996  DATA_DECRYPT_WAIT_FOR_SESSION,
997  DATA_DECRYPT_WAIT_FOR_KEY,
998  DATA_DECRYPT_WAIT_FOR_FLUSH,
999  DATA_DECRYPT_WAIT_FOR_RSA_DECRYPTION,
1000  DATA_DECRYPT_AUTHORIZE_KEY,
1001  DATA_DECRYPT_CLEANUP,
1002 
1003  PCR_EXTEND_WAIT_FOR_SESSION,
1004  PCR_EXTEND_WAIT_FOR_GET_CAP,
1005  PCR_EXTEND_READ_EVENT_LOG,
1006  PCR_EXTEND_APPEND_EVENT_LOG,
1007  PCR_EXTEND_FINISH,
1008  PCR_EXTEND_CLEANUP,
1009 
1010  PCR_READ_READ_PCR,
1011  PCR_READ_READ_EVENT_LIST,
1012 
1013  PCR_QUOTE_WAIT_FOR_GET_CAP,
1014  PCR_QUOTE_WAIT_FOR_SESSION,
1015  PCR_QUOTE_WAIT_FOR_KEY,
1016  PCR_QUOTE_AUTH_SENT,
1017  PCR_QUOTE_AUTHORIZE,
1018  PCR_QUOTE_WAIT_FOR_FLUSH,
1019  PCR_QUOTE_READ_EVENT_LIST,
1020  PCR_QUOTE_CLEANUP,
1021 
1022  PATH_SET_DESCRIPTION_READ,
1023  PATH_SET_DESCRIPTION_WRITE,
1024 
1025  PATH_GET_DESCRIPTION_READ,
1026 
1027  APP_DATA_SET_READ,
1028  APP_DATA_SET_WRITE,
1029 
1030  AUTHORIZE_NEW_CALCULATE_POLICY,
1031  AUTHORIZE_NEW_LOAD_KEY,
1032  AUTHORIZE_NEW_KEY_SIGN_POLICY,
1033  AUTHORIZE_NEW_WRITE_POLICY_PREPARE,
1034  AUTHORIZE_NEW_WRITE_POLICY,
1035  AUTHORIZE_NEW_CLEANUP,
1036 
1037  WRITE_AUTHORIZE_NV_READ_NV,
1038  WRITE_AUTHORIZE_NV_CALCULATE_POLICY,
1039  WRITE_AUTHORIZE_NV_WRITE_NV_RAM_PREPARE,
1040  WRITE_AUTHORIZE_NV_WRITE_NV_RAM,
1041  WRITE_AUTHORIZE_NV_WRITE_OBJCECT,
1042  WRITE_AUTHORIZE_NV_WRITE_POLICY_PREPARE,
1043  WRITE_AUTHORIZE_NV_WRITE_POLICY,
1044  WRITE_AUTHORIZE_NV_CLEANUP,
1045 
1046  EXPORT_KEY_READ_PUB_KEY,
1047  EXPORT_KEY_READ_PUB_KEY_PARENT,
1048  EXPORT_KEY_WAIT_FOR_KEY,
1049  EXPORT_KEY_WAIT_FOR_DUPLICATE,
1050  EXPORT_KEY_WAIT_FOR_EXT_KEY,
1051  EXPORT_KEY_WAIT_FOR_AUTHORIZATON,
1052  EXPORT_KEY_WAIT_FOR_FLUSH1,
1053  EXPORT_KEY_WAIT_FOR_FLUSH2,
1054  EXPORT_KEY_CLEANUP,
1055 
1056  IMPORT_KEY_WRITE_POLICY,
1057  IMPORT_KEY_WRITE,
1058  IMPORT_KEY_SEARCH,
1059  IMPORT_KEY_LOAD_PARENT,
1060  IMPORT_KEY_AUTHORIZE_PARENT,
1061  IMPORT_KEY_IMPORT,
1062  IMPORT_KEY_WAIT_FOR_FLUSH,
1063  IMPORT_KEY_WRITE_OBJECT_PREPARE,
1064  IMPORT_KEY_WRITE_OBJECT,
1065  IMPORT_KEY_CLEANUP,
1066  IMPORT_WAIT_FOR_SESSION,
1067  IMPORT_WAIT_FOR_PARENT,
1068  IMPORT_WAIT_FOR_AUTHORIZATION,
1069  IMPORT_WAIT_FOR_KEY,
1070  IMPORT_WRITE,
1071  IMPORT_FLUSH_PARENT,
1072  IMPORT_FLUSH_KEY,
1073  IMPORT_CLEANUP,
1074 
1075  UNSEAL_WAIT_FOR_KEY,
1076  UNSEAL_AUTHORIZE_OBJECT,
1077  UNSEAL_WAIT_FOR_UNSEAL,
1078  UNSEAL_WAIT_FOR_FLUSH,
1079  UNSEAL_CLEANUP,
1080 
1081  GET_PLATFORM_CERTIFICATE,
1082 
1083  POLICY_EXPORT_READ_OBJECT,
1084  POLICY_EXPORT_READ_OBJECT_FINISH,
1085  POLICY_EXPORT_READ_POLICY,
1086  POLICY_EXPORT_READ_POLICY_FINISH,
1087  POLICY_EXPORT_CHECK_DIGEST,
1088  POLICY_EXPORT_COMPUTE_POLICY_DIGEST,
1089 
1090  VERIFY_QUOTE_READ,
1091 
1092  GET_INFO_GET_CAP,
1093  GET_INFO_GET_CAP_MORE,
1094  GET_INFO_WAIT_FOR_CAP
1095 };
1096 
1104  Fapi_CB_Auth auth;
1105  void *authData;
1106  Fapi_CB_Branch branch;
1107  void *branchData;
1108  Fapi_CB_Sign sign;
1109  void *signData;
1110  Fapi_CB_PolicyAction action;
1111  void *actionData;
1112 };
1113 
1123  struct IFAPI_CALLBACKS callbacks;
1124  struct IFAPI_IO io;
1125  struct IFAPI_EVENTLOG eventlog;
1126  struct IFAPI_KEYSTORE keystore;
1127  struct IFAPI_POLICY_STORE pstore;
1128  struct IFAPI_PROFILES profiles;
1129  TPMS_TIME_INFO init_time;
1131  enum _FAPI_STATE state;
1132  enum _FAPI_STATE_PRIMARY primary_state;
1133  enum _FAPI_STATE_SESSION session_state;
1134  enum _FAPI_STATE_GET_RANDOM get_random_state;
1135  enum IFAPI_HIERACHY_AUTHORIZATION_STATE hierarchy_state;
1136  enum IFAPI_HIERACHY_POLICY_AUTHORIZATION_STATE hierarchy_policy_state;
1137  enum IFAPI_GET_CERT_STATE get_cert_state;
1138  enum _FAPI_FLUSH_STATE flush_object_state;
1139  enum IFAPI_CLEANUP_STATE cleanup_state;
1141  UINT32 nv_buffer_max;
1144  IFAPI_NV_Cmds nv_cmd;
1145  IFAPI_GetRandom get_random;
1146  IFAPI_CreatePrimary createPrimary;
1147  IFAPI_LoadKey loadKey;
1151  ESYS_TR ek_handle;
1152  ESYS_TR srk_handle;
1153  TPMI_DH_PERSISTENT ek_persistent;
1154  TPMI_DH_PERSISTENT srk_persistent;
1155  IFAPI_SESSION_TYPE session_flags;
1156  TPMA_SESSION session1_attribute_flags;
1157  TPMA_SESSION session2_attribute_flags;
1162  enum IFAPI_IO_STATE io_state;
1163  NODE_OBJECT_T *object_list;
1165  IFAPI_OBJECT *current_auth_object;
1166 };
1167 
1168 #define VENDOR_IFX 0x49465800
1169 #define VENDOR_INTC 0x494E5443
1170 #define VEDNOR_IBM 0x49424D20
1171 
1172 #endif /* FAPI_INT_H */
TPMI_RH_NV_INDEX maxNvIndex
Definition: fapi_int.h:238
IFAPI_OBJECT auth_object
Definition: fapi_int.h:712
const char * searchPath
Definition: fapi_int.h:741
size_t path_idx
Definition: fapi_int.h:515
size_t pcrListSize
Definition: fapi_int.h:274
Definition: fapi_int.h:416
char ** pathlist
Definition: fapi_int.h:716
size_t numPaths
Definition: fapi_int.h:512
IFAPI_OBJECT export_tree
Definition: fapi_int.h:653
Definition: ifapi_policy_types.h:128
UINT8_ARY appData
Definition: fapi_int.h:301
char * jso_string
Definition: fapi_int.h:305
struct TPML_POLICYELEMENTS * policy
Definition: ifapi_policy_types.h:295
Definition: ifapi_io.h:15
char ** pathlist
Definition: fapi_int.h:248
char * path
Definition: fapi_int.h:714
size_t path_idx
Definition: fapi_int.h:718
TPMI_YES_NO decrypt
Definition: fapi_int.h:424
Definition: fapi_int.h:502
Definition: fapi_int.h:1120
size_t profile_idx
Definition: fapi_int.h:669
Definition: fapi_types.h:24
uint8_t * rdata
Definition: fapi_int.h:223
ESYS_TR handle
Definition: fapi_int.h:270
IFAPI_FILE_SEARCH_CTX fsearch
Definition: fapi_int.h:1160
char * certificate
Definition: fapi_int.h:427
IFAPI_CMD_STATE cmd
Definition: fapi_int.h:1142
char const * path
Definition: fapi_int.h:664
Definition: ifapi_policyutil_execute.h:26
char * path
Definition: fapi_int.h:733
TPM2B_AUTH newAuthValue
Definition: fapi_int.h:475
Definition: fapi_int.h:740
ESYS_TR auth_index
Definition: fapi_int.h:713
Definition: fapi_int.h:163
IFAPI_OBJECT pub_key
Definition: fapi_int.h:654
size_t numBytes
Definition: fapi_int.h:391
Definition: ifapi_keystore.h:67
char const * pathToPublicKeyOfNewParent
Definition: fapi_int.h:650
ESYS_TR key_handle
Definition: fapi_int.h:390
UINT16 bytesRequested
Definition: fapi_int.h:313
char ** pathlist
Definition: fapi_int.h:630
uint8_t * data
Definition: fapi_int.h:725
IFAPI_OBJECT object
Definition: fapi_int.h:368
const char * keyPath
Definition: fapi_int.h:436
IFAPI_CONFIG fapi_config
Definition: fapi_int.h:157
IFAPI_OBJECT nv_object
Definition: fapi_int.h:226
TPMI_ALG_HASH hashAlg
Definition: fapi_int.h:668
ESYS_TR hierarchy_handle
Definition: fapi_int.h:479
IFAPI_OBJECT * key_object
Definition: fapi_int.h:735
IFAPI_POLICYUTIL_STACK * policyutil_stack
Definition: fapi_int.h:608
size_t hiearchy_idx
Definition: fapi_int.h:514
IFAPI_OBJECT object
Definition: fapi_int.h:666
Definition: ifapi_keystore.h:143
Definition: ifapi_policy_store.h:17
uint8_t type
Definition: fapi_int.h:724
UINT16 bytesRequested
Definition: fapi_int.h:393
size_t digest_idx
Definition: fapi_int.h:497
IFAPI_OBJECT * key_object
Definition: fapi_int.h:473
ESYS_TR auth_index
Definition: fapi_int.h:229
Definition: fapi_types.h:34
TPML_PCR_SELECTION * pcr_selection_out
Definition: fapi_int.h:264
ESYS_TR esys_auth_handle
Definition: fapi_int.h:216
IFAPI_OBJECT * hierarchy
Definition: fapi_int.h:507
TPMT_SIG_SCHEME scheme
Definition: fapi_int.h:421
Definition: fapi_int.h:628
IFAPI_KEY_TEMPLATE public_templ
Definition: fapi_int.h:369
Definition: esys_int.h:154
size_t numPaths
Definition: fapi_int.h:717
json_object * jso_event_log
Definition: fapi_int.h:237
Definition: fapi_int.h:565
char * logData
Definition: fapi_int.h:236
json_object * jso
Definition: fapi_int.h:304
TPMI_YES_NO persistent
Definition: fapi_int.h:166
TPMS_TIME_INFO init_time
Definition: fapi_int.h:1129
bool is_persistent_key
Definition: fapi_int.h:728
Definition: ifapi_profiles.h:51
bool is_key
Definition: fapi_int.h:727
IFAPI_POLICY_EXEC_CTX * policy_stack
Definition: fapi_int.h:604
Definition: fapi_int.h:677
bool is_key
Definition: fapi_int.h:708
Definition: fapi_int.h:1103
TPMS_CAPABILITY_DATA * capability_data
Definition: fapi_int.h:445
char * fapi_version
Definition: fapi_int.h:156
char const * padding
Definition: fapi_int.h:426
IFAPI_OBJECT * key_object
Definition: fapi_int.h:422
Definition: fapi_int.h:493
NODE_STR_T * path_list
Definition: fapi_int.h:366
IFAPI_OBJECT hierarchy_he
Definition: fapi_int.h:505
bool is_persistent_key
Definition: fapi_int.h:709
TPML_DIGEST_VALUES digest_list
Definition: fapi_int.h:260
size_t numPaths
Definition: fapi_int.h:249
bool skip_policy_computation
Definition: fapi_int.h:241
uint8_t * ret_data
Definition: fapi_int.h:315
char * object_path
Definition: fapi_int.h:303
IFAPI_OBJECT hierarchy
Definition: fapi_int.h:553
size_t hash_size
Definition: fapi_int.h:496
TPM2B_DATA qualifyingData
Definition: fapi_int.h:275
ESYS_TR PCR
Definition: fapi_int.h:262
IFAPI_KEY_TEMPLATE public_templ
Definition: fapi_int.h:509
char * description
Definition: fapi_int.h:300
Definition: fapi_int.h:648
size_t decrypt
Definition: fapi_int.h:392
UINT16 offset
Definition: fapi_int.h:220
IFAPI_POLICY_CTX policy
Definition: fapi_int.h:1159
UINT32 persistent_handle
Definition: fapi_int.h:167
const char * signingKeyPath
Definition: fapi_int.h:486
TPMT_SIG_SCHEME sig_scheme
Definition: fapi_int.h:184
size_t idx
Definition: fapi_int.h:312
TPM2_HANDLE permanentHandle
Definition: fapi_int.h:711
Definition: ifapi_policy_types.h:291
Definition: fapi_int.h:692
uint32_t ESYS_TR
Definition: tss2_esys.h:16
const char * key_path
Definition: fapi_int.h:323
Definition: fapi_int.h:212
size_t path_idx
Definition: fapi_int.h:253
TPMI_YES_NO system
Definition: fapi_int.h:164
ESYS_TR handle
Definition: fapi_int.h:419
TPM2_HANDLE permanentHandle
Definition: fapi_int.h:730
IFAPI_OBJECT hierarchy_hs
Definition: fapi_int.h:504
IFAPI_OBJECT * key_object
Definition: fapi_int.h:271
IFAPI_OBJECT hierarchy_lockout
Definition: fapi_int.h:503
TPML_DIGEST_VALUES digests
Definition: fapi_int.h:240
ESYS_TR esys_handle
Definition: fapi_int.h:217
Definition: fapi_int.h:597
Definition: ifapi_config.h:20
bool gen_sensitive_random
Definition: fapi_int.h:379
Definition: ifapi_eventlog.h:43
Definition: ifapi_policy_instantiate.h:67
UINT32 nv_buffer_max
Definition: fapi_int.h:1141
Definition: fapi_int.h:259
char ** pathlist
Definition: fapi_int.h:602
IFAPI_OBJECT key_object
Definition: fapi_int.h:325
ESYS_TR session
Definition: fapi_int.h:612
Definition: fapi_int.h:299
ESYS_TR policy_session
Definition: fapi_int.h:1150
ESYS_TR auth_index
Definition: fapi_int.h:732
TPM2B_AUTH auth
Definition: fapi_int.h:227
IFAPI_OBJECT dup_key
Definition: fapi_int.h:655
TPMS_CAPABILITY_DATA * fetched_data
Definition: fapi_int.h:446
size_t path_idx
Definition: fapi_int.h:631
Definition: fapi_int.h:246
NODE_STR_T * path_list
Definition: fapi_int.h:694
Definition: fapi_int.h:385
Definition: ifapi_keystore.h:116
Definition: fapi_int.h:723
NODE_STR_T * path_list
Definition: fapi_int.h:324
char * pem_cert_dup
Definition: fapi_int.h:322
IFAPI_OBJECT * hierarchies
Definition: fapi_int.h:516
IFAPI_OBJECT parent
Definition: fapi_int.h:367
Definition: fapi_int.h:173
TPML_PCR_SELECTION pcr_selection
Definition: fapi_int.h:263
Definition: fapi_int.h:310
const char * keyPath
Definition: fapi_int.h:365
Definition: fapi_int.h:470
ESYS_TR session1
Definition: fapi_int.h:1148
TPMT_SIGNATURE * signature
Definition: fapi_int.h:425
uint8_t * data
Definition: fapi_int.h:314
TPM2B_PRIVATE * newPrivate
Definition: fapi_int.h:476
UINT16 bytesRequested
Definition: fapi_int.h:219
size_t data_idx
Definition: fapi_int.h:221
IFAPI_OBJECT * key_object
Definition: fapi_int.h:389
char ** pathlist
Definition: fapi_int.h:511
size_t primary_idx
Definition: fapi_int.h:252
Definition: fapi_int.h:444
ESYS_TR session2
Definition: fapi_int.h:1149
IFAPI_NV_TEMPLATE public_templ
Definition: fapi_int.h:231
TPM2B_PUBLIC public_parent
Definition: fapi_int.h:651
char const * keyPath
Definition: fapi_int.h:386
size_t numPaths
Definition: fapi_int.h:632
uint8_t * ret_signature
Definition: fapi_int.h:428
ESYS_TR nv_index
Definition: fapi_int.h:478
IFAPI_OBJECT auth_object
Definition: fapi_int.h:225
const char * entityPath
Definition: fapi_int.h:471
TPMI_RH_HIERARCHY hierarchy
Definition: fapi_int.h:176
TPMT_SIGNATURE * tpm_signature
Definition: fapi_int.h:423
TPMI_YES_NO system
Definition: fapi_int.h:174
Definition: fapi_types.h:15
Definition: ifapi_policy_execute.h:129
TPM2B_DIGEST digest
Definition: fapi_int.h:420
bool compute_policy
Definition: fapi_int.h:670
IFAPI_MAX_BUFFER aux_data
Definition: fapi_int.h:1158
Definition: ifapi_profiles.h:15
char const * pathOfKeyToDuplicate
Definition: fapi_int.h:649
Definition: fapi_int.h:183
TPMS_ATTEST attest
Definition: fapi_int.h:185
uint64_t bitmap
Definition: fapi_int.h:230
Definition: fapi_int.h:320
IFAPI_OBJECT object
Definition: fapi_int.h:477
Definition: fapi_int.h:89
Definition: fapi_int.h:707
char * description
Definition: fapi_int.h:177
size_t numBytes
Definition: fapi_int.h:311
Definition: fapi_int.h:435
char * nvPath
Definition: fapi_int.h:213
char * policyPath
Definition: fapi_int.h:214
IFAPI_Key_Sign Key_Sign
Definition: fapi_int.h:1161
IFAPI_OBJECT object
Definition: fapi_int.h:715
Definition: fapi_int.h:749
IFAPI_NV nv_obj
Definition: fapi_int.h:228
TPMS_POLICY * hierarchy_policy
Definition: fapi_int.h:508
const char * authValue
Definition: fapi_int.h:474
IFAPI_OBJECT * object
Definition: fapi_int.h:437
const char * keyPath
Definition: fapi_int.h:418
size_t size
Definition: fapi_int.h:224
Definition: fapi_int.h:551
IFAPI_OBJECT * duplicate_key
Definition: fapi_int.h:1164
uint32_t * pcrList
Definition: fapi_int.h:273
IFAPI_OBJECT auth_object
Definition: fapi_int.h:731
const char * keyPath
Definition: fapi_int.h:269
TPML_DIGEST_VALUES * event_digests
Definition: fapi_int.h:261
size_t numHierarchyObjects
Definition: fapi_int.h:513
const uint8_t * data
Definition: fapi_int.h:222
IFAPI_CONFIG config
Definition: fapi_int.h:1140
IFAPI_OBJECT hierarchy
Definition: fapi_int.h:371
TPMI_ALG_HASH * hash_alg
Definition: fapi_int.h:495
size_t length
Definition: fapi_int.h:726
IFAPI_EVENT pcr_event
Definition: fapi_int.h:239
Definition: fapi_int.h:155
IFAPI_OBJECT * key_object
Definition: fapi_int.h:652
size_t numNullPrimaries
Definition: fapi_int.h:250
char * path
Definition: fapi_int.h:552
IFAPI_OBJECT object
Definition: fapi_int.h:302
Definition: fapi_int.h:663
TPMS_POLICY policy
Definition: fapi_int.h:667
const char * policyPath
Definition: fapi_int.h:494
Definition: fapi_int.h:363
Definition: fapi_int.h:150
Definition: fapi_int.h:484
const char * pem_cert
Definition: fapi_int.h:321
IFAPI_OBJECT hierarchy_hn
Definition: fapi_int.h:506
IFAPI_OBJECT * null_primaries
Definition: fapi_int.h:254
size_t numBytes
Definition: fapi_int.h:218
ESYS_CONTEXT * esys
Definition: fapi_int.h:1121
ESYS_TR handle
Definition: fapi_int.h:472
char * publicKey
Definition: fapi_int.h:430
IFAPI_OBJECT object
Definition: fapi_int.h:734
Definition: ifapi_eventlog.h:58
const char * policyPath
Definition: fapi_int.h:485