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
50typedef 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
57typedef 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 */
89typedef 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
130enum 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
141enum 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
150typedef struct {
151 char *description;
152 TPMS_CAPABILITY_DATA *capability;
154
155typedef struct {
158 IFAPI_CAP_INFO cap[IFAPI_MAX_CAP_INFO];
159} IFAPI_INFO;
160
163typedef struct {
164 TPMI_YES_NO system;
166 TPMI_YES_NO persistent;
168 TPM2B_PUBLIC public;
170
173typedef struct {
174 TPMI_YES_NO system;
176 TPMI_RH_HIERARCHY hierarchy;
178 TPMS_NV_PUBLIC public;
180
183typedef struct {
184 TPMT_SIG_SCHEME sig_scheme;
185 TPMS_ATTEST attest;
187
188
190enum _FAPI_STATE_NV_READ {
191 NV_READ_INIT = 0,
192 NV_READ_AUTHORIZE,
193 NV_READ_AUTHORIZE2,
194 NV_READ_AUTH_SENT
195};
196
198enum _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
212typedef struct {
213 char *nvPath ;
215 TPM2B_NV_PUBLIC public;
218 size_t numBytes;
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;
243
246typedef 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
259typedef 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
299typedef struct {
304 json_object *jso;
307
310typedef struct {
311 size_t numBytes;
312 size_t idx;
314 uint8_t *data;
315 uint8_t *ret_data;
317
320typedef struct {
321 const char *pem_cert;
323 const char *key_path;
327
329enum 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
363typedef 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
385typedef struct {
386 char const *keyPath;
387 uint8_t const *in_data;
388 size_t in_dataSize;
391 size_t numBytes;
392 size_t decrypt;
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
406enum 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
416typedef 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;
428 uint8_t *ret_signature;
429 size_t signatureSize;
430 char *publicKey;
432
435typedef struct {
436 const char *keyPath;
438 TPM2B_SENSITIVE_DATA *unseal_data;
440
441
444typedef 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;
452
454enum 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
461enum 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
470typedef struct {
471 const char *entityPath;
474 const char *authValue;
475 TPM2B_AUTH newAuthValue;
476 TPM2B_PRIVATE *newPrivate;
481
484typedef struct {
485 const char *policyPath;
486 const char *signingKeyPath;
487 TPM2B_DIGEST policyRef;
488 TPMS_POLICYAUTHORIZATION authorization;
490
493typedef struct {
494 const char *policyPath;
495 TPMI_ALG_HASH *hash_alg;
496 size_t hash_size;
497 size_t digest_idx;
499
502typedef struct {
510 TPM2B_PUBLIC public;
511 char **pathlist;
512 size_t numPaths;
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
551typedef 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
565typedef 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
575enum 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
587
589enum FAPI_CREATE_SESSION_STATE {
590 CREATE_SESSION_INIT = 0,
591 CREATE_SESSION,
592 WAIT_FOR_CREATE_SESSION
593};
594
597typedef 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;
607 IFAPI_POLICYUTIL_STACK *util_current_policy;
614 enum FAPI_CREATE_SESSION_STATE create_session_state;
615 char *path;
618
620enum IFAPI_STATE_FILE_SEARCH {
621 FSEARCH_INIT = 0,
622 FSEARCH_READ,
623 FSEARCH_OBJECT
624};
625
628typedef 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
637enum _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
648typedef struct {
651 TPM2B_PUBLIC public_parent;
656 struct TPMS_POLICY policy;
657 ESYS_TR handle_ext_key;
658 char *exportedData;
660
663typedef struct {
664 char const *path;
668 TPMI_ALG_HASH hashAlg;
669 size_t profile_idx;
674
677typedef 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
692typedef 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;
704
707typedef 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
723typedef 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
740typedef struct {
741 const char *searchPath;
743
749typedef 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
772enum _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
787enum _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
796enum _FAPI_STATE_GET_RANDOM {
797 GET_RANDOM_INIT = 0,
798 GET_RANDOM_SENT
799};
800
802enum _FAPI_FLUSH_STATE {
803 FLUSH_INIT = 0,
804 WAIT_FOR_FLUSH
805};
806
808enum _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
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;
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 */
uint32_t ESYS_TR
Definition: tss2_esys.h:16
Definition: esys_int.h:154
Definition: ifapi_keystore.h:143
Definition: fapi_int.h:1120
IFAPI_Key_Sign Key_Sign
Definition: fapi_int.h:1161
UINT32 nv_buffer_max
Definition: fapi_int.h:1141
ESYS_TR session2
Definition: fapi_int.h:1149
IFAPI_MAX_BUFFER aux_data
Definition: fapi_int.h:1158
enum _FAPI_FLUSH_STATE flush_object_state
Definition: fapi_int.h:1138
enum _FAPI_STATE_PRIMARY primary_state
Definition: fapi_int.h:1132
IFAPI_CMD_STATE cmd
Definition: fapi_int.h:1142
IFAPI_FILE_SEARCH_CTX fsearch
Definition: fapi_int.h:1160
IFAPI_OBJECT * duplicate_key
Definition: fapi_int.h:1164
struct IFAPI_CALLBACKS callbacks
Definition: fapi_int.h:1123
enum _FAPI_STATE state
Definition: fapi_int.h:1131
ESYS_CONTEXT * esys
Definition: fapi_int.h:1121
IFAPI_CONFIG config
Definition: fapi_int.h:1140
ESYS_TR session1
Definition: fapi_int.h:1148
enum IFAPI_CLEANUP_STATE cleanup_state
Definition: fapi_int.h:1139
TPMS_TIME_INFO init_time
Definition: fapi_int.h:1129
ESYS_TR policy_session
Definition: fapi_int.h:1150
enum _FAPI_STATE_SESSION session_state
Definition: fapi_int.h:1133
IFAPI_POLICY_CTX policy
Definition: fapi_int.h:1159
enum _FAPI_STATE_GET_RANDOM get_random_state
Definition: fapi_int.h:1134
Definition: fapi_int.h:183
TPMT_SIG_SCHEME sig_scheme
Definition: fapi_int.h:184
TPMS_ATTEST attest
Definition: fapi_int.h:185
Definition: fapi_int.h:1103
Definition: fapi_int.h:150
Definition: ifapi_config.h:20
Definition: fapi_int.h:551
IFAPI_OBJECT hierarchy
Definition: fapi_int.h:553
char * path
Definition: fapi_int.h:552
Definition: fapi_int.h:385
IFAPI_OBJECT * key_object
Definition: fapi_int.h:389
char const * keyPath
Definition: fapi_int.h:386
UINT16 bytesRequested
Definition: fapi_int.h:393
size_t decrypt
Definition: fapi_int.h:392
ESYS_TR key_handle
Definition: fapi_int.h:390
size_t numBytes
Definition: fapi_int.h:391
Definition: ifapi_eventlog.h:43
Definition: ifapi_eventlog.h:58
Definition: fapi_int.h:740
const char * searchPath
Definition: fapi_int.h:741
Definition: fapi_int.h:470
IFAPI_OBJECT * key_object
Definition: fapi_int.h:473
const char * authValue
Definition: fapi_int.h:474
TPM2B_PRIVATE * newPrivate
Definition: fapi_int.h:476
ESYS_TR hierarchy_handle
Definition: fapi_int.h:479
IFAPI_OBJECT object
Definition: fapi_int.h:477
ESYS_TR nv_index
Definition: fapi_int.h:478
ESYS_TR handle
Definition: fapi_int.h:472
TPM2B_AUTH newAuthValue
Definition: fapi_int.h:475
const char * entityPath
Definition: fapi_int.h:471
Definition: fapi_int.h:707
char ** pathlist
Definition: fapi_int.h:716
TPM2_HANDLE permanentHandle
Definition: fapi_int.h:711
size_t numPaths
Definition: fapi_int.h:717
char * path
Definition: fapi_int.h:714
bool is_key
Definition: fapi_int.h:708
IFAPI_OBJECT object
Definition: fapi_int.h:715
bool is_persistent_key
Definition: fapi_int.h:709
IFAPI_OBJECT auth_object
Definition: fapi_int.h:712
size_t path_idx
Definition: fapi_int.h:718
ESYS_TR auth_index
Definition: fapi_int.h:713
Definition: fapi_int.h:648
IFAPI_OBJECT * key_object
Definition: fapi_int.h:652
IFAPI_OBJECT dup_key
Definition: fapi_int.h:655
char const * pathToPublicKeyOfNewParent
Definition: fapi_int.h:650
IFAPI_OBJECT pub_key
Definition: fapi_int.h:654
TPM2B_PUBLIC public_parent
Definition: fapi_int.h:651
IFAPI_OBJECT export_tree
Definition: fapi_int.h:653
char const * pathOfKeyToDuplicate
Definition: fapi_int.h:649
Definition: fapi_int.h:663
size_t profile_idx
Definition: fapi_int.h:669
TPMS_POLICY policy
Definition: fapi_int.h:667
TPMI_ALG_HASH hashAlg
Definition: fapi_int.h:668
IFAPI_OBJECT object
Definition: fapi_int.h:666
bool compute_policy
Definition: fapi_int.h:670
char const * path
Definition: fapi_int.h:664
Definition: fapi_int.h:628
char ** pathlist
Definition: fapi_int.h:630
size_t numPaths
Definition: fapi_int.h:632
size_t path_idx
Definition: fapi_int.h:631
Definition: fapi_int.h:484
const char * signingKeyPath
Definition: fapi_int.h:486
const char * policyPath
Definition: fapi_int.h:485
Definition: fapi_int.h:723
IFAPI_OBJECT * key_object
Definition: fapi_int.h:735
TPM2_HANDLE permanentHandle
Definition: fapi_int.h:730
uint8_t type
Definition: fapi_int.h:724
char * path
Definition: fapi_int.h:733
bool is_key
Definition: fapi_int.h:727
IFAPI_OBJECT object
Definition: fapi_int.h:734
bool is_persistent_key
Definition: fapi_int.h:728
IFAPI_OBJECT auth_object
Definition: fapi_int.h:731
uint8_t * data
Definition: fapi_int.h:725
size_t length
Definition: fapi_int.h:726
ESYS_TR auth_index
Definition: fapi_int.h:732
Definition: fapi_int.h:444
TPMS_CAPABILITY_DATA * fetched_data
Definition: fapi_int.h:446
TPMS_CAPABILITY_DATA * capability_data
Definition: fapi_int.h:445
Definition: fapi_int.h:310
UINT16 bytesRequested
Definition: fapi_int.h:313
size_t idx
Definition: fapi_int.h:312
uint8_t * ret_data
Definition: fapi_int.h:315
size_t numBytes
Definition: fapi_int.h:311
uint8_t * data
Definition: fapi_int.h:314
Definition: fapi_int.h:155
IFAPI_CONFIG fapi_config
Definition: fapi_int.h:157
char * fapi_version
Definition: fapi_int.h:156
Definition: fapi_int.h:246
char ** pathlist
Definition: fapi_int.h:248
IFAPI_OBJECT * null_primaries
Definition: fapi_int.h:254
size_t numPaths
Definition: fapi_int.h:249
size_t primary_idx
Definition: fapi_int.h:252
size_t path_idx
Definition: fapi_int.h:253
size_t numNullPrimaries
Definition: fapi_int.h:250
Definition: ifapi_io.h:15
Definition: fapi_int.h:677
Definition: fapi_int.h:163
TPMI_YES_NO system
Definition: fapi_int.h:164
UINT32 persistent_handle
Definition: fapi_int.h:167
TPMI_YES_NO persistent
Definition: fapi_int.h:166
Definition: ifapi_keystore.h:116
Definition: fapi_int.h:363
IFAPI_OBJECT hierarchy
Definition: fapi_int.h:371
IFAPI_OBJECT parent
Definition: fapi_int.h:367
bool gen_sensitive_random
Definition: fapi_int.h:379
IFAPI_KEY_TEMPLATE public_templ
Definition: fapi_int.h:369
NODE_STR_T * path_list
Definition: fapi_int.h:366
IFAPI_OBJECT object
Definition: fapi_int.h:368
const char * keyPath
Definition: fapi_int.h:365
Definition: fapi_int.h:320
const char * key_path
Definition: fapi_int.h:323
NODE_STR_T * path_list
Definition: fapi_int.h:324
char * pem_cert_dup
Definition: fapi_int.h:322
const char * pem_cert
Definition: fapi_int.h:321
IFAPI_OBJECT key_object
Definition: fapi_int.h:325
Definition: fapi_int.h:416
IFAPI_OBJECT * key_object
Definition: fapi_int.h:422
enum FAPI_SIGN_STATE state
Definition: fapi_int.h:417
uint8_t * ret_signature
Definition: fapi_int.h:428
TPM2B_DIGEST digest
Definition: fapi_int.h:420
TPMT_SIG_SCHEME scheme
Definition: fapi_int.h:421
char const * padding
Definition: fapi_int.h:426
TPMT_SIGNATURE * tpm_signature
Definition: fapi_int.h:423
TPMT_SIGNATURE * signature
Definition: fapi_int.h:425
char * certificate
Definition: fapi_int.h:427
ESYS_TR handle
Definition: fapi_int.h:419
char * publicKey
Definition: fapi_int.h:430
const char * keyPath
Definition: fapi_int.h:418
TPMI_YES_NO decrypt
Definition: fapi_int.h:424
Definition: fapi_int.h:565
Definition: fapi_int.h:692
NODE_STR_T * path_list
Definition: fapi_int.h:694
enum _FAPI_STATE_LOAD_KEY state
Definition: fapi_int.h:693
Definition: fapi_int.h:89
Definition: fapi_int.h:212
UINT16 bytesRequested
Definition: fapi_int.h:219
TPML_DIGEST_VALUES digests
Definition: fapi_int.h:240
ESYS_TR esys_auth_handle
Definition: fapi_int.h:216
IFAPI_EVENT pcr_event
Definition: fapi_int.h:239
bool skip_policy_computation
Definition: fapi_int.h:241
size_t data_idx
Definition: fapi_int.h:221
char * policyPath
Definition: fapi_int.h:214
const uint8_t * data
Definition: fapi_int.h:222
json_object * jso_event_log
Definition: fapi_int.h:237
ESYS_TR esys_handle
Definition: fapi_int.h:217
enum _FAPI_STATE_NV_WRITE nv_write_state
Definition: fapi_int.h:234
size_t size
Definition: fapi_int.h:224
char * nvPath
Definition: fapi_int.h:213
TPM2B_AUTH auth
Definition: fapi_int.h:227
IFAPI_NV_TEMPLATE public_templ
Definition: fapi_int.h:231
uint64_t bitmap
Definition: fapi_int.h:230
size_t numBytes
Definition: fapi_int.h:218
uint8_t * rdata
Definition: fapi_int.h:223
enum _FAPI_STATE_NV_READ nv_read_state
Definition: fapi_int.h:233
IFAPI_OBJECT auth_object
Definition: fapi_int.h:225
IFAPI_OBJECT nv_object
Definition: fapi_int.h:226
char * logData
Definition: fapi_int.h:236
TPMI_RH_NV_INDEX maxNvIndex
Definition: fapi_int.h:238
UINT16 offset
Definition: fapi_int.h:220
IFAPI_NV nv_obj
Definition: fapi_int.h:228
ESYS_TR auth_index
Definition: fapi_int.h:229
Definition: fapi_int.h:173
TPMI_YES_NO system
Definition: fapi_int.h:174
TPMI_RH_HIERARCHY hierarchy
Definition: fapi_int.h:176
char * description
Definition: fapi_int.h:177
Definition: ifapi_keystore.h:67
Definition: fapi_int.h:259
IFAPI_OBJECT * key_object
Definition: fapi_int.h:271
ESYS_TR PCR
Definition: fapi_int.h:262
TPM2B_DATA qualifyingData
Definition: fapi_int.h:275
size_t pcrListSize
Definition: fapi_int.h:274
TPML_PCR_SELECTION pcr_selection
Definition: fapi_int.h:263
TPML_DIGEST_VALUES * event_digests
Definition: fapi_int.h:261
ESYS_TR handle
Definition: fapi_int.h:270
TPML_DIGEST_VALUES digest_list
Definition: fapi_int.h:260
TPML_PCR_SELECTION * pcr_selection_out
Definition: fapi_int.h:264
const char * keyPath
Definition: fapi_int.h:269
uint32_t * pcrList
Definition: fapi_int.h:273
Definition: fapi_int.h:597
char ** pathlist
Definition: fapi_int.h:602
ESYS_TR session
Definition: fapi_int.h:612
IFAPI_POLICYUTIL_STACK * policyutil_stack
Definition: fapi_int.h:608
IFAPI_POLICY_EXEC_CTX * policy_stack
Definition: fapi_int.h:604
Definition: ifapi_policy_instantiate.h:67
Definition: ifapi_policy_execute.h:129
Definition: ifapi_policy_store.h:17
Definition: ifapi_policyutil_execute.h:26
Definition: ifapi_profiles.h:15
Definition: ifapi_profiles.h:51
Definition: fapi_int.h:299
json_object * jso
Definition: fapi_int.h:304
char * object_path
Definition: fapi_int.h:303
char * jso_string
Definition: fapi_int.h:305
IFAPI_OBJECT object
Definition: fapi_int.h:302
char * description
Definition: fapi_int.h:300
UINT8_ARY appData
Definition: fapi_int.h:301
Definition: fapi_int.h:502
char ** pathlist
Definition: fapi_int.h:511
size_t numHierarchyObjects
Definition: fapi_int.h:513
IFAPI_OBJECT hierarchy_hn
Definition: fapi_int.h:506
size_t numPaths
Definition: fapi_int.h:512
IFAPI_KEY_TEMPLATE public_templ
Definition: fapi_int.h:509
IFAPI_OBJECT hierarchy_he
Definition: fapi_int.h:505
IFAPI_OBJECT * hierarchy
Definition: fapi_int.h:507
IFAPI_OBJECT hierarchy_hs
Definition: fapi_int.h:504
IFAPI_OBJECT hierarchy_lockout
Definition: fapi_int.h:503
IFAPI_OBJECT * hierarchies
Definition: fapi_int.h:516
size_t path_idx
Definition: fapi_int.h:515
size_t hiearchy_idx
Definition: fapi_int.h:514
TPMS_POLICY * hierarchy_policy
Definition: fapi_int.h:508
Definition: fapi_int.h:435
IFAPI_OBJECT * object
Definition: fapi_int.h:437
const char * keyPath
Definition: fapi_int.h:436
Definition: fapi_int.h:493
TPMI_ALG_HASH * hash_alg
Definition: fapi_int.h:495
size_t hash_size
Definition: fapi_int.h:496
size_t digest_idx
Definition: fapi_int.h:497
const char * policyPath
Definition: fapi_int.h:494
Definition: ifapi_policy_types.h:128
Definition: ifapi_policy_types.h:291
struct TPML_POLICYELEMENTS * policy
Definition: ifapi_policy_types.h:295
Definition: fapi_types.h:15
Definition: fapi_types.h:34
Definition: fapi_types.h:24
Definition: fapi_int.h:749