tpm2-tss 4.1.0
TPM Software stack 2.0 TCG spec compliant implementation
tss2_esys.h
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_ESYS_H
7#define TSS2_ESYS_H
8
9#include "tss2_tcti.h"
10#include "tss2_sys.h"
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16typedef uint32_t ESYS_TR;
17
18#define ESYS_TR_NONE 0xfffU
19#define ESYS_TR_PASSWORD 0x0ffU
20#define ESYS_TR_PCR0 0U
21#define ESYS_TR_PCR1 1U
22#define ESYS_TR_PCR2 2U
23#define ESYS_TR_PCR3 3U
24#define ESYS_TR_PCR4 4U
25#define ESYS_TR_PCR5 5U
26#define ESYS_TR_PCR6 6U
27#define ESYS_TR_PCR7 7U
28#define ESYS_TR_PCR8 8U
29#define ESYS_TR_PCR9 9U
30#define ESYS_TR_PCR10 10U
31#define ESYS_TR_PCR11 11U
32#define ESYS_TR_PCR12 12U
33#define ESYS_TR_PCR13 13U
34#define ESYS_TR_PCR14 14U
35#define ESYS_TR_PCR15 15U
36#define ESYS_TR_PCR16 16U
37#define ESYS_TR_PCR17 17U
38#define ESYS_TR_PCR18 18U
39#define ESYS_TR_PCR19 19U
40#define ESYS_TR_PCR20 20U
41#define ESYS_TR_PCR21 21U
42#define ESYS_TR_PCR22 22U
43#define ESYS_TR_PCR23 23U
44#define ESYS_TR_PCR24 24U
45#define ESYS_TR_PCR25 25U
46#define ESYS_TR_PCR26 26U
47#define ESYS_TR_PCR27 27U
48#define ESYS_TR_PCR28 28U
49#define ESYS_TR_PCR29 29U
50#define ESYS_TR_PCR30 30U
51#define ESYS_TR_PCR31 31U
52
53/* From TPM_RH_CONSTANTS */
54#define ESYS_TR_RH_OWNER 0x101U
55#define ESYS_TR_RH_NULL 0x107U
56#define ESYS_TR_RH_LOCKOUT 0x10AU
57#define ESYS_TR_RH_ENDORSEMENT 0x10BU
58#define ESYS_TR_RH_PLATFORM 0x10CU
59#define ESYS_TR_RH_PLATFORM_NV 0x10DU
60#define ESYS_TR_RH_FW_OWNER 0x10EU
61#define ESYS_TR_RH_FW_ENDORSEMENT 0x10FU
62#define ESYS_TR_RH_FW_PLATFORM 0x110U
63#define ESYS_TR_RH_FW_NULL 0x111U
64#define ESYS_TR_RH_SVN_OWNER_BASE 0x1010000U
65#define ESYS_TR_RH_SVN_ENDORSEMENT_BASE 0x1020000U
66#define ESYS_TR_RH_SVN_PLATFORM_BASE 0x1030000U
67#define ESYS_TR_RH_SVN_NULL_BASE 0x1040000U
68
69#define ESYS_TR_RH_AUTH_FIRST 0x110U
70#define ESYS_TR_RH_AUTH(x) (ESYS_TR_RH_AUTH_FIRST + (ESYS_TR)(x))
71#define ESYS_TR_RH_ACT_FIRST 0x120U
72#define ESYS_TR_RH_ACT(x) (ESYS_TR_RH_ACT_FIRST + (ESYS_TR)(x))
73#define ESYS_TR_RH_ACT_0 ESYS_TR_RH_ACT_FIRST
74#define ESYS_TR_RH_ACT_1 0x121U
75#define ESYS_TR_RH_ACT_2 0x122U
76#define ESYS_TR_RH_ACT_3 0x123U
77#define ESYS_TR_RH_ACT_4 0x124U
78#define ESYS_TR_RH_ACT_5 0x125U
79#define ESYS_TR_RH_ACT_6 0x126U
80#define ESYS_TR_RH_ACT_7 0x127U
81#define ESYS_TR_RH_ACT_8 0x128U
82#define ESYS_TR_RH_ACT_9 0x129U
83#define ESYS_TR_RH_ACT_A 0x12AU
84#define ESYS_TR_RH_ACT_B 0x12BU
85#define ESYS_TR_RH_ACT_C 0x12CU
86#define ESYS_TR_RH_ACT_D 0x12DU
87#define ESYS_TR_RH_ACT_E 0x12EU
88#define ESYS_TR_RH_ACT_F 0x12FU
89#define ESYS_TR_RH_ACT_LAST ESYS_TR_RH_ACT_F
90#define ESYS_TR_RH_AC_FIRST 0x140U
91#define ESYS_TR_RH_AC(x) (ESYS_TR_RH_AC_FIRST + (ESYS_TR)(x))
92#define ESYS_TR_RH_AC_LAST (ESYS_TR_RH_AC_FIRST + 0xFFFFU)
93
94typedef struct ESYS_CONTEXT ESYS_CONTEXT;
95
97
98/*
99 * Crypto Backend Support
100 */
101
111typedef TSS2_RC
112 (*ESYS_CRYPTO_HASH_START_FNP)(
113 ESYS_CRYPTO_CONTEXT_BLOB ** context,
114 TPM2_ALG_ID hashAlg,
115 void *userdata);
116
128typedef TSS2_RC
129 (*ESYS_CRYPTO_HASH_UPDATE_FNP)(
130 ESYS_CRYPTO_CONTEXT_BLOB * context,
131 const uint8_t *buffer,
132 size_t size,
133 void *userdata);
134
146typedef TSS2_RC
147 (*ESYS_CRYPTO_HASH_FINISH_FNP)(
148 ESYS_CRYPTO_CONTEXT_BLOB **context,
149 uint8_t *buffer,
150 size_t *size,
151 void *userdata);
152
159typedef void
160 (*ESYS_CRYPTO_HASH_ABORT_FNP)(
161 ESYS_CRYPTO_CONTEXT_BLOB **context,
162 void *userdata);
163
176typedef TSS2_RC
177 (*ESYS_CRYPTO_HMAC_START_FNP)(
178 ESYS_CRYPTO_CONTEXT_BLOB **context,
179 TPM2_ALG_ID hashAlg,
180 const uint8_t *key,
181 size_t size,
182 void *userdata);
183
195typedef TSS2_RC
196 (*ESYS_CRYPTO_HMAC_UPDATE_FNP)(
198 const uint8_t *buffer,
199 size_t size,
200 void *userdata);
201
213typedef TSS2_RC
214 (*ESYS_CRYPTO_HMAC_FINISH_FNP)(
215 ESYS_CRYPTO_CONTEXT_BLOB **context,
216 uint8_t *buffer,
217 size_t *size,
218 void *userdata);
219
226typedef void
227 (*ESYS_CRYPTO_HMAC_ABORT_FNP)(
228 ESYS_CRYPTO_CONTEXT_BLOB **context,
229 void *userdata);
230
241typedef TSS2_RC
242 (*ESYS_CRYPTO_GET_RANDOM2B_FNP)(
243 TPM2B_NONCE *nonce,
244 size_t num_bytes,
245 void *userdata);
246
264typedef TSS2_RC
265 (*ESYS_CRYPTO_GET_ECDH_POINT_FNP)(
266 TPM2B_PUBLIC *key,
267 size_t max_out_size,
268 TPM2B_ECC_PARAMETER *Z,
269 TPMS_ECC_POINT *Q,
270 BYTE *out_buffer,
271 size_t *out_size,
272 void *userdata);
273
289typedef TSS2_RC
290 (*ESYS_CRYPTO_AES_ENCRYPT_FNP)(
291 uint8_t *key,
292 TPM2_ALG_ID tpm_sym_alg,
293 TPMI_AES_KEY_BITS key_bits,
294 TPM2_ALG_ID tpm_mode,
295 uint8_t *buffer,
296 size_t buffer_size,
297 uint8_t *iv,
298 void *userdata);
299
315typedef TSS2_RC
316 (*ESYS_CRYPTO_AES_DECRYPT_FNP)(
317 uint8_t *key,
318 TPM2_ALG_ID tpm_sym_alg,
319 TPMI_AES_KEY_BITS key_bits,
320 TPM2_ALG_ID tpm_mode,
321 uint8_t *buffer,
322 size_t buffer_size,
323 uint8_t *iv,
324 void *userdata);
325
341typedef TSS2_RC
342 (*ESYS_CRYPTO_SM4_ENCRYPT_FNP)(
343 uint8_t *key,
344 TPM2_ALG_ID tpm_sym_alg,
345 TPMI_SM4_KEY_BITS key_bits,
346 TPM2_ALG_ID tpm_mode,
347 uint8_t *buffer,
348 size_t buffer_size,
349 uint8_t *iv,
350 void *userdata);
351
367typedef TSS2_RC
368 (*ESYS_CRYPTO_SM4_DECRYPT_FNP)(
369 uint8_t *key,
370 TPM2_ALG_ID tpm_sym_alg,
371 TPMI_SM4_KEY_BITS key_bits,
372 TPM2_ALG_ID tpm_mode,
373 uint8_t *buffer,
374 size_t buffer_size,
375 uint8_t *iv,
376 void *userdata);
377
393typedef TSS2_RC
394 (*ESYS_CRYPTO_PK_RSA_ENCRYPT_FNP)(
395 TPM2B_PUBLIC * pub_tpm_key,
396 size_t in_size,
397 BYTE *in_buffer,
398 size_t max_out_size,
399 BYTE *out_buffer,
400 size_t *out_size,
401 const char *label,
402 void *userdata);
403
413typedef TSS2_RC (*ESYS_CRYPTO_INIT_FNP)(void *userdata);
414
417 ESYS_CRYPTO_PK_RSA_ENCRYPT_FNP rsa_pk_encrypt;
418 ESYS_CRYPTO_HASH_START_FNP hash_start;
419 ESYS_CRYPTO_HASH_UPDATE_FNP hash_update;
420 ESYS_CRYPTO_HASH_FINISH_FNP hash_finish;
421 ESYS_CRYPTO_HASH_ABORT_FNP hash_abort;
422 ESYS_CRYPTO_HMAC_START_FNP hmac_start;
423 ESYS_CRYPTO_HMAC_UPDATE_FNP hmac_update;
424 ESYS_CRYPTO_HMAC_FINISH_FNP hmac_finish;
425 ESYS_CRYPTO_HMAC_ABORT_FNP hmac_abort;
426 ESYS_CRYPTO_GET_RANDOM2B_FNP get_random2b;
427 ESYS_CRYPTO_GET_ECDH_POINT_FNP get_ecdh_point;
428 ESYS_CRYPTO_AES_ENCRYPT_FNP aes_encrypt;
429 ESYS_CRYPTO_AES_DECRYPT_FNP aes_decrypt;
430 ESYS_CRYPTO_SM4_ENCRYPT_FNP sm4_encrypt;
431 ESYS_CRYPTO_SM4_DECRYPT_FNP sm4_decrypt;
432 ESYS_CRYPTO_INIT_FNP init;
433 void *userdata;
434};
435
436/*
437 * TPM 2.0 ESAPI Functions
438 */
439
440TSS2_RC
441Esys_Initialize(
442 ESYS_CONTEXT **esys_context,
443 TSS2_TCTI_CONTEXT *tcti,
444 TSS2_ABI_VERSION *abiVersion);
445
446void
447Esys_Finalize(
448 ESYS_CONTEXT **context);
449
450TSS2_RC
451Esys_GetTcti(
452 ESYS_CONTEXT *esys_context,
453 TSS2_TCTI_CONTEXT **tcti);
454
455TSS2_RC
456Esys_GetPollHandles(
457 ESYS_CONTEXT *esys_context,
458 TSS2_TCTI_POLL_HANDLE **handles,
459 size_t *count);
460
461TSS2_RC
462Esys_SetTimeout(
463 ESYS_CONTEXT *esys_context,
464 int32_t timeout);
465
466TSS2_RC
467Esys_TR_Serialize(
468 ESYS_CONTEXT *esys_context,
469 ESYS_TR object,
470 uint8_t **buffer,
471 size_t *buffer_size);
472
473TSS2_RC
474Esys_TR_Deserialize(
475 ESYS_CONTEXT *esys_context,
476 uint8_t const *buffer,
477 size_t buffer_size,
478 ESYS_TR *esys_handle);
479
480TSS2_RC
481Esys_TR_FromTPMPublic_Async(
482 ESYS_CONTEXT *esysContext,
483 TPM2_HANDLE tpm_handle,
484 ESYS_TR optionalSession1,
485 ESYS_TR optionalSession2,
486 ESYS_TR optionalSession3);
487
488TSS2_RC
489Esys_TR_FromTPMPublic_Finish(
490 ESYS_CONTEXT *esysContext,
491 ESYS_TR *object);
492
493TSS2_RC
494Esys_TR_FromTPMPublic(
495 ESYS_CONTEXT *esysContext,
496 TPM2_HANDLE tpm_handle,
497 ESYS_TR optionalSession1,
498 ESYS_TR optionalSession2,
499 ESYS_TR optionalSession3,
500 ESYS_TR *object);
501
502TSS2_RC
503Esys_TR_Close(
504 ESYS_CONTEXT *esys_context,
505 ESYS_TR *rsrc_handle);
506
507TSS2_RC
508Esys_TR_SetAuth(
509 ESYS_CONTEXT *esysContext,
510 ESYS_TR handle,
511 TPM2B_AUTH const *authValue);
512
513TSS2_RC
514Esys_TR_GetName(
515 ESYS_CONTEXT *esysContext,
516 ESYS_TR handle,
517 TPM2B_NAME **name);
518
519TSS2_RC
520Esys_TRSess_GetAttributes(
521 ESYS_CONTEXT *esysContext,
522 ESYS_TR session,
523 TPMA_SESSION *flags);
524
525TSS2_RC
526Esys_TRSess_SetAttributes(
527 ESYS_CONTEXT *esysContext,
528 ESYS_TR session,
529 TPMA_SESSION flags,
530 TPMA_SESSION mask);
531
532TSS2_RC
533Esys_TRSess_GetNonceTPM(
534 ESYS_CONTEXT *esysContext,
535 ESYS_TR session,
536 TPM2B_NONCE **nonceTPM);
537
538TSS2_RC
539Esys_TR_GetTpmHandle(
540 ESYS_CONTEXT *esys_context,
541 ESYS_TR esys_handle,
542 TPM2_HANDLE *tpm_handle);
543
544TSS2_RC
545Esys_TRSess_GetAuthRequired(
546 ESYS_CONTEXT *esys_context,
547 ESYS_TR esys_handle,
548 TPMI_YES_NO *auth_needed);
549
550/* Table 5 - TPM2_Startup Command */
551
552TSS2_RC
553Esys_Startup(
554 ESYS_CONTEXT *esysContext,
555 TPM2_SU startupType);
556
557TSS2_RC
558Esys_Startup_Async(
559 ESYS_CONTEXT *esysContext,
560 TPM2_SU startupType);
561
562TSS2_RC
563Esys_Startup_Finish(
564 ESYS_CONTEXT *esysContext);
565
566/* Table 7 - TPM2_Shutdown Command */
567
568TSS2_RC
569Esys_Shutdown(
570 ESYS_CONTEXT *esysContext,
571 ESYS_TR shandle1,
572 ESYS_TR shandle2,
573 ESYS_TR shandle3,
574 TPM2_SU shutdownType);
575
576TSS2_RC
577Esys_Shutdown_Async(
578 ESYS_CONTEXT *esysContext,
579 ESYS_TR shandle1,
580 ESYS_TR shandle2,
581 ESYS_TR shandle3,
582 TPM2_SU shutdownType);
583
584TSS2_RC
585Esys_Shutdown_Finish(
586 ESYS_CONTEXT *esysContext);
587
588/* Table 9 - TPM2_SelfTest Command */
589
590TSS2_RC
591Esys_SelfTest(
592 ESYS_CONTEXT *esysContext,
593 ESYS_TR shandle1,
594 ESYS_TR shandle2,
595 ESYS_TR shandle3,
596 TPMI_YES_NO fullTest);
597
598TSS2_RC
599Esys_SelfTest_Async(
600 ESYS_CONTEXT *esysContext,
601 ESYS_TR shandle1,
602 ESYS_TR shandle2,
603 ESYS_TR shandle3,
604 TPMI_YES_NO fullTest);
605
606TSS2_RC
607Esys_SelfTest_Finish(
608 ESYS_CONTEXT *esysContext);
609
610/* Table 11 - TPM2_IncrementalSelfTest Command */
611
612TSS2_RC
613Esys_IncrementalSelfTest(
614 ESYS_CONTEXT *esysContext,
615 ESYS_TR shandle1,
616 ESYS_TR shandle2,
617 ESYS_TR shandle3,
618 const TPML_ALG *toTest,
619 TPML_ALG **toDoList);
620
621TSS2_RC
622Esys_IncrementalSelfTest_Async(
623 ESYS_CONTEXT *esysContext,
624 ESYS_TR shandle1,
625 ESYS_TR shandle2,
626 ESYS_TR shandle3,
627 const TPML_ALG *toTest);
628
629TSS2_RC
630Esys_IncrementalSelfTest_Finish(
631 ESYS_CONTEXT *esysContext,
632 TPML_ALG **toDoList);
633
634/* Table 13 - TPM2_GetTestResult Command */
635
636TSS2_RC
637Esys_GetTestResult(
638 ESYS_CONTEXT *esysContext,
639 ESYS_TR shandle1,
640 ESYS_TR shandle2,
641 ESYS_TR shandle3,
642 TPM2B_MAX_BUFFER **outData,
643 TPM2_RC *testResult);
644
645TSS2_RC
646Esys_GetTestResult_Async(
647 ESYS_CONTEXT *esysContext,
648 ESYS_TR shandle1,
649 ESYS_TR shandle2,
650 ESYS_TR shandle3);
651
652TSS2_RC
653Esys_GetTestResult_Finish(
654 ESYS_CONTEXT *esysContext,
655 TPM2B_MAX_BUFFER **outData,
656 TPM2_RC *testResult);
657
658/* Table 15 - TPM2_StartAuthSession Command */
659
660TSS2_RC
661Esys_StartAuthSession(
662 ESYS_CONTEXT *esysContext,
663 ESYS_TR tpmKey,
664 ESYS_TR bind,
665 ESYS_TR shandle1,
666 ESYS_TR shandle2,
667 ESYS_TR shandle3,
668 const TPM2B_NONCE *nonceCaller,
669 TPM2_SE sessionType,
670 const TPMT_SYM_DEF *symmetric,
671 TPMI_ALG_HASH authHash,
672 ESYS_TR *sessionHandle);
673
674TSS2_RC
675Esys_StartAuthSession_Async(
676 ESYS_CONTEXT *esysContext,
677 ESYS_TR tpmKey,
678 ESYS_TR bind,
679 ESYS_TR shandle1,
680 ESYS_TR shandle2,
681 ESYS_TR shandle3,
682 const TPM2B_NONCE *nonceCaller,
683 TPM2_SE sessionType,
684 const TPMT_SYM_DEF *symmetric,
685 TPMI_ALG_HASH authHash);
686
687TSS2_RC
688Esys_StartAuthSession_Finish(
689 ESYS_CONTEXT *esysContext,
690 ESYS_TR *sessionHandle);
691
692/* Table 17 - TPM2_PolicyRestart Command */
693
694TSS2_RC
695Esys_PolicyRestart(
696 ESYS_CONTEXT *esysContext,
697 ESYS_TR sessionHandle,
698 ESYS_TR shandle1,
699 ESYS_TR shandle2,
700 ESYS_TR shandle3);
701
702TSS2_RC
703Esys_PolicyRestart_Async(
704 ESYS_CONTEXT *esysContext,
705 ESYS_TR sessionHandle,
706 ESYS_TR shandle1,
707 ESYS_TR shandle2,
708 ESYS_TR shandle3);
709
710TSS2_RC
711Esys_PolicyRestart_Finish(
712 ESYS_CONTEXT *esysContext);
713
714/* Table 19 - TPM2_Create Command */
715
716TSS2_RC
717Esys_Create(
718 ESYS_CONTEXT *esysContext,
719 ESYS_TR parentHandle,
720 ESYS_TR shandle1,
721 ESYS_TR shandle2,
722 ESYS_TR shandle3,
723 const TPM2B_SENSITIVE_CREATE *inSensitive,
724 const TPM2B_PUBLIC *inPublic,
725 const TPM2B_DATA *outsideInfo,
726 const TPML_PCR_SELECTION *creationPCR,
727 TPM2B_PRIVATE **outPrivate,
728 TPM2B_PUBLIC **outPublic,
729 TPM2B_CREATION_DATA **creationData,
730 TPM2B_DIGEST **creationHash,
731 TPMT_TK_CREATION **creationTicket);
732
733TSS2_RC
734Esys_Create_Async(
735 ESYS_CONTEXT *esysContext,
736 ESYS_TR parentHandle,
737 ESYS_TR shandle1,
738 ESYS_TR shandle2,
739 ESYS_TR shandle3,
740 const TPM2B_SENSITIVE_CREATE *inSensitive,
741 const TPM2B_PUBLIC *inPublic,
742 const TPM2B_DATA *outsideInfo,
743 const TPML_PCR_SELECTION *creationPCR);
744
745TSS2_RC
746Esys_Create_Finish(
747 ESYS_CONTEXT *esysContext,
748 TPM2B_PRIVATE **outPrivate,
749 TPM2B_PUBLIC **outPublic,
750 TPM2B_CREATION_DATA **creationData,
751 TPM2B_DIGEST **creationHash,
752 TPMT_TK_CREATION **creationTicket);
753
754/* Table 21 - TPM2_Load Command */
755
756TSS2_RC
757Esys_Load(
758 ESYS_CONTEXT *esysContext,
759 ESYS_TR parentHandle,
760 ESYS_TR shandle1,
761 ESYS_TR shandle2,
762 ESYS_TR shandle3,
763 const TPM2B_PRIVATE *inPrivate,
764 const TPM2B_PUBLIC *inPublic,
765 ESYS_TR *objectHandle);
766
767TSS2_RC
768Esys_Load_Async(
769 ESYS_CONTEXT *esysContext,
770 ESYS_TR parentHandle,
771 ESYS_TR shandle1,
772 ESYS_TR shandle2,
773 ESYS_TR shandle3,
774 const TPM2B_PRIVATE *inPrivate,
775 const TPM2B_PUBLIC *inPublic);
776
777TSS2_RC
778Esys_Load_Finish(
779 ESYS_CONTEXT *esysContext,
780 ESYS_TR *objectHandle);
781
782/* Table 23 - TPM2_LoadExternal Command */
783
784TSS2_RC
785Esys_LoadExternal(
786 ESYS_CONTEXT *esysContext,
787 ESYS_TR shandle1,
788 ESYS_TR shandle2,
789 ESYS_TR shandle3,
790 const TPM2B_SENSITIVE *inPrivate,
791 const TPM2B_PUBLIC *inPublic,
792 ESYS_TR hierarchy,
793 ESYS_TR *objectHandle);
794
795TSS2_RC
796Esys_LoadExternal_Async(
797 ESYS_CONTEXT *esysContext,
798 ESYS_TR shandle1,
799 ESYS_TR shandle2,
800 ESYS_TR shandle3,
801 const TPM2B_SENSITIVE *inPrivate,
802 const TPM2B_PUBLIC *inPublic,
803 ESYS_TR hierarchy);
804
805TSS2_RC
806Esys_LoadExternal_Finish(
807 ESYS_CONTEXT *esysContext,
808 ESYS_TR *objectHandle);
809
810/* Table 25 - TPM2_ReadPublic Command */
811
812TSS2_RC
813Esys_ReadPublic(
814 ESYS_CONTEXT *esysContext,
815 ESYS_TR objectHandle,
816 ESYS_TR shandle1,
817 ESYS_TR shandle2,
818 ESYS_TR shandle3,
819 TPM2B_PUBLIC **outPublic,
820 TPM2B_NAME **name,
821 TPM2B_NAME **qualifiedName);
822
823TSS2_RC
824Esys_ReadPublic_Async(
825 ESYS_CONTEXT *esysContext,
826 ESYS_TR objectHandle,
827 ESYS_TR shandle1,
828 ESYS_TR shandle2,
829 ESYS_TR shandle3);
830
831TSS2_RC
832Esys_ReadPublic_Finish(
833 ESYS_CONTEXT *esysContext,
834 TPM2B_PUBLIC **outPublic,
835 TPM2B_NAME **name,
836 TPM2B_NAME **qualifiedName);
837
838/* Table 27 - TPM2_ActivateCredential Command */
839
840TSS2_RC
841Esys_ActivateCredential(
842 ESYS_CONTEXT *esysContext,
843 ESYS_TR activateHandle,
844 ESYS_TR keyHandle,
845 ESYS_TR shandle1,
846 ESYS_TR shandle2,
847 ESYS_TR shandle3,
848 const TPM2B_ID_OBJECT *credentialBlob,
849 const TPM2B_ENCRYPTED_SECRET *secret,
850 TPM2B_DIGEST **certInfo);
851
852TSS2_RC
853Esys_ActivateCredential_Async(
854 ESYS_CONTEXT *esysContext,
855 ESYS_TR activateHandle,
856 ESYS_TR keyHandle,
857 ESYS_TR shandle1,
858 ESYS_TR shandle2,
859 ESYS_TR shandle3,
860 const TPM2B_ID_OBJECT *credentialBlob,
861 const TPM2B_ENCRYPTED_SECRET *secret);
862
863TSS2_RC
864Esys_ActivateCredential_Finish(
865 ESYS_CONTEXT *esysContext,
866 TPM2B_DIGEST **certInfo);
867
868TSS2_RC
869Esys_ACT_SetTimeout(
870 ESYS_CONTEXT *esysContext,
871 ESYS_TR actHandle,
872 ESYS_TR shandle1,
873 ESYS_TR shandle2,
874 ESYS_TR shandle3,
875 UINT32 startTimeout);
876
877TSS2_RC
878Esys_ACT_SetTimeout_Async(
879 ESYS_CONTEXT *esysContext,
880 ESYS_TR actHandle,
881 ESYS_TR shandle1,
882 ESYS_TR shandle2,
883 ESYS_TR shandle3,
884 UINT32 startTimeout);
885
886TSS2_RC
887Esys_ACT_SetTimeout_Finish(
888 ESYS_CONTEXT *esysContext);
889
890TSS2_RC
891Esys_AC_GetCapability_Async(
892 ESYS_CONTEXT *esysContext,
893 ESYS_TR optionalSession1,
894 ESYS_TR optionalSession2,
895 ESYS_TR optionalSession3,
896 ESYS_TR ac,
897 TPM_AT capability,
898 UINT32 count);
899
900TSS2_RC
901Esys_AC_GetCapability_Finish(
902 ESYS_CONTEXT *esysContext,
903 TPMI_YES_NO *moreData,
904 TPML_AC_CAPABILITIES **capabilityData);
905
906TSS2_RC
907Esys_AC_GetCapability(
908 ESYS_CONTEXT *esysContext,
909 ESYS_TR optionalSession1,
910 ESYS_TR optionalSession2,
911 ESYS_TR optionalSession3,
912 ESYS_TR ac,
913 TPM_AT capability,
914 UINT32 count,
915 TPMI_YES_NO *moreData,
916 TPML_AC_CAPABILITIES **capabilityData);
917
918TSS2_RC
919Esys_AC_Send_Async(
920 ESYS_CONTEXT *esysContext,
921 ESYS_TR sendObject,
922 ESYS_TR nvAuthHandle,
923 ESYS_TR optionalSession1,
924 ESYS_TR optionalSession2,
925 ESYS_TR optionalSession3,
926 ESYS_TR ac,
927 TPM2B_MAX_BUFFER *acDataIn);
928
929TSS2_RC
930Esys_AC_Send_Finish(
931 ESYS_CONTEXT *esysContext,
932 TPMS_AC_OUTPUT **acDataOut);
933
934TSS2_RC
935Esys_AC_Send(
936 ESYS_CONTEXT *esysContext,
937 ESYS_TR sendObject,
938 ESYS_TR nvAuthHandle,
939 ESYS_TR optionalSession1,
940 ESYS_TR optionalSession2,
941 ESYS_TR optionalSession3,
942 ESYS_TR ac,
943 TPM2B_MAX_BUFFER *acDataIn,
944 TPMS_AC_OUTPUT **acDataOut);
945
946TSS2_RC
947Esys_Policy_AC_SendSelect_Async(
948 ESYS_CONTEXT *esysContext,
949 ESYS_TR policySession1,
950 ESYS_TR optionalSession2,
951 ESYS_TR optionalSession3,
952 TPM2B_NAME *objectName,
953 TPM2B_NAME *authHandleName,
954 TPM2B_NAME *acName,
955 const TPMI_YES_NO includeObject);
956
957TSS2_RC
958Esys_Policy_AC_SendSelect_Finish(
959 ESYS_CONTEXT *esysContext);
960
961TSS2_RC
962Esys_Policy_AC_SendSelect(
963 ESYS_CONTEXT *esysContext,
964 ESYS_TR policySession1,
965 ESYS_TR optionalSession2,
966 ESYS_TR optionalSession3,
967 TPM2B_NAME *objectName,
968 TPM2B_NAME *authHandleName,
969 TPM2B_NAME *acName,
970 TPMI_YES_NO includeObject);
971
972/* Table 29 - TPM2_MakeCredential Command */
973
974TSS2_RC
975Esys_MakeCredential(
976 ESYS_CONTEXT *esysContext,
977 ESYS_TR handle,
978 ESYS_TR shandle1,
979 ESYS_TR shandle2,
980 ESYS_TR shandle3,
981 const TPM2B_DIGEST *credential,
982 const TPM2B_NAME *objectName,
983 TPM2B_ID_OBJECT **credentialBlob,
984 TPM2B_ENCRYPTED_SECRET **secret);
985
986TSS2_RC
987Esys_MakeCredential_Async(
988 ESYS_CONTEXT *esysContext,
989 ESYS_TR handle,
990 ESYS_TR shandle1,
991 ESYS_TR shandle2,
992 ESYS_TR shandle3,
993 const TPM2B_DIGEST *credential,
994 const TPM2B_NAME *objectName);
995
996TSS2_RC
997Esys_MakeCredential_Finish(
998 ESYS_CONTEXT *esysContext,
999 TPM2B_ID_OBJECT **credentialBlob,
1000 TPM2B_ENCRYPTED_SECRET **secret);
1001
1002/* Table 31 - TPM2_Unseal Command */
1003
1004TSS2_RC
1005Esys_Unseal(
1006 ESYS_CONTEXT *esysContext,
1007 ESYS_TR itemHandle,
1008 ESYS_TR shandle1,
1009 ESYS_TR shandle2,
1010 ESYS_TR shandle3,
1011 TPM2B_SENSITIVE_DATA **outData);
1012
1013TSS2_RC
1014Esys_Unseal_Async(
1015 ESYS_CONTEXT *esysContext,
1016 ESYS_TR itemHandle,
1017 ESYS_TR shandle1,
1018 ESYS_TR shandle2,
1019 ESYS_TR shandle3);
1020
1021TSS2_RC
1022Esys_Unseal_Finish(
1023 ESYS_CONTEXT *esysContext,
1024 TPM2B_SENSITIVE_DATA **outData);
1025
1026/* Table 33 - TPM2_ObjectChangeAuth Command */
1027
1028TSS2_RC
1029Esys_ObjectChangeAuth(
1030 ESYS_CONTEXT *esysContext,
1031 ESYS_TR objectHandle,
1032 ESYS_TR parentHandle,
1033 ESYS_TR shandle1,
1034 ESYS_TR shandle2,
1035 ESYS_TR shandle3,
1036 const TPM2B_AUTH *newAuth,
1037 TPM2B_PRIVATE **outPrivate);
1038
1039TSS2_RC
1040Esys_ObjectChangeAuth_Async(
1041 ESYS_CONTEXT *esysContext,
1042 ESYS_TR objectHandle,
1043 ESYS_TR parentHandle,
1044 ESYS_TR shandle1,
1045 ESYS_TR shandle2,
1046 ESYS_TR shandle3,
1047 const TPM2B_AUTH *newAuth);
1048
1049TSS2_RC
1050Esys_ObjectChangeAuth_Finish(
1051 ESYS_CONTEXT *esysContext,
1052 TPM2B_PRIVATE **outPrivate);
1053
1054/* Table 35 - TPM2_CreateLoaded Command */
1055
1056TSS2_RC
1057Esys_CreateLoaded(
1058 ESYS_CONTEXT *esysContext,
1059 ESYS_TR parentHandle,
1060 ESYS_TR shandle1,
1061 ESYS_TR shandle2,
1062 ESYS_TR shandle3,
1063 const TPM2B_SENSITIVE_CREATE *inSensitive,
1064 const TPM2B_TEMPLATE *inPublic,
1065 ESYS_TR *objectHandle,
1066 TPM2B_PRIVATE **outPrivate,
1067 TPM2B_PUBLIC **outPublic);
1068
1069TSS2_RC
1070Esys_CreateLoaded_Async(
1071 ESYS_CONTEXT *esysContext,
1072 ESYS_TR parentHandle,
1073 ESYS_TR shandle1,
1074 ESYS_TR shandle2,
1075 ESYS_TR shandle3,
1076 const TPM2B_SENSITIVE_CREATE *inSensitive,
1077 const TPM2B_TEMPLATE *inPublic);
1078
1079TSS2_RC
1080Esys_CreateLoaded_Finish(
1081 ESYS_CONTEXT *esysContext,
1082 ESYS_TR *objectHandle,
1083 TPM2B_PRIVATE **outPrivate,
1084 TPM2B_PUBLIC **outPublic);
1085
1086/* Table 37 - TPM2_Duplicate Command */
1087
1088TSS2_RC
1089Esys_Duplicate(
1090 ESYS_CONTEXT *esysContext,
1091 ESYS_TR objectHandle,
1092 ESYS_TR newParentHandle,
1093 ESYS_TR shandle1,
1094 ESYS_TR shandle2,
1095 ESYS_TR shandle3,
1096 const TPM2B_DATA *encryptionKeyIn,
1097 const TPMT_SYM_DEF_OBJECT *symmetricAlg,
1098 TPM2B_DATA **encryptionKeyOut,
1099 TPM2B_PRIVATE **duplicate,
1100 TPM2B_ENCRYPTED_SECRET **outSymSeed);
1101
1102TSS2_RC
1103Esys_Duplicate_Async(
1104 ESYS_CONTEXT *esysContext,
1105 ESYS_TR objectHandle,
1106 ESYS_TR newParentHandle,
1107 ESYS_TR shandle1,
1108 ESYS_TR shandle2,
1109 ESYS_TR shandle3,
1110 const TPM2B_DATA *encryptionKeyIn,
1111 const TPMT_SYM_DEF_OBJECT *symmetricAlg);
1112
1113TSS2_RC
1114Esys_Duplicate_Finish(
1115 ESYS_CONTEXT *esysContext,
1116 TPM2B_DATA **encryptionKeyOut,
1117 TPM2B_PRIVATE **duplicate,
1118 TPM2B_ENCRYPTED_SECRET **outSymSeed);
1119
1120/* Table 39 - TPM2_Rewrap Command */
1121
1122TSS2_RC
1123Esys_Rewrap(
1124 ESYS_CONTEXT *esysContext,
1125 ESYS_TR oldParent,
1126 ESYS_TR newParent,
1127 ESYS_TR shandle1,
1128 ESYS_TR shandle2,
1129 ESYS_TR shandle3,
1130 const TPM2B_PRIVATE *inDuplicate,
1131 const TPM2B_NAME *name,
1132 const TPM2B_ENCRYPTED_SECRET *inSymSeed,
1133 TPM2B_PRIVATE **outDuplicate,
1134 TPM2B_ENCRYPTED_SECRET **outSymSeed);
1135
1136TSS2_RC
1137Esys_Rewrap_Async(
1138 ESYS_CONTEXT *esysContext,
1139 ESYS_TR oldParent,
1140 ESYS_TR newParent,
1141 ESYS_TR shandle1,
1142 ESYS_TR shandle2,
1143 ESYS_TR shandle3,
1144 const TPM2B_PRIVATE *inDuplicate,
1145 const TPM2B_NAME *name,
1146 const TPM2B_ENCRYPTED_SECRET *inSymSeed);
1147
1148TSS2_RC
1149Esys_Rewrap_Finish(
1150 ESYS_CONTEXT *esysContext,
1151 TPM2B_PRIVATE **outDuplicate,
1152 TPM2B_ENCRYPTED_SECRET **outSymSeed);
1153
1154/* Table 41 - TPM2_Import Command */
1155
1156TSS2_RC
1157Esys_Import(
1158 ESYS_CONTEXT *esysContext,
1159 ESYS_TR parentHandle,
1160 ESYS_TR shandle1,
1161 ESYS_TR shandle2,
1162 ESYS_TR shandle3,
1163 const TPM2B_DATA *encryptionKey,
1164 const TPM2B_PUBLIC *objectPublic,
1165 const TPM2B_PRIVATE *duplicate,
1166 const TPM2B_ENCRYPTED_SECRET *inSymSeed,
1167 const TPMT_SYM_DEF_OBJECT *symmetricAlg,
1168 TPM2B_PRIVATE **outPrivate);
1169
1170TSS2_RC
1171Esys_Import_Async(
1172 ESYS_CONTEXT *esysContext,
1173 ESYS_TR parentHandle,
1174 ESYS_TR shandle1,
1175 ESYS_TR shandle2,
1176 ESYS_TR shandle3,
1177 const TPM2B_DATA *encryptionKey,
1178 const TPM2B_PUBLIC *objectPublic,
1179 const TPM2B_PRIVATE *duplicate,
1180 const TPM2B_ENCRYPTED_SECRET *inSymSeed,
1181 const TPMT_SYM_DEF_OBJECT *symmetricAlg);
1182
1183TSS2_RC
1184Esys_Import_Finish(
1185 ESYS_CONTEXT *esysContext,
1186 TPM2B_PRIVATE **outPrivate);
1187
1188/* Table 45 - TPM2_RSA_Encrypt Command */
1189
1190TSS2_RC
1191Esys_RSA_Encrypt(
1192 ESYS_CONTEXT *esysContext,
1193 ESYS_TR keyHandle,
1194 ESYS_TR shandle1,
1195 ESYS_TR shandle2,
1196 ESYS_TR shandle3,
1197 const TPM2B_PUBLIC_KEY_RSA *message,
1198 const TPMT_RSA_DECRYPT *inScheme,
1199 const TPM2B_DATA *label,
1200 TPM2B_PUBLIC_KEY_RSA **outData);
1201
1202TSS2_RC
1203Esys_RSA_Encrypt_Async(
1204 ESYS_CONTEXT *esysContext,
1205 ESYS_TR keyHandle,
1206 ESYS_TR shandle1,
1207 ESYS_TR shandle2,
1208 ESYS_TR shandle3,
1209 const TPM2B_PUBLIC_KEY_RSA *message,
1210 const TPMT_RSA_DECRYPT *inScheme,
1211 const TPM2B_DATA *label);
1212
1213TSS2_RC
1214Esys_RSA_Encrypt_Finish(
1215 ESYS_CONTEXT *esysContext,
1216 TPM2B_PUBLIC_KEY_RSA **outData);
1217
1218/* Table 47 - TPM2_RSA_Decrypt Command */
1219
1220TSS2_RC
1221Esys_RSA_Decrypt(
1222 ESYS_CONTEXT *esysContext,
1223 ESYS_TR keyHandle,
1224 ESYS_TR shandle1,
1225 ESYS_TR shandle2,
1226 ESYS_TR shandle3,
1227 const TPM2B_PUBLIC_KEY_RSA *cipherText,
1228 const TPMT_RSA_DECRYPT *inScheme,
1229 const TPM2B_DATA *label,
1230 TPM2B_PUBLIC_KEY_RSA **message);
1231
1232TSS2_RC
1233Esys_RSA_Decrypt_Async(
1234 ESYS_CONTEXT *esysContext,
1235 ESYS_TR keyHandle,
1236 ESYS_TR shandle1,
1237 ESYS_TR shandle2,
1238 ESYS_TR shandle3,
1239 const TPM2B_PUBLIC_KEY_RSA *cipherText,
1240 const TPMT_RSA_DECRYPT *inScheme,
1241 const TPM2B_DATA *label);
1242
1243TSS2_RC
1244Esys_RSA_Decrypt_Finish(
1245 ESYS_CONTEXT *esysContext,
1246 TPM2B_PUBLIC_KEY_RSA **message);
1247
1248/* Table 49 - TPM2_ECDH_KeyGen Command */
1249
1250TSS2_RC
1251Esys_ECDH_KeyGen(
1252 ESYS_CONTEXT *esysContext,
1253 ESYS_TR keyHandle,
1254 ESYS_TR shandle1,
1255 ESYS_TR shandle2,
1256 ESYS_TR shandle3,
1257 TPM2B_ECC_POINT **zPoint,
1258 TPM2B_ECC_POINT **pubPoint);
1259
1260TSS2_RC
1261Esys_ECDH_KeyGen_Async(
1262 ESYS_CONTEXT *esysContext,
1263 ESYS_TR keyHandle,
1264 ESYS_TR shandle1,
1265 ESYS_TR shandle2,
1266 ESYS_TR shandle3);
1267
1268TSS2_RC
1269Esys_ECDH_KeyGen_Finish(
1270 ESYS_CONTEXT *esysContext,
1271 TPM2B_ECC_POINT **zPoint,
1272 TPM2B_ECC_POINT **pubPoint);
1273
1274/* Table 51 - TPM2_ECDH_ZGen Command */
1275
1276TSS2_RC
1277Esys_ECDH_ZGen(
1278 ESYS_CONTEXT *esysContext,
1279 ESYS_TR keyHandle,
1280 ESYS_TR shandle1,
1281 ESYS_TR shandle2,
1282 ESYS_TR shandle3,
1283 const TPM2B_ECC_POINT *inPoint,
1284 TPM2B_ECC_POINT **outPoint);
1285
1286TSS2_RC
1287Esys_ECDH_ZGen_Async(
1288 ESYS_CONTEXT *esysContext,
1289 ESYS_TR keyHandle,
1290 ESYS_TR shandle1,
1291 ESYS_TR shandle2,
1292 ESYS_TR shandle3,
1293 const TPM2B_ECC_POINT *inPoint);
1294
1295TSS2_RC
1296Esys_ECDH_ZGen_Finish(
1297 ESYS_CONTEXT *esysContext,
1298 TPM2B_ECC_POINT **outPoint);
1299
1300/* Table 53 - TPM2_ECC_Parameters Command */
1301
1302TSS2_RC
1303Esys_ECC_Parameters(
1304 ESYS_CONTEXT *esysContext,
1305 ESYS_TR shandle1,
1306 ESYS_TR shandle2,
1307 ESYS_TR shandle3,
1308 TPMI_ECC_CURVE curveID,
1309 TPMS_ALGORITHM_DETAIL_ECC **parameters);
1310
1311TSS2_RC
1312Esys_ECC_Parameters_Async(
1313 ESYS_CONTEXT *esysContext,
1314 ESYS_TR shandle1,
1315 ESYS_TR shandle2,
1316 ESYS_TR shandle3,
1317 TPMI_ECC_CURVE curveID);
1318
1319TSS2_RC
1320Esys_ECC_Parameters_Finish(
1321 ESYS_CONTEXT *esysContext,
1322 TPMS_ALGORITHM_DETAIL_ECC **parameters);
1323
1324/* Table 55 - TPM2_ZGen_2Phase Command */
1325
1326TSS2_RC
1327Esys_ZGen_2Phase(
1328 ESYS_CONTEXT *esysContext,
1329 ESYS_TR keyA,
1330 ESYS_TR shandle1,
1331 ESYS_TR shandle2,
1332 ESYS_TR shandle3,
1333 const TPM2B_ECC_POINT *inQsB,
1334 const TPM2B_ECC_POINT *inQeB,
1335 TPMI_ECC_KEY_EXCHANGE inScheme,
1336 UINT16 counter,
1337 TPM2B_ECC_POINT **outZ1,
1338 TPM2B_ECC_POINT **outZ2);
1339
1340TSS2_RC
1341Esys_ZGen_2Phase_Async(
1342 ESYS_CONTEXT *esysContext,
1343 ESYS_TR keyA,
1344 ESYS_TR shandle1,
1345 ESYS_TR shandle2,
1346 ESYS_TR shandle3,
1347 const TPM2B_ECC_POINT *inQsB,
1348 const TPM2B_ECC_POINT *inQeB,
1349 TPMI_ECC_KEY_EXCHANGE inScheme,
1350 UINT16 counter);
1351
1352TSS2_RC
1353Esys_ZGen_2Phase_Finish(
1354 ESYS_CONTEXT *esysContext,
1355 TPM2B_ECC_POINT **outZ1,
1356 TPM2B_ECC_POINT **outZ2);
1357
1358/* Table 58 - TPM2_EncryptDecrypt Command */
1359
1360TSS2_RC
1361Esys_EncryptDecrypt(
1362 ESYS_CONTEXT *esysContext,
1363 ESYS_TR keyHandle,
1364 ESYS_TR shandle1,
1365 ESYS_TR shandle2,
1366 ESYS_TR shandle3,
1367 TPMI_YES_NO decrypt,
1368 TPMI_ALG_CIPHER_MODE mode,
1369 const TPM2B_IV *ivIn,
1370 const TPM2B_MAX_BUFFER *inData,
1371 TPM2B_MAX_BUFFER **outData,
1372 TPM2B_IV **ivOut);
1373
1374TSS2_RC
1375Esys_EncryptDecrypt_Async(
1376 ESYS_CONTEXT *esysContext,
1377 ESYS_TR keyHandle,
1378 ESYS_TR shandle1,
1379 ESYS_TR shandle2,
1380 ESYS_TR shandle3,
1381 TPMI_YES_NO decrypt,
1382 TPMI_ALG_CIPHER_MODE mode,
1383 const TPM2B_IV *ivIn,
1384 const TPM2B_MAX_BUFFER *inData);
1385
1386TSS2_RC
1387Esys_EncryptDecrypt_Finish(
1388 ESYS_CONTEXT *esysContext,
1389 TPM2B_MAX_BUFFER **outData,
1390 TPM2B_IV **ivOut);
1391
1392/* Table 60 - TPM2_EncryptDecrypt2 Command */
1393
1394TSS2_RC
1395Esys_EncryptDecrypt2(
1396 ESYS_CONTEXT *esysContext,
1397 ESYS_TR keyHandle,
1398 ESYS_TR shandle1,
1399 ESYS_TR shandle2,
1400 ESYS_TR shandle3,
1401 const TPM2B_MAX_BUFFER *inData,
1402 TPMI_YES_NO decrypt,
1403 TPMI_ALG_CIPHER_MODE mode,
1404 const TPM2B_IV *ivIn,
1405 TPM2B_MAX_BUFFER **outData,
1406 TPM2B_IV **ivOut);
1407
1408TSS2_RC
1409Esys_EncryptDecrypt2_Async(
1410 ESYS_CONTEXT *esysContext,
1411 ESYS_TR keyHandle,
1412 ESYS_TR shandle1,
1413 ESYS_TR shandle2,
1414 ESYS_TR shandle3,
1415 const TPM2B_MAX_BUFFER *inData,
1416 TPMI_YES_NO decrypt,
1417 TPMI_ALG_CIPHER_MODE mode,
1418 const TPM2B_IV *ivIn);
1419
1420TSS2_RC
1421Esys_EncryptDecrypt2_Finish(
1422 ESYS_CONTEXT *esysContext,
1423 TPM2B_MAX_BUFFER **outData,
1424 TPM2B_IV **ivOut);
1425
1426/* Table 62 - TPM2_Hash Command */
1427
1428TSS2_RC
1429Esys_Hash(
1430 ESYS_CONTEXT *esysContext,
1431 ESYS_TR shandle1,
1432 ESYS_TR shandle2,
1433 ESYS_TR shandle3,
1434 const TPM2B_MAX_BUFFER *data,
1435 TPMI_ALG_HASH hashAlg,
1436 ESYS_TR hierarchy,
1437 TPM2B_DIGEST **outHash,
1438 TPMT_TK_HASHCHECK **validation);
1439
1440TSS2_RC
1441Esys_Hash_Async(
1442 ESYS_CONTEXT *esysContext,
1443 ESYS_TR shandle1,
1444 ESYS_TR shandle2,
1445 ESYS_TR shandle3,
1446 const TPM2B_MAX_BUFFER *data,
1447 TPMI_ALG_HASH hashAlg,
1448 ESYS_TR hierarchy);
1449
1450TSS2_RC
1451Esys_Hash_Finish(
1452 ESYS_CONTEXT *esysContext,
1453 TPM2B_DIGEST **outHash,
1454 TPMT_TK_HASHCHECK **validation);
1455
1456/* Table 64 - TPM2_HMAC Command */
1457
1458TSS2_RC
1459Esys_HMAC(
1460 ESYS_CONTEXT *esysContext,
1461 ESYS_TR handle,
1462 ESYS_TR shandle1,
1463 ESYS_TR shandle2,
1464 ESYS_TR shandle3,
1465 const TPM2B_MAX_BUFFER *buffer,
1466 TPMI_ALG_HASH hashAlg,
1467 TPM2B_DIGEST **outHMAC);
1468
1469TSS2_RC
1470Esys_HMAC_Async(
1471 ESYS_CONTEXT *esysContext,
1472 ESYS_TR handle,
1473 ESYS_TR shandle1,
1474 ESYS_TR shandle2,
1475 ESYS_TR shandle3,
1476 const TPM2B_MAX_BUFFER *buffer,
1477 TPMI_ALG_HASH hashAlg);
1478
1479TSS2_RC
1480Esys_HMAC_Finish(
1481 ESYS_CONTEXT *esysContext,
1482 TPM2B_DIGEST **outHMAC);
1483
1484TSS2_RC
1485Esys_MAC_Async(
1486 ESYS_CONTEXT *esysContext,
1487 ESYS_TR handle,
1488 ESYS_TR handleSession1,
1489 ESYS_TR optionalSession2,
1490 ESYS_TR optionalSession3,
1491 const TPM2B_MAX_BUFFER *buffer,
1492 TPMI_ALG_MAC_SCHEME inScheme);
1493
1494TSS2_RC
1495Esys_MAC_Finish(
1496 ESYS_CONTEXT *esysContext,
1497 TPM2B_DIGEST **outMAC);
1498
1499TSS2_RC
1500Esys_MAC(
1501 ESYS_CONTEXT *esysContext,
1502 ESYS_TR handle,
1503 ESYS_TR handleSession1,
1504 ESYS_TR optionalSession2,
1505 ESYS_TR optionalSession3,
1506 const TPM2B_MAX_BUFFER *buffer,
1507 TPMI_ALG_MAC_SCHEME inScheme,
1508 TPM2B_DIGEST **outMAC);
1509
1510/* Table 66 - TPM2_GetRandom Command */
1511
1512TSS2_RC
1513Esys_GetRandom(
1514 ESYS_CONTEXT *esysContext,
1515 ESYS_TR shandle1,
1516 ESYS_TR shandle2,
1517 ESYS_TR shandle3,
1518 UINT16 bytesRequested,
1519 TPM2B_DIGEST **randomBytes);
1520
1521TSS2_RC
1522Esys_GetRandom_Async(
1523 ESYS_CONTEXT *esysContext,
1524 ESYS_TR shandle1,
1525 ESYS_TR shandle2,
1526 ESYS_TR shandle3,
1527 UINT16 bytesRequested);
1528
1529TSS2_RC
1530Esys_GetRandom_Finish(
1531 ESYS_CONTEXT *esysContext,
1532 TPM2B_DIGEST **randomBytes);
1533
1534/* Table 68 - TPM2_StirRandom Command */
1535
1536TSS2_RC
1537Esys_StirRandom(
1538 ESYS_CONTEXT *esysContext,
1539 ESYS_TR shandle1,
1540 ESYS_TR shandle2,
1541 ESYS_TR shandle3,
1542 const TPM2B_SENSITIVE_DATA *inData);
1543
1544TSS2_RC
1545Esys_StirRandom_Async(
1546 ESYS_CONTEXT *esysContext,
1547 ESYS_TR shandle1,
1548 ESYS_TR shandle2,
1549 ESYS_TR shandle3,
1550 const TPM2B_SENSITIVE_DATA *inData);
1551
1552TSS2_RC
1553Esys_StirRandom_Finish(
1554 ESYS_CONTEXT *esysContext);
1555
1556/* Table 71 - TPM2_HMAC_Start Command */
1557
1558TSS2_RC
1559Esys_HMAC_Start(
1560 ESYS_CONTEXT *esysContext,
1561 ESYS_TR handle,
1562 ESYS_TR shandle1,
1563 ESYS_TR shandle2,
1564 ESYS_TR shandle3,
1565 const TPM2B_AUTH *auth,
1566 TPMI_ALG_HASH hashAlg,
1567 ESYS_TR *sequenceHandle);
1568
1569TSS2_RC
1570Esys_HMAC_Start_Async(
1571 ESYS_CONTEXT *esysContext,
1572 ESYS_TR handle,
1573 ESYS_TR shandle1,
1574 ESYS_TR shandle2,
1575 ESYS_TR shandle3,
1576 const TPM2B_AUTH *auth,
1577 TPMI_ALG_HASH hashAlg);
1578
1579TSS2_RC
1580Esys_HMAC_Start_Finish(
1581 ESYS_CONTEXT *esysContext,
1582 ESYS_TR *sequenceHandle);
1583
1584TSS2_RC
1585Esys_MAC_Start(
1586 ESYS_CONTEXT *esysContext,
1587 ESYS_TR handle,
1588 ESYS_TR handleSession1,
1589 ESYS_TR optionalSession2,
1590 ESYS_TR optionalSession3,
1591 const TPM2B_AUTH *auth,
1592 TPMI_ALG_MAC_SCHEME inScheme,
1593 ESYS_TR *sequenceHandle);
1594
1595TSS2_RC
1596Esys_MAC_Start_Async(
1597 ESYS_CONTEXT *esysContext,
1598 ESYS_TR handle,
1599 ESYS_TR handleSession1,
1600 ESYS_TR optionalSession2,
1601 ESYS_TR optionalSession3,
1602 const TPM2B_AUTH *auth,
1603 TPMI_ALG_MAC_SCHEME inScheme);
1604
1605TSS2_RC
1606Esys_MAC_Start_Finish(
1607 ESYS_CONTEXT *esysContext,
1608 ESYS_TR *sequenceHandle);
1609
1610/* Table 73 - TPM2_HashSequenceStart Command */
1611
1612TSS2_RC
1613Esys_HashSequenceStart(
1614 ESYS_CONTEXT *esysContext,
1615 ESYS_TR shandle1,
1616 ESYS_TR shandle2,
1617 ESYS_TR shandle3,
1618 const TPM2B_AUTH *auth,
1619 TPMI_ALG_HASH hashAlg,
1620 ESYS_TR *sequenceHandle);
1621
1622TSS2_RC
1623Esys_HashSequenceStart_Async(
1624 ESYS_CONTEXT *esysContext,
1625 ESYS_TR shandle1,
1626 ESYS_TR shandle2,
1627 ESYS_TR shandle3,
1628 const TPM2B_AUTH *auth,
1629 TPMI_ALG_HASH hashAlg);
1630
1631TSS2_RC
1632Esys_HashSequenceStart_Finish(
1633 ESYS_CONTEXT *esysContext,
1634 ESYS_TR *sequenceHandle);
1635
1636/* Table 75 - TPM2_SequenceUpdate Command */
1637
1638TSS2_RC
1639Esys_SequenceUpdate(
1640 ESYS_CONTEXT *esysContext,
1641 ESYS_TR sequenceHandle,
1642 ESYS_TR shandle1,
1643 ESYS_TR shandle2,
1644 ESYS_TR shandle3,
1645 const TPM2B_MAX_BUFFER *buffer);
1646
1647TSS2_RC
1648Esys_SequenceUpdate_Async(
1649 ESYS_CONTEXT *esysContext,
1650 ESYS_TR sequenceHandle,
1651 ESYS_TR shandle1,
1652 ESYS_TR shandle2,
1653 ESYS_TR shandle3,
1654 const TPM2B_MAX_BUFFER *buffer);
1655
1656TSS2_RC
1657Esys_SequenceUpdate_Finish(
1658 ESYS_CONTEXT *esysContext);
1659
1660/* Table 77 - TPM2_SequenceComplete Command */
1661
1662TSS2_RC
1663Esys_SequenceComplete(
1664 ESYS_CONTEXT *esysContext,
1665 ESYS_TR sequenceHandle,
1666 ESYS_TR shandle1,
1667 ESYS_TR shandle2,
1668 ESYS_TR shandle3,
1669 const TPM2B_MAX_BUFFER *buffer,
1670 ESYS_TR hierarchy,
1671 TPM2B_DIGEST **result,
1672 TPMT_TK_HASHCHECK **validation);
1673
1674TSS2_RC
1675Esys_SequenceComplete_Async(
1676 ESYS_CONTEXT *esysContext,
1677 ESYS_TR sequenceHandle,
1678 ESYS_TR shandle1,
1679 ESYS_TR shandle2,
1680 ESYS_TR shandle3,
1681 const TPM2B_MAX_BUFFER *buffer,
1682 ESYS_TR hierarchy);
1683
1684TSS2_RC
1685Esys_SequenceComplete_Finish(
1686 ESYS_CONTEXT *esysContext,
1687 TPM2B_DIGEST **result,
1688 TPMT_TK_HASHCHECK **validation);
1689
1690/* Table 79 - TPM2_EventSequenceComplete Command */
1691
1692TSS2_RC
1693Esys_EventSequenceComplete(
1694 ESYS_CONTEXT *esysContext,
1695 ESYS_TR pcrHandle,
1696 ESYS_TR sequenceHandle,
1697 ESYS_TR shandle1,
1698 ESYS_TR shandle2,
1699 ESYS_TR shandle3,
1700 const TPM2B_MAX_BUFFER *buffer,
1701 TPML_DIGEST_VALUES **results);
1702
1703TSS2_RC
1704Esys_EventSequenceComplete_Async(
1705 ESYS_CONTEXT *esysContext,
1706 ESYS_TR pcrHandle,
1707 ESYS_TR sequenceHandle,
1708 ESYS_TR shandle1,
1709 ESYS_TR shandle2,
1710 ESYS_TR shandle3,
1711 const TPM2B_MAX_BUFFER *buffer);
1712
1713TSS2_RC
1714Esys_EventSequenceComplete_Finish(
1715 ESYS_CONTEXT *esysContext,
1716 TPML_DIGEST_VALUES **results);
1717
1718/* Table 81 - TPM2_Certify Command */
1719
1720TSS2_RC
1721Esys_Certify(
1722 ESYS_CONTEXT *esysContext,
1723 ESYS_TR objectHandle,
1724 ESYS_TR signHandle,
1725 ESYS_TR shandle1,
1726 ESYS_TR shandle2,
1727 ESYS_TR shandle3,
1728 const TPM2B_DATA *qualifyingData,
1729 const TPMT_SIG_SCHEME *inScheme,
1730 TPM2B_ATTEST **certifyInfo,
1731 TPMT_SIGNATURE **signature);
1732
1733TSS2_RC
1734Esys_Certify_Async(
1735 ESYS_CONTEXT *esysContext,
1736 ESYS_TR objectHandle,
1737 ESYS_TR signHandle,
1738 ESYS_TR shandle1,
1739 ESYS_TR shandle2,
1740 ESYS_TR shandle3,
1741 const TPM2B_DATA *qualifyingData,
1742 const TPMT_SIG_SCHEME *inScheme);
1743
1744TSS2_RC
1745Esys_Certify_Finish(
1746 ESYS_CONTEXT *esysContext,
1747 TPM2B_ATTEST **certifyInfo,
1748 TPMT_SIGNATURE **signature);
1749
1750/* Table 83 - TPM2_CertifyCreation Command */
1751
1752TSS2_RC
1753Esys_CertifyCreation(
1754 ESYS_CONTEXT *esysContext,
1755 ESYS_TR signHandle,
1756 ESYS_TR objectHandle,
1757 ESYS_TR shandle1,
1758 ESYS_TR shandle2,
1759 ESYS_TR shandle3,
1760 const TPM2B_DATA *qualifyingData,
1761 const TPM2B_DIGEST *creationHash,
1762 const TPMT_SIG_SCHEME *inScheme,
1763 const TPMT_TK_CREATION *creationTicket,
1764 TPM2B_ATTEST **certifyInfo,
1765 TPMT_SIGNATURE **signature);
1766
1767TSS2_RC
1768Esys_CertifyCreation_Async(
1769 ESYS_CONTEXT *esysContext,
1770 ESYS_TR signHandle,
1771 ESYS_TR objectHandle,
1772 ESYS_TR shandle1,
1773 ESYS_TR shandle2,
1774 ESYS_TR shandle3,
1775 const TPM2B_DATA *qualifyingData,
1776 const TPM2B_DIGEST *creationHash,
1777 const TPMT_SIG_SCHEME *inScheme,
1778 const TPMT_TK_CREATION *creationTicket);
1779
1780TSS2_RC
1781Esys_CertifyCreation_Finish(
1782 ESYS_CONTEXT *esysContext,
1783 TPM2B_ATTEST **certifyInfo,
1784 TPMT_SIGNATURE **signature);
1785
1786TSS2_RC
1787Esys_CertifyX509(
1788 ESYS_CONTEXT *esysContext,
1789 ESYS_TR objectHandle,
1790 ESYS_TR signHandle,
1791 ESYS_TR shandle1,
1792 ESYS_TR shandle2,
1793 ESYS_TR shandle3,
1794 const TPM2B_DATA *reserved,
1795 const TPMT_SIG_SCHEME *inScheme,
1796 const TPM2B_MAX_BUFFER *partialCertificate,
1797 TPM2B_MAX_BUFFER **addedToCertificate,
1798 TPM2B_DIGEST **tbsDigest,
1799 TPMT_SIGNATURE **signature);
1800
1801TSS2_RC
1802Esys_CertifyX509_Async(
1803 ESYS_CONTEXT *esysContext,
1804 ESYS_TR objectHandle,
1805 ESYS_TR signHandle,
1806 ESYS_TR shandle1,
1807 ESYS_TR shandle2,
1808 ESYS_TR shandle3,
1809 const TPM2B_DATA *reserved,
1810 const TPMT_SIG_SCHEME *inScheme,
1811 const TPM2B_MAX_BUFFER *partialCertificate);
1812
1813TSS2_RC
1814Esys_CertifyX509_Finish(
1815 ESYS_CONTEXT *esysContext,
1816 TPM2B_MAX_BUFFER **addedToCertificate,
1817 TPM2B_DIGEST **tbsDigest,
1818 TPMT_SIGNATURE **signature);
1819
1820/* Table 85 - TPM2_Quote Command */
1821
1822TSS2_RC
1823Esys_Quote(
1824 ESYS_CONTEXT *esysContext,
1825 ESYS_TR signHandle,
1826 ESYS_TR shandle1,
1827 ESYS_TR shandle2,
1828 ESYS_TR shandle3,
1829 const TPM2B_DATA *qualifyingData,
1830 const TPMT_SIG_SCHEME *inScheme,
1831 const TPML_PCR_SELECTION *PCRselect,
1832 TPM2B_ATTEST **quoted,
1833 TPMT_SIGNATURE **signature);
1834
1835TSS2_RC
1836Esys_Quote_Async(
1837 ESYS_CONTEXT *esysContext,
1838 ESYS_TR signHandle,
1839 ESYS_TR shandle1,
1840 ESYS_TR shandle2,
1841 ESYS_TR shandle3,
1842 const TPM2B_DATA *qualifyingData,
1843 const TPMT_SIG_SCHEME *inScheme,
1844 const TPML_PCR_SELECTION *PCRselect);
1845
1846TSS2_RC
1847Esys_Quote_Finish(
1848 ESYS_CONTEXT *esysContext,
1849 TPM2B_ATTEST **quoted,
1850 TPMT_SIGNATURE **signature);
1851
1852/* Table 87 - TPM2_GetSessionAuditDigest Command */
1853
1854TSS2_RC
1855Esys_GetSessionAuditDigest(
1856 ESYS_CONTEXT *esysContext,
1857 ESYS_TR privacyAdminHandle,
1858 ESYS_TR signHandle,
1859 ESYS_TR sessionHandle,
1860 ESYS_TR shandle1,
1861 ESYS_TR shandle2,
1862 ESYS_TR shandle3,
1863 const TPM2B_DATA *qualifyingData,
1864 const TPMT_SIG_SCHEME *inScheme,
1865 TPM2B_ATTEST **auditInfo,
1866 TPMT_SIGNATURE **signature);
1867
1868TSS2_RC
1869Esys_GetSessionAuditDigest_Async(
1870 ESYS_CONTEXT *esysContext,
1871 ESYS_TR privacyAdminHandle,
1872 ESYS_TR signHandle,
1873 ESYS_TR sessionHandle,
1874 ESYS_TR shandle1,
1875 ESYS_TR shandle2,
1876 ESYS_TR shandle3,
1877 const TPM2B_DATA *qualifyingData,
1878 const TPMT_SIG_SCHEME *inScheme);
1879
1880TSS2_RC
1881Esys_GetSessionAuditDigest_Finish(
1882 ESYS_CONTEXT *esysContext,
1883 TPM2B_ATTEST **auditInfo,
1884 TPMT_SIGNATURE **signature);
1885
1886/* Table 89 - TPM2_GetCommandAuditDigest Command */
1887
1888TSS2_RC
1889Esys_GetCommandAuditDigest(
1890 ESYS_CONTEXT *esysContext,
1891 ESYS_TR privacyHandle,
1892 ESYS_TR signHandle,
1893 ESYS_TR shandle1,
1894 ESYS_TR shandle2,
1895 ESYS_TR shandle3,
1896 const TPM2B_DATA *qualifyingData,
1897 const TPMT_SIG_SCHEME *inScheme,
1898 TPM2B_ATTEST **auditInfo,
1899 TPMT_SIGNATURE **signature);
1900
1901TSS2_RC
1902Esys_GetCommandAuditDigest_Async(
1903 ESYS_CONTEXT *esysContext,
1904 ESYS_TR privacyHandle,
1905 ESYS_TR signHandle,
1906 ESYS_TR shandle1,
1907 ESYS_TR shandle2,
1908 ESYS_TR shandle3,
1909 const TPM2B_DATA *qualifyingData,
1910 const TPMT_SIG_SCHEME *inScheme);
1911
1912TSS2_RC
1913Esys_GetCommandAuditDigest_Finish(
1914 ESYS_CONTEXT *esysContext,
1915 TPM2B_ATTEST **auditInfo,
1916 TPMT_SIGNATURE **signature);
1917
1918/* Table 91 - TPM2_GetTime Command */
1919
1920TSS2_RC
1921Esys_GetTime(
1922 ESYS_CONTEXT *esysContext,
1923 ESYS_TR privacyAdminHandle,
1924 ESYS_TR signHandle,
1925 ESYS_TR shandle1,
1926 ESYS_TR shandle2,
1927 ESYS_TR shandle3,
1928 const TPM2B_DATA *qualifyingData,
1929 const TPMT_SIG_SCHEME *inScheme,
1930 TPM2B_ATTEST **timeInfo,
1931 TPMT_SIGNATURE **signature);
1932
1933TSS2_RC
1934Esys_GetTime_Async(
1935 ESYS_CONTEXT *esysContext,
1936 ESYS_TR privacyAdminHandle,
1937 ESYS_TR signHandle,
1938 ESYS_TR shandle1,
1939 ESYS_TR shandle2,
1940 ESYS_TR shandle3,
1941 const TPM2B_DATA *qualifyingData,
1942 const TPMT_SIG_SCHEME *inScheme);
1943
1944TSS2_RC
1945Esys_GetTime_Finish(
1946 ESYS_CONTEXT *esysContext,
1947 TPM2B_ATTEST **timeInfo,
1948 TPMT_SIGNATURE **signature);
1949
1950/* Table 93 - TPM2_Commit Command */
1951
1952TSS2_RC
1953Esys_Commit(
1954 ESYS_CONTEXT *esysContext,
1955 ESYS_TR signHandle,
1956 ESYS_TR shandle1,
1957 ESYS_TR shandle2,
1958 ESYS_TR shandle3,
1959 const TPM2B_ECC_POINT *P1,
1960 const TPM2B_SENSITIVE_DATA *s2,
1961 const TPM2B_ECC_PARAMETER *y2,
1962 TPM2B_ECC_POINT **K,
1963 TPM2B_ECC_POINT **L,
1964 TPM2B_ECC_POINT **E,
1965 UINT16 *counter);
1966
1967TSS2_RC
1968Esys_Commit_Async(
1969 ESYS_CONTEXT *esysContext,
1970 ESYS_TR signHandle,
1971 ESYS_TR shandle1,
1972 ESYS_TR shandle2,
1973 ESYS_TR shandle3,
1974 const TPM2B_ECC_POINT *P1,
1975 const TPM2B_SENSITIVE_DATA *s2,
1976 const TPM2B_ECC_PARAMETER *y2);
1977
1978TSS2_RC
1979Esys_Commit_Finish(
1980 ESYS_CONTEXT *esysContext,
1981 TPM2B_ECC_POINT **K,
1982 TPM2B_ECC_POINT **L,
1983 TPM2B_ECC_POINT **E,
1984 UINT16 *counter);
1985
1986/* Table 95 - TPM2_EC_Ephemeral Command */
1987
1988TSS2_RC
1989Esys_EC_Ephemeral(
1990 ESYS_CONTEXT *esysContext,
1991 ESYS_TR shandle1,
1992 ESYS_TR shandle2,
1993 ESYS_TR shandle3,
1994 TPMI_ECC_CURVE curveID,
1995 TPM2B_ECC_POINT **Q,
1996 UINT16 *counter);
1997
1998TSS2_RC
1999Esys_EC_Ephemeral_Async(
2000 ESYS_CONTEXT *esysContext,
2001 ESYS_TR shandle1,
2002 ESYS_TR shandle2,
2003 ESYS_TR shandle3,
2004 TPMI_ECC_CURVE curveID);
2005
2006TSS2_RC
2007Esys_EC_Ephemeral_Finish(
2008 ESYS_CONTEXT *esysContext,
2009 TPM2B_ECC_POINT **Q,
2010 UINT16 *counter);
2011
2012/* Table 97 - TPM2_VerifySignature Command */
2013
2014TSS2_RC
2015Esys_VerifySignature(
2016 ESYS_CONTEXT *esysContext,
2017 ESYS_TR keyHandle,
2018 ESYS_TR shandle1,
2019 ESYS_TR shandle2,
2020 ESYS_TR shandle3,
2021 const TPM2B_DIGEST *digest,
2022 const TPMT_SIGNATURE *signature,
2023 TPMT_TK_VERIFIED **validation);
2024
2025TSS2_RC
2026Esys_VerifySignature_Async(
2027 ESYS_CONTEXT *esysContext,
2028 ESYS_TR keyHandle,
2029 ESYS_TR shandle1,
2030 ESYS_TR shandle2,
2031 ESYS_TR shandle3,
2032 const TPM2B_DIGEST *digest,
2033 const TPMT_SIGNATURE *signature);
2034
2035TSS2_RC
2036Esys_VerifySignature_Finish(
2037 ESYS_CONTEXT *esysContext,
2038 TPMT_TK_VERIFIED **validation);
2039
2040/* Table 99 - TPM2_Sign Command */
2041
2042TSS2_RC
2043Esys_Sign(
2044 ESYS_CONTEXT *esysContext,
2045 ESYS_TR keyHandle,
2046 ESYS_TR shandle1,
2047 ESYS_TR shandle2,
2048 ESYS_TR shandle3,
2049 const TPM2B_DIGEST *digest,
2050 const TPMT_SIG_SCHEME *inScheme,
2051 const TPMT_TK_HASHCHECK *validation,
2052 TPMT_SIGNATURE **signature);
2053
2054TSS2_RC
2055Esys_Sign_Async(
2056 ESYS_CONTEXT *esysContext,
2057 ESYS_TR keyHandle,
2058 ESYS_TR shandle1,
2059 ESYS_TR shandle2,
2060 ESYS_TR shandle3,
2061 const TPM2B_DIGEST *digest,
2062 const TPMT_SIG_SCHEME *inScheme,
2063 const TPMT_TK_HASHCHECK *validation);
2064
2065TSS2_RC
2066Esys_Sign_Finish(
2067 ESYS_CONTEXT *esysContext,
2068 TPMT_SIGNATURE **signature);
2069
2070/* Table 101 - TPM2_SetCommandCodeAuditStatus Command */
2071
2072TSS2_RC
2073Esys_SetCommandCodeAuditStatus(
2074 ESYS_CONTEXT *esysContext,
2075 ESYS_TR auth,
2076 ESYS_TR shandle1,
2077 ESYS_TR shandle2,
2078 ESYS_TR shandle3,
2079 TPMI_ALG_HASH auditAlg,
2080 const TPML_CC *setList,
2081 const TPML_CC *clearList);
2082
2083TSS2_RC
2084Esys_SetCommandCodeAuditStatus_Async(
2085 ESYS_CONTEXT *esysContext,
2086 ESYS_TR auth,
2087 ESYS_TR shandle1,
2088 ESYS_TR shandle2,
2089 ESYS_TR shandle3,
2090 TPMI_ALG_HASH auditAlg,
2091 const TPML_CC *setList,
2092 const TPML_CC *clearList);
2093
2094TSS2_RC
2095Esys_SetCommandCodeAuditStatus_Finish(
2096 ESYS_CONTEXT *esysContext);
2097
2098/* Table 103 - TPM2_PCR_Extend Command */
2099
2100TSS2_RC
2101Esys_PCR_Extend(
2102 ESYS_CONTEXT *esysContext,
2103 ESYS_TR pcrHandle,
2104 ESYS_TR shandle1,
2105 ESYS_TR shandle2,
2106 ESYS_TR shandle3,
2107 const TPML_DIGEST_VALUES *digests);
2108
2109TSS2_RC
2110Esys_PCR_Extend_Async(
2111 ESYS_CONTEXT *esysContext,
2112 ESYS_TR pcrHandle,
2113 ESYS_TR shandle1,
2114 ESYS_TR shandle2,
2115 ESYS_TR shandle3,
2116 const TPML_DIGEST_VALUES *digests);
2117
2118TSS2_RC
2119Esys_PCR_Extend_Finish(
2120 ESYS_CONTEXT *esysContext);
2121
2122/* Table 105 - TPM2_PCR_Event Command */
2123
2124TSS2_RC
2125Esys_PCR_Event(
2126 ESYS_CONTEXT *esysContext,
2127 ESYS_TR pcrHandle,
2128 ESYS_TR shandle1,
2129 ESYS_TR shandle2,
2130 ESYS_TR shandle3,
2131 const TPM2B_EVENT *eventData,
2132 TPML_DIGEST_VALUES **digests);
2133
2134TSS2_RC
2135Esys_PCR_Event_Async(
2136 ESYS_CONTEXT *esysContext,
2137 ESYS_TR pcrHandle,
2138 ESYS_TR shandle1,
2139 ESYS_TR shandle2,
2140 ESYS_TR shandle3,
2141 const TPM2B_EVENT *eventData);
2142
2143TSS2_RC
2144Esys_PCR_Event_Finish(
2145 ESYS_CONTEXT *esysContext,
2146 TPML_DIGEST_VALUES **digests);
2147
2148/* Table 107 - TPM2_PCR_Read Command */
2149
2150TSS2_RC
2151Esys_PCR_Read(
2152 ESYS_CONTEXT *esysContext,
2153 ESYS_TR shandle1,
2154 ESYS_TR shandle2,
2155 ESYS_TR shandle3,
2156 const TPML_PCR_SELECTION *pcrSelectionIn,
2157 UINT32 *pcrUpdateCounter,
2158 TPML_PCR_SELECTION **pcrSelectionOut,
2159 TPML_DIGEST **pcrValues);
2160
2161TSS2_RC
2162Esys_PCR_Read_Async(
2163 ESYS_CONTEXT *esysContext,
2164 ESYS_TR shandle1,
2165 ESYS_TR shandle2,
2166 ESYS_TR shandle3,
2167 const TPML_PCR_SELECTION *pcrSelectionIn);
2168
2169TSS2_RC
2170Esys_PCR_Read_Finish(
2171 ESYS_CONTEXT *esysContext,
2172 UINT32 *pcrUpdateCounter,
2173 TPML_PCR_SELECTION **pcrSelectionOut,
2174 TPML_DIGEST **pcrValues);
2175
2176/* Table 109 - TPM2_PCR_Allocate Command */
2177
2178TSS2_RC
2179Esys_PCR_Allocate(
2180 ESYS_CONTEXT *esysContext,
2181 ESYS_TR authHandle,
2182 ESYS_TR shandle1,
2183 ESYS_TR shandle2,
2184 ESYS_TR shandle3,
2185 const TPML_PCR_SELECTION *pcrAllocation,
2186 TPMI_YES_NO *allocationSuccess,
2187 UINT32 *maxPCR,
2188 UINT32 *sizeNeeded,
2189 UINT32 *sizeAvailable);
2190
2191TSS2_RC
2192Esys_PCR_Allocate_Async(
2193 ESYS_CONTEXT *esysContext,
2194 ESYS_TR authHandle,
2195 ESYS_TR shandle1,
2196 ESYS_TR shandle2,
2197 ESYS_TR shandle3,
2198 const TPML_PCR_SELECTION *pcrAllocation);
2199
2200TSS2_RC
2201Esys_PCR_Allocate_Finish(
2202 ESYS_CONTEXT *esysContext,
2203 TPMI_YES_NO *allocationSuccess,
2204 UINT32 *maxPCR,
2205 UINT32 *sizeNeeded,
2206 UINT32 *sizeAvailable);
2207
2208/* Table 111 - TPM2_PCR_SetAuthPolicy Command */
2209
2210TSS2_RC
2211Esys_PCR_SetAuthPolicy(
2212 ESYS_CONTEXT *esysContext,
2213 ESYS_TR authHandle,
2214 ESYS_TR shandle1,
2215 ESYS_TR shandle2,
2216 ESYS_TR shandle3,
2217 const TPM2B_DIGEST *authPolicy,
2218 TPMI_ALG_HASH hashAlg,
2219 TPMI_DH_PCR pcrNum);
2220
2221TSS2_RC
2222Esys_PCR_SetAuthPolicy_Async(
2223 ESYS_CONTEXT *esysContext,
2224 ESYS_TR authHandle,
2225 ESYS_TR shandle1,
2226 ESYS_TR shandle2,
2227 ESYS_TR shandle3,
2228 const TPM2B_DIGEST *authPolicy,
2229 TPMI_ALG_HASH hashAlg,
2230 TPMI_DH_PCR pcrNum);
2231
2232TSS2_RC
2233Esys_PCR_SetAuthPolicy_Finish(
2234 ESYS_CONTEXT *esysContext);
2235
2236/* Table 113 - TPM2_PCR_SetAuthValue Command */
2237
2238TSS2_RC
2239Esys_PCR_SetAuthValue(
2240 ESYS_CONTEXT *esysContext,
2241 ESYS_TR pcrHandle,
2242 ESYS_TR shandle1,
2243 ESYS_TR shandle2,
2244 ESYS_TR shandle3,
2245 const TPM2B_DIGEST *auth);
2246
2247TSS2_RC
2248Esys_PCR_SetAuthValue_Async(
2249 ESYS_CONTEXT *esysContext,
2250 ESYS_TR pcrHandle,
2251 ESYS_TR shandle1,
2252 ESYS_TR shandle2,
2253 ESYS_TR shandle3,
2254 const TPM2B_DIGEST *auth);
2255
2256TSS2_RC
2257Esys_PCR_SetAuthValue_Finish(
2258 ESYS_CONTEXT *esysContext);
2259
2260/* Table 115 - TPM2_PCR_Reset Command */
2261
2262TSS2_RC
2263Esys_PCR_Reset(
2264 ESYS_CONTEXT *esysContext,
2265 ESYS_TR pcrHandle,
2266 ESYS_TR shandle1,
2267 ESYS_TR shandle2,
2268 ESYS_TR shandle3);
2269
2270TSS2_RC
2271Esys_PCR_Reset_Async(
2272 ESYS_CONTEXT *esysContext,
2273 ESYS_TR pcrHandle,
2274 ESYS_TR shandle1,
2275 ESYS_TR shandle2,
2276 ESYS_TR shandle3);
2277
2278TSS2_RC
2279Esys_PCR_Reset_Finish(
2280 ESYS_CONTEXT *esysContext);
2281
2282/* Table 117 - TPM2_PolicySigned Command */
2283
2284TSS2_RC
2285Esys_PolicySigned(
2286 ESYS_CONTEXT *esysContext,
2287 ESYS_TR authObject,
2288 ESYS_TR policySession,
2289 ESYS_TR shandle1,
2290 ESYS_TR shandle2,
2291 ESYS_TR shandle3,
2292 const TPM2B_NONCE *nonceTPM,
2293 const TPM2B_DIGEST *cpHashA,
2294 const TPM2B_NONCE *policyRef,
2295 INT32 expiration,
2296 const TPMT_SIGNATURE *auth,
2297 TPM2B_TIMEOUT **timeout,
2298 TPMT_TK_AUTH **policyTicket);
2299
2300TSS2_RC
2301Esys_PolicySigned_Async(
2302 ESYS_CONTEXT *esysContext,
2303 ESYS_TR authObject,
2304 ESYS_TR policySession,
2305 ESYS_TR shandle1,
2306 ESYS_TR shandle2,
2307 ESYS_TR shandle3,
2308 const TPM2B_NONCE *nonceTPM,
2309 const TPM2B_DIGEST *cpHashA,
2310 const TPM2B_NONCE *policyRef,
2311 INT32 expiration,
2312 const TPMT_SIGNATURE *auth);
2313
2314TSS2_RC
2315Esys_PolicySigned_Finish(
2316 ESYS_CONTEXT *esysContext,
2317 TPM2B_TIMEOUT **timeout,
2318 TPMT_TK_AUTH **policyTicket);
2319
2320/* Table 119 - TPM2_PolicySecret Command */
2321
2322TSS2_RC
2323Esys_PolicySecret(
2324 ESYS_CONTEXT *esysContext,
2325 ESYS_TR authHandle,
2326 ESYS_TR policySession,
2327 ESYS_TR shandle1,
2328 ESYS_TR shandle2,
2329 ESYS_TR shandle3,
2330 const TPM2B_NONCE *nonceTPM,
2331 const TPM2B_DIGEST *cpHashA,
2332 const TPM2B_NONCE *policyRef,
2333 INT32 expiration,
2334 TPM2B_TIMEOUT **timeout,
2335 TPMT_TK_AUTH **policyTicket);
2336
2337TSS2_RC
2338Esys_PolicySecret_Async(
2339 ESYS_CONTEXT *esysContext,
2340 ESYS_TR authHandle,
2341 ESYS_TR policySession,
2342 ESYS_TR shandle1,
2343 ESYS_TR shandle2,
2344 ESYS_TR shandle3,
2345 const TPM2B_NONCE *nonceTPM,
2346 const TPM2B_DIGEST *cpHashA,
2347 const TPM2B_NONCE *policyRef,
2348 INT32 expiration);
2349
2350TSS2_RC
2351Esys_PolicySecret_Finish(
2352 ESYS_CONTEXT *esysContext,
2353 TPM2B_TIMEOUT **timeout,
2354 TPMT_TK_AUTH **policyTicket);
2355
2356/* Table 121 - TPM2_PolicyTicket Command */
2357
2358TSS2_RC
2359Esys_PolicyTicket(
2360 ESYS_CONTEXT *esysContext,
2361 ESYS_TR policySession,
2362 ESYS_TR shandle1,
2363 ESYS_TR shandle2,
2364 ESYS_TR shandle3,
2365 const TPM2B_TIMEOUT *timeout,
2366 const TPM2B_DIGEST *cpHashA,
2367 const TPM2B_NONCE *policyRef,
2368 const TPM2B_NAME *authName,
2369 const TPMT_TK_AUTH *ticket);
2370
2371TSS2_RC
2372Esys_PolicyTicket_Async(
2373 ESYS_CONTEXT *esysContext,
2374 ESYS_TR policySession,
2375 ESYS_TR shandle1,
2376 ESYS_TR shandle2,
2377 ESYS_TR shandle3,
2378 const TPM2B_TIMEOUT *timeout,
2379 const TPM2B_DIGEST *cpHashA,
2380 const TPM2B_NONCE *policyRef,
2381 const TPM2B_NAME *authName,
2382 const TPMT_TK_AUTH *ticket);
2383
2384TSS2_RC
2385Esys_PolicyTicket_Finish(
2386 ESYS_CONTEXT *esysContext);
2387
2388/* Table 123 - TPM2_PolicyOR Command */
2389
2390TSS2_RC
2391Esys_PolicyOR(
2392 ESYS_CONTEXT *esysContext,
2393 ESYS_TR policySession,
2394 ESYS_TR shandle1,
2395 ESYS_TR shandle2,
2396 ESYS_TR shandle3,
2397 const TPML_DIGEST *pHashList);
2398
2399TSS2_RC
2400Esys_PolicyOR_Async(
2401 ESYS_CONTEXT *esysContext,
2402 ESYS_TR policySession,
2403 ESYS_TR shandle1,
2404 ESYS_TR shandle2,
2405 ESYS_TR shandle3,
2406 const TPML_DIGEST *pHashList);
2407
2408TSS2_RC
2409Esys_PolicyOR_Finish(
2410 ESYS_CONTEXT *esysContext);
2411
2412/* Table 125 - TPM2_PolicyPCR Command */
2413
2414TSS2_RC
2415Esys_PolicyPCR(
2416 ESYS_CONTEXT *esysContext,
2417 ESYS_TR policySession,
2418 ESYS_TR shandle1,
2419 ESYS_TR shandle2,
2420 ESYS_TR shandle3,
2421 const TPM2B_DIGEST *pcrDigest,
2422 const TPML_PCR_SELECTION *pcrs);
2423
2424TSS2_RC
2425Esys_PolicyPCR_Async(
2426 ESYS_CONTEXT *esysContext,
2427 ESYS_TR policySession,
2428 ESYS_TR shandle1,
2429 ESYS_TR shandle2,
2430 ESYS_TR shandle3,
2431 const TPM2B_DIGEST *pcrDigest,
2432 const TPML_PCR_SELECTION *pcrs);
2433
2434TSS2_RC
2435Esys_PolicyPCR_Finish(
2436 ESYS_CONTEXT *esysContext);
2437
2438/* Table 127 - TPM2_PolicyLocality Command */
2439
2440TSS2_RC
2441Esys_PolicyLocality(
2442 ESYS_CONTEXT *esysContext,
2443 ESYS_TR policySession,
2444 ESYS_TR shandle1,
2445 ESYS_TR shandle2,
2446 ESYS_TR shandle3,
2447 TPMA_LOCALITY locality);
2448
2449TSS2_RC
2450Esys_PolicyLocality_Async(
2451 ESYS_CONTEXT *esysContext,
2452 ESYS_TR policySession,
2453 ESYS_TR shandle1,
2454 ESYS_TR shandle2,
2455 ESYS_TR shandle3,
2456 TPMA_LOCALITY locality);
2457
2458TSS2_RC
2459Esys_PolicyLocality_Finish(
2460 ESYS_CONTEXT *esysContext);
2461
2462/* Table 129 - TPM2_PolicyNV Command */
2463
2464TSS2_RC
2465Esys_PolicyNV(
2466 ESYS_CONTEXT *esysContext,
2467 ESYS_TR authHandle,
2468 ESYS_TR nvIndex,
2469 ESYS_TR policySession,
2470 ESYS_TR shandle1,
2471 ESYS_TR shandle2,
2472 ESYS_TR shandle3,
2473 const TPM2B_OPERAND *operandB,
2474 UINT16 offset,
2475 TPM2_EO operation);
2476
2477TSS2_RC
2478Esys_PolicyNV_Async(
2479 ESYS_CONTEXT *esysContext,
2480 ESYS_TR authHandle,
2481 ESYS_TR nvIndex,
2482 ESYS_TR policySession,
2483 ESYS_TR shandle1,
2484 ESYS_TR shandle2,
2485 ESYS_TR shandle3,
2486 const TPM2B_OPERAND *operandB,
2487 UINT16 offset,
2488 TPM2_EO operation);
2489
2490TSS2_RC
2491Esys_PolicyNV_Finish(
2492 ESYS_CONTEXT *esysContext);
2493
2494/* Table 131 - TPM2_PolicyCounterTimer Command */
2495
2496TSS2_RC
2497Esys_PolicyCounterTimer(
2498 ESYS_CONTEXT *esysContext,
2499 ESYS_TR policySession,
2500 ESYS_TR shandle1,
2501 ESYS_TR shandle2,
2502 ESYS_TR shandle3,
2503 const TPM2B_OPERAND *operandB,
2504 UINT16 offset,
2505 TPM2_EO operation);
2506
2507TSS2_RC
2508Esys_PolicyCounterTimer_Async(
2509 ESYS_CONTEXT *esysContext,
2510 ESYS_TR policySession,
2511 ESYS_TR shandle1,
2512 ESYS_TR shandle2,
2513 ESYS_TR shandle3,
2514 const TPM2B_OPERAND *operandB,
2515 UINT16 offset,
2516 TPM2_EO operation);
2517
2518TSS2_RC
2519Esys_PolicyCounterTimer_Finish(
2520 ESYS_CONTEXT *esysContext);
2521
2522/* Table 133 - TPM2_PolicyCommandCode Command */
2523
2524TSS2_RC
2525Esys_PolicyCommandCode(
2526 ESYS_CONTEXT *esysContext,
2527 ESYS_TR policySession,
2528 ESYS_TR shandle1,
2529 ESYS_TR shandle2,
2530 ESYS_TR shandle3,
2531 TPM2_CC code);
2532
2533TSS2_RC
2534Esys_PolicyCommandCode_Async(
2535 ESYS_CONTEXT *esysContext,
2536 ESYS_TR policySession,
2537 ESYS_TR shandle1,
2538 ESYS_TR shandle2,
2539 ESYS_TR shandle3,
2540 TPM2_CC code);
2541
2542TSS2_RC
2543Esys_PolicyCommandCode_Finish(
2544 ESYS_CONTEXT *esysContext);
2545
2546/* Table 135 - TPM2_PolicyPhysicalPresence Command */
2547
2548TSS2_RC
2549Esys_PolicyPhysicalPresence(
2550 ESYS_CONTEXT *esysContext,
2551 ESYS_TR policySession,
2552 ESYS_TR shandle1,
2553 ESYS_TR shandle2,
2554 ESYS_TR shandle3);
2555
2556TSS2_RC
2557Esys_PolicyPhysicalPresence_Async(
2558 ESYS_CONTEXT *esysContext,
2559 ESYS_TR policySession,
2560 ESYS_TR shandle1,
2561 ESYS_TR shandle2,
2562 ESYS_TR shandle3);
2563
2564TSS2_RC
2565Esys_PolicyPhysicalPresence_Finish(
2566 ESYS_CONTEXT *esysContext);
2567
2568/* Table 137 - TPM2_PolicyCpHash Command */
2569
2570TSS2_RC
2571Esys_PolicyCpHash(
2572 ESYS_CONTEXT *esysContext,
2573 ESYS_TR policySession,
2574 ESYS_TR shandle1,
2575 ESYS_TR shandle2,
2576 ESYS_TR shandle3,
2577 const TPM2B_DIGEST *cpHashA);
2578
2579TSS2_RC
2580Esys_PolicyCpHash_Async(
2581 ESYS_CONTEXT *esysContext,
2582 ESYS_TR policySession,
2583 ESYS_TR shandle1,
2584 ESYS_TR shandle2,
2585 ESYS_TR shandle3,
2586 const TPM2B_DIGEST *cpHashA);
2587
2588TSS2_RC
2589Esys_PolicyCpHash_Finish(
2590 ESYS_CONTEXT *esysContext);
2591
2592/* Table 139 - TPM2_PolicyNameHash Command */
2593
2594TSS2_RC
2595Esys_PolicyNameHash(
2596 ESYS_CONTEXT *esysContext,
2597 ESYS_TR policySession,
2598 ESYS_TR shandle1,
2599 ESYS_TR shandle2,
2600 ESYS_TR shandle3,
2601 const TPM2B_DIGEST *nameHash);
2602
2603TSS2_RC
2604Esys_PolicyNameHash_Async(
2605 ESYS_CONTEXT *esysContext,
2606 ESYS_TR policySession,
2607 ESYS_TR shandle1,
2608 ESYS_TR shandle2,
2609 ESYS_TR shandle3,
2610 const TPM2B_DIGEST *nameHash);
2611
2612TSS2_RC
2613Esys_PolicyNameHash_Finish(
2614 ESYS_CONTEXT *esysContext);
2615
2616/* Table 141 - TPM2_PolicyDuplicationSelect Command */
2617
2618TSS2_RC
2619Esys_PolicyDuplicationSelect(
2620 ESYS_CONTEXT *esysContext,
2621 ESYS_TR policySession,
2622 ESYS_TR shandle1,
2623 ESYS_TR shandle2,
2624 ESYS_TR shandle3,
2625 const TPM2B_NAME *objectName,
2626 const TPM2B_NAME *newParentName,
2627 TPMI_YES_NO includeObject);
2628
2629TSS2_RC
2630Esys_PolicyDuplicationSelect_Async(
2631 ESYS_CONTEXT *esysContext,
2632 ESYS_TR policySession,
2633 ESYS_TR shandle1,
2634 ESYS_TR shandle2,
2635 ESYS_TR shandle3,
2636 const TPM2B_NAME *objectName,
2637 const TPM2B_NAME *newParentName,
2638 TPMI_YES_NO includeObject);
2639
2640TSS2_RC
2641Esys_PolicyDuplicationSelect_Finish(
2642 ESYS_CONTEXT *esysContext);
2643
2644/* Table 143 - TPM2_PolicyAuthorize Command */
2645
2646TSS2_RC
2647Esys_PolicyAuthorize(
2648 ESYS_CONTEXT *esysContext,
2649 ESYS_TR policySession,
2650 ESYS_TR shandle1,
2651 ESYS_TR shandle2,
2652 ESYS_TR shandle3,
2653 const TPM2B_DIGEST *approvedPolicy,
2654 const TPM2B_NONCE *policyRef,
2655 const TPM2B_NAME *keySign,
2656 const TPMT_TK_VERIFIED *checkTicket);
2657
2658TSS2_RC
2659Esys_PolicyAuthorize_Async(
2660 ESYS_CONTEXT *esysContext,
2661 ESYS_TR policySession,
2662 ESYS_TR shandle1,
2663 ESYS_TR shandle2,
2664 ESYS_TR shandle3,
2665 const TPM2B_DIGEST *approvedPolicy,
2666 const TPM2B_NONCE *policyRef,
2667 const TPM2B_NAME *keySign,
2668 const TPMT_TK_VERIFIED *checkTicket);
2669
2670TSS2_RC
2671Esys_PolicyAuthorize_Finish(
2672 ESYS_CONTEXT *esysContext);
2673
2674/* Table 145 - TPM2_PolicyAuthValue Command */
2675
2676TSS2_RC
2677Esys_PolicyAuthValue(
2678 ESYS_CONTEXT *esysContext,
2679 ESYS_TR policySession,
2680 ESYS_TR shandle1,
2681 ESYS_TR shandle2,
2682 ESYS_TR shandle3);
2683
2684TSS2_RC
2685Esys_PolicyAuthValue_Async(
2686 ESYS_CONTEXT *esysContext,
2687 ESYS_TR policySession,
2688 ESYS_TR shandle1,
2689 ESYS_TR shandle2,
2690 ESYS_TR shandle3);
2691
2692TSS2_RC
2693Esys_PolicyAuthValue_Finish(
2694 ESYS_CONTEXT *esysContext);
2695
2696/* Table 147 - TPM2_PolicyPassword Command */
2697
2698TSS2_RC
2699Esys_PolicyPassword(
2700 ESYS_CONTEXT *esysContext,
2701 ESYS_TR policySession,
2702 ESYS_TR shandle1,
2703 ESYS_TR shandle2,
2704 ESYS_TR shandle3);
2705
2706TSS2_RC
2707Esys_PolicyPassword_Async(
2708 ESYS_CONTEXT *esysContext,
2709 ESYS_TR policySession,
2710 ESYS_TR shandle1,
2711 ESYS_TR shandle2,
2712 ESYS_TR shandle3);
2713
2714TSS2_RC
2715Esys_PolicyPassword_Finish(
2716 ESYS_CONTEXT *esysContext);
2717
2718/* Table 149 - TPM2_PolicyGetDigest Command */
2719
2720TSS2_RC
2721Esys_PolicyGetDigest(
2722 ESYS_CONTEXT *esysContext,
2723 ESYS_TR policySession,
2724 ESYS_TR shandle1,
2725 ESYS_TR shandle2,
2726 ESYS_TR shandle3,
2727 TPM2B_DIGEST **policyDigest);
2728
2729TSS2_RC
2730Esys_PolicyGetDigest_Async(
2731 ESYS_CONTEXT *esysContext,
2732 ESYS_TR policySession,
2733 ESYS_TR shandle1,
2734 ESYS_TR shandle2,
2735 ESYS_TR shandle3);
2736
2737TSS2_RC
2738Esys_PolicyGetDigest_Finish(
2739 ESYS_CONTEXT *esysContext,
2740 TPM2B_DIGEST **policyDigest);
2741
2742/* Table 151 - TPM2_PolicyNvWritten Command */
2743
2744TSS2_RC
2745Esys_PolicyNvWritten(
2746 ESYS_CONTEXT *esysContext,
2747 ESYS_TR policySession,
2748 ESYS_TR shandle1,
2749 ESYS_TR shandle2,
2750 ESYS_TR shandle3,
2751 TPMI_YES_NO writtenSet);
2752
2753TSS2_RC
2754Esys_PolicyNvWritten_Async(
2755 ESYS_CONTEXT *esysContext,
2756 ESYS_TR policySession,
2757 ESYS_TR shandle1,
2758 ESYS_TR shandle2,
2759 ESYS_TR shandle3,
2760 TPMI_YES_NO writtenSet);
2761
2762TSS2_RC
2763Esys_PolicyNvWritten_Finish(
2764 ESYS_CONTEXT *esysContext);
2765
2766/* Table 153 - TPM2_PolicyTemplate Command */
2767
2768TSS2_RC
2769Esys_PolicyTemplate(
2770 ESYS_CONTEXT *esysContext,
2771 ESYS_TR policySession,
2772 ESYS_TR shandle1,
2773 ESYS_TR shandle2,
2774 ESYS_TR shandle3,
2775 const TPM2B_DIGEST *templateHash);
2776
2777TSS2_RC
2778Esys_PolicyTemplate_Async(
2779 ESYS_CONTEXT *esysContext,
2780 ESYS_TR policySession,
2781 ESYS_TR shandle1,
2782 ESYS_TR shandle2,
2783 ESYS_TR shandle3,
2784 const TPM2B_DIGEST *templateHash);
2785
2786TSS2_RC
2787Esys_PolicyTemplate_Finish(
2788 ESYS_CONTEXT *esysContext);
2789
2790/* Table 155 - TPM2_PolicyAuthorizeNV Command */
2791
2792TSS2_RC
2793Esys_PolicyAuthorizeNV(
2794 ESYS_CONTEXT *esysContext,
2795 ESYS_TR authHandle,
2796 ESYS_TR nvIndex,
2797 ESYS_TR policySession,
2798 ESYS_TR shandle1,
2799 ESYS_TR shandle2,
2800 ESYS_TR shandle3);
2801
2802TSS2_RC
2803Esys_PolicyAuthorizeNV_Async(
2804 ESYS_CONTEXT *esysContext,
2805 ESYS_TR authHandle,
2806 ESYS_TR nvIndex,
2807 ESYS_TR policySession,
2808 ESYS_TR shandle1,
2809 ESYS_TR shandle2,
2810 ESYS_TR shandle3);
2811
2812TSS2_RC
2813Esys_PolicyAuthorizeNV_Finish(
2814 ESYS_CONTEXT *esysContext);
2815
2816/* Table 157 - TPM2_CreatePrimary Command */
2817
2818TSS2_RC
2819Esys_CreatePrimary(
2820 ESYS_CONTEXT *esysContext,
2821 ESYS_TR primaryHandle,
2822 ESYS_TR shandle1,
2823 ESYS_TR shandle2,
2824 ESYS_TR shandle3,
2825 const TPM2B_SENSITIVE_CREATE *inSensitive,
2826 const TPM2B_PUBLIC *inPublic,
2827 const TPM2B_DATA *outsideInfo,
2828 const TPML_PCR_SELECTION *creationPCR,
2829 ESYS_TR *objectHandle,
2830 TPM2B_PUBLIC **outPublic,
2831 TPM2B_CREATION_DATA **creationData,
2832 TPM2B_DIGEST **creationHash,
2833 TPMT_TK_CREATION **creationTicket);
2834
2835TSS2_RC
2836Esys_CreatePrimary_Async(
2837 ESYS_CONTEXT *esysContext,
2838 ESYS_TR primaryHandle,
2839 ESYS_TR shandle1,
2840 ESYS_TR shandle2,
2841 ESYS_TR shandle3,
2842 const TPM2B_SENSITIVE_CREATE *inSensitive,
2843 const TPM2B_PUBLIC *inPublic,
2844 const TPM2B_DATA *outsideInfo,
2845 const TPML_PCR_SELECTION *creationPCR);
2846
2847TSS2_RC
2848Esys_CreatePrimary_Finish(
2849 ESYS_CONTEXT *esysContext,
2850 ESYS_TR *objectHandle,
2851 TPM2B_PUBLIC **outPublic,
2852 TPM2B_CREATION_DATA **creationData,
2853 TPM2B_DIGEST **creationHash,
2854 TPMT_TK_CREATION **creationTicket);
2855
2856/* Table 159 - TPM2_HierarchyControl Command */
2857
2858TSS2_RC
2859Esys_HierarchyControl(
2860 ESYS_CONTEXT *esysContext,
2861 ESYS_TR authHandle,
2862 ESYS_TR shandle1,
2863 ESYS_TR shandle2,
2864 ESYS_TR shandle3,
2865 ESYS_TR enable,
2866 TPMI_YES_NO state);
2867
2868TSS2_RC
2869Esys_HierarchyControl_Async(
2870 ESYS_CONTEXT *esysContext,
2871 ESYS_TR authHandle,
2872 ESYS_TR shandle1,
2873 ESYS_TR shandle2,
2874 ESYS_TR shandle3,
2875 ESYS_TR enable,
2876 TPMI_YES_NO state);
2877
2878TSS2_RC
2879Esys_HierarchyControl_Finish(
2880 ESYS_CONTEXT *esysContext);
2881
2882/* Table 161 - TPM2_SetPrimaryPolicy Command */
2883
2884TSS2_RC
2885Esys_SetPrimaryPolicy(
2886 ESYS_CONTEXT *esysContext,
2887 ESYS_TR authHandle,
2888 ESYS_TR shandle1,
2889 ESYS_TR shandle2,
2890 ESYS_TR shandle3,
2891 const TPM2B_DIGEST *authPolicy,
2892 TPMI_ALG_HASH hashAlg);
2893
2894TSS2_RC
2895Esys_SetPrimaryPolicy_Async(
2896 ESYS_CONTEXT *esysContext,
2897 ESYS_TR authHandle,
2898 ESYS_TR shandle1,
2899 ESYS_TR shandle2,
2900 ESYS_TR shandle3,
2901 const TPM2B_DIGEST *authPolicy,
2902 TPMI_ALG_HASH hashAlg);
2903
2904TSS2_RC
2905Esys_SetPrimaryPolicy_Finish(
2906 ESYS_CONTEXT *esysContext);
2907
2908/* Table 163 - TPM2_ChangePPS Command */
2909
2910TSS2_RC
2911Esys_ChangePPS(
2912 ESYS_CONTEXT *esysContext,
2913 ESYS_TR authHandle,
2914 ESYS_TR shandle1,
2915 ESYS_TR shandle2,
2916 ESYS_TR shandle3);
2917
2918TSS2_RC
2919Esys_ChangePPS_Async(
2920 ESYS_CONTEXT *esysContext,
2921 ESYS_TR authHandle,
2922 ESYS_TR shandle1,
2923 ESYS_TR shandle2,
2924 ESYS_TR shandle3);
2925
2926TSS2_RC
2927Esys_ChangePPS_Finish(
2928 ESYS_CONTEXT *esysContext);
2929
2930/* Table 165 - TPM2_ChangeEPS Command */
2931
2932TSS2_RC
2933Esys_ChangeEPS(
2934 ESYS_CONTEXT *esysContext,
2935 ESYS_TR authHandle,
2936 ESYS_TR shandle1,
2937 ESYS_TR shandle2,
2938 ESYS_TR shandle3);
2939
2940TSS2_RC
2941Esys_ChangeEPS_Async(
2942 ESYS_CONTEXT *esysContext,
2943 ESYS_TR authHandle,
2944 ESYS_TR shandle1,
2945 ESYS_TR shandle2,
2946 ESYS_TR shandle3);
2947
2948TSS2_RC
2949Esys_ChangeEPS_Finish(
2950 ESYS_CONTEXT *esysContext);
2951
2952/* Table 167 - TPM2_Clear Command */
2953
2954TSS2_RC
2955Esys_Clear(
2956 ESYS_CONTEXT *esysContext,
2957 ESYS_TR authHandle,
2958 ESYS_TR shandle1,
2959 ESYS_TR shandle2,
2960 ESYS_TR shandle3);
2961
2962TSS2_RC
2963Esys_Clear_Async(
2964 ESYS_CONTEXT *esysContext,
2965 ESYS_TR authHandle,
2966 ESYS_TR shandle1,
2967 ESYS_TR shandle2,
2968 ESYS_TR shandle3);
2969
2970TSS2_RC
2971Esys_Clear_Finish(
2972 ESYS_CONTEXT *esysContext);
2973
2974/* Table 169 - TPM2_ClearControl Command */
2975
2976TSS2_RC
2977Esys_ClearControl(
2978 ESYS_CONTEXT *esysContext,
2979 ESYS_TR auth,
2980 ESYS_TR shandle1,
2981 ESYS_TR shandle2,
2982 ESYS_TR shandle3,
2983 TPMI_YES_NO disable);
2984
2985TSS2_RC
2986Esys_ClearControl_Async(
2987 ESYS_CONTEXT *esysContext,
2988 ESYS_TR auth,
2989 ESYS_TR shandle1,
2990 ESYS_TR shandle2,
2991 ESYS_TR shandle3,
2992 TPMI_YES_NO disable);
2993
2994TSS2_RC
2995Esys_ClearControl_Finish(
2996 ESYS_CONTEXT *esysContext);
2997
2998/* Table 171 - TPM2_HierarchyChangeAuth Command */
2999
3000TSS2_RC
3001Esys_HierarchyChangeAuth(
3002 ESYS_CONTEXT *esysContext,
3003 ESYS_TR authHandle,
3004 ESYS_TR shandle1,
3005 ESYS_TR shandle2,
3006 ESYS_TR shandle3,
3007 const TPM2B_AUTH *newAuth);
3008
3009TSS2_RC
3010Esys_HierarchyChangeAuth_Async(
3011 ESYS_CONTEXT *esysContext,
3012 ESYS_TR authHandle,
3013 ESYS_TR shandle1,
3014 ESYS_TR shandle2,
3015 ESYS_TR shandle3,
3016 const TPM2B_AUTH *newAuth);
3017
3018TSS2_RC
3019Esys_HierarchyChangeAuth_Finish(
3020 ESYS_CONTEXT *esysContext);
3021
3022/* Table 173 - TPM2_DictionaryAttackLockReset Command */
3023
3024TSS2_RC
3025Esys_DictionaryAttackLockReset(
3026 ESYS_CONTEXT *esysContext,
3027 ESYS_TR lockHandle,
3028 ESYS_TR shandle1,
3029 ESYS_TR shandle2,
3030 ESYS_TR shandle3);
3031
3032TSS2_RC
3033Esys_DictionaryAttackLockReset_Async(
3034 ESYS_CONTEXT *esysContext,
3035 ESYS_TR lockHandle,
3036 ESYS_TR shandle1,
3037 ESYS_TR shandle2,
3038 ESYS_TR shandle3);
3039
3040TSS2_RC
3041Esys_DictionaryAttackLockReset_Finish(
3042 ESYS_CONTEXT *esysContext);
3043
3044/* Table 175 - TPM2_DictionaryAttackParameters Command */
3045
3046TSS2_RC
3047Esys_DictionaryAttackParameters(
3048 ESYS_CONTEXT *esysContext,
3049 ESYS_TR lockHandle,
3050 ESYS_TR shandle1,
3051 ESYS_TR shandle2,
3052 ESYS_TR shandle3,
3053 UINT32 newMaxTries,
3054 UINT32 newRecoveryTime,
3055 UINT32 lockoutRecovery);
3056
3057TSS2_RC
3058Esys_DictionaryAttackParameters_Async(
3059 ESYS_CONTEXT *esysContext,
3060 ESYS_TR lockHandle,
3061 ESYS_TR shandle1,
3062 ESYS_TR shandle2,
3063 ESYS_TR shandle3,
3064 UINT32 newMaxTries,
3065 UINT32 newRecoveryTime,
3066 UINT32 lockoutRecovery);
3067
3068TSS2_RC
3069Esys_DictionaryAttackParameters_Finish(
3070 ESYS_CONTEXT *esysContext);
3071
3072/* Table 177 - TPM2_PP_Commands Command */
3073
3074TSS2_RC
3075Esys_PP_Commands(
3076 ESYS_CONTEXT *esysContext,
3077 ESYS_TR auth,
3078 ESYS_TR shandle1,
3079 ESYS_TR shandle2,
3080 ESYS_TR shandle3,
3081 const TPML_CC *setList,
3082 const TPML_CC *clearList);
3083
3084TSS2_RC
3085Esys_PP_Commands_Async(
3086 ESYS_CONTEXT *esysContext,
3087 ESYS_TR auth,
3088 ESYS_TR shandle1,
3089 ESYS_TR shandle2,
3090 ESYS_TR shandle3,
3091 const TPML_CC *setList,
3092 const TPML_CC *clearList);
3093
3094TSS2_RC
3095Esys_PP_Commands_Finish(
3096 ESYS_CONTEXT *esysContext);
3097
3098/* Table 179 - TPM2_SetAlgorithmSet Command */
3099
3100TSS2_RC
3101Esys_SetAlgorithmSet(
3102 ESYS_CONTEXT *esysContext,
3103 ESYS_TR authHandle,
3104 ESYS_TR shandle1,
3105 ESYS_TR shandle2,
3106 ESYS_TR shandle3,
3107 UINT32 algorithmSet);
3108
3109TSS2_RC
3110Esys_SetAlgorithmSet_Async(
3111 ESYS_CONTEXT *esysContext,
3112 ESYS_TR authHandle,
3113 ESYS_TR shandle1,
3114 ESYS_TR shandle2,
3115 ESYS_TR shandle3,
3116 UINT32 algorithmSet);
3117
3118TSS2_RC
3119Esys_SetAlgorithmSet_Finish(
3120 ESYS_CONTEXT *esysContext);
3121
3122/* Table 181 - TPM2_FieldUpgradeStart Command */
3123
3124TSS2_RC
3125Esys_FieldUpgradeStart(
3126 ESYS_CONTEXT *esysContext,
3127 ESYS_TR authorization,
3128 ESYS_TR keyHandle,
3129 ESYS_TR shandle1,
3130 ESYS_TR shandle2,
3131 ESYS_TR shandle3,
3132 const TPM2B_DIGEST *fuDigest,
3133 const TPMT_SIGNATURE *manifestSignature);
3134
3135TSS2_RC
3136Esys_FieldUpgradeStart_Async(
3137 ESYS_CONTEXT *esysContext,
3138 ESYS_TR authorization,
3139 ESYS_TR keyHandle,
3140 ESYS_TR shandle1,
3141 ESYS_TR shandle2,
3142 ESYS_TR shandle3,
3143 const TPM2B_DIGEST *fuDigest,
3144 const TPMT_SIGNATURE *manifestSignature);
3145
3146TSS2_RC
3147Esys_FieldUpgradeStart_Finish(
3148 ESYS_CONTEXT *esysContext);
3149
3150/* Table 183 - TPM2_FieldUpgradeData Command */
3151
3152TSS2_RC
3153Esys_FieldUpgradeData(
3154 ESYS_CONTEXT *esysContext,
3155 ESYS_TR shandle1,
3156 ESYS_TR shandle2,
3157 ESYS_TR shandle3,
3158 const TPM2B_MAX_BUFFER *fuData,
3159 TPMT_HA **nextDigest,
3160 TPMT_HA **firstDigest);
3161
3162TSS2_RC
3163Esys_FieldUpgradeData_Async(
3164 ESYS_CONTEXT *esysContext,
3165 ESYS_TR shandle1,
3166 ESYS_TR shandle2,
3167 ESYS_TR shandle3,
3168 const TPM2B_MAX_BUFFER *fuData);
3169
3170TSS2_RC
3171Esys_FieldUpgradeData_Finish(
3172 ESYS_CONTEXT *esysContext,
3173 TPMT_HA **nextDigest,
3174 TPMT_HA **firstDigest);
3175
3176/* Table 185 - TPM2_FirmwareRead Command */
3177
3178TSS2_RC
3179Esys_FirmwareRead(
3180 ESYS_CONTEXT *esysContext,
3181 ESYS_TR shandle1,
3182 ESYS_TR shandle2,
3183 ESYS_TR shandle3,
3184 UINT32 sequenceNumber,
3185 TPM2B_MAX_BUFFER **fuData);
3186
3187TSS2_RC
3188Esys_FirmwareRead_Async(
3189 ESYS_CONTEXT *esysContext,
3190 ESYS_TR shandle1,
3191 ESYS_TR shandle2,
3192 ESYS_TR shandle3,
3193 UINT32 sequenceNumber);
3194
3195TSS2_RC
3196Esys_FirmwareRead_Finish(
3197 ESYS_CONTEXT *esysContext,
3198 TPM2B_MAX_BUFFER **fuData);
3199
3200/* Table 187 - TPM2_ContextSave Command */
3201
3202TSS2_RC
3203Esys_ContextSave(
3204 ESYS_CONTEXT *esysContext,
3205 ESYS_TR saveHandle,
3206 TPMS_CONTEXT **context);
3207
3208TSS2_RC
3209Esys_ContextSave_Async(
3210 ESYS_CONTEXT *esysContext,
3211 ESYS_TR saveHandle);
3212
3213TSS2_RC
3214Esys_ContextSave_Finish(
3215 ESYS_CONTEXT *esysContext,
3216 TPMS_CONTEXT **context);
3217
3218/* Table 189 - TPM2_ContextLoad Command */
3219
3220TSS2_RC
3221Esys_ContextLoad(
3222 ESYS_CONTEXT *esysContext,
3223 const TPMS_CONTEXT *context,
3224 ESYS_TR *loadedHandle);
3225
3226TSS2_RC
3227Esys_ContextLoad_Async(
3228 ESYS_CONTEXT *esysContext,
3229 const TPMS_CONTEXT *context);
3230
3231TSS2_RC
3232Esys_ContextLoad_Finish(
3233 ESYS_CONTEXT *esysContext,
3234 ESYS_TR *loadedHandle);
3235
3236/* Table 191 - TPM2_FlushContext Command */
3237
3238TSS2_RC
3239Esys_FlushContext(
3240 ESYS_CONTEXT *esysContext,
3241 ESYS_TR flushHandle);
3242
3243TSS2_RC
3244Esys_FlushContext_Async(
3245 ESYS_CONTEXT *esysContext,
3246 ESYS_TR flushHandle);
3247
3248TSS2_RC
3249Esys_FlushContext_Finish(
3250 ESYS_CONTEXT *esysContext);
3251
3252/* Table 193 - TPM2_EvictControl Command */
3253
3254TSS2_RC
3255Esys_EvictControl(
3256 ESYS_CONTEXT *esysContext,
3257 ESYS_TR auth,
3258 ESYS_TR objectHandle,
3259 ESYS_TR shandle1,
3260 ESYS_TR shandle2,
3261 ESYS_TR shandle3,
3262 TPMI_DH_PERSISTENT persistentHandle,
3263 ESYS_TR *newObjectHandle);
3264
3265TSS2_RC
3266Esys_EvictControl_Async(
3267 ESYS_CONTEXT *esysContext,
3268 ESYS_TR auth,
3269 ESYS_TR objectHandle,
3270 ESYS_TR shandle1,
3271 ESYS_TR shandle2,
3272 ESYS_TR shandle3,
3273 TPMI_DH_PERSISTENT persistentHandle);
3274
3275TSS2_RC
3276Esys_EvictControl_Finish(
3277 ESYS_CONTEXT *esysContext,
3278 ESYS_TR *newObjectHandle);
3279
3280/* Table 195 - TPM2_ReadClock Command */
3281
3282TSS2_RC
3283Esys_ReadClock(
3284 ESYS_CONTEXT *esysContext,
3285 ESYS_TR shandle1,
3286 ESYS_TR shandle2,
3287 ESYS_TR shandle3,
3288 TPMS_TIME_INFO **currentTime);
3289
3290TSS2_RC
3291Esys_ReadClock_Async(
3292 ESYS_CONTEXT *esysContext,
3293 ESYS_TR shandle1,
3294 ESYS_TR shandle2,
3295 ESYS_TR shandle3);
3296
3297TSS2_RC
3298Esys_ReadClock_Finish(
3299 ESYS_CONTEXT *esysContext,
3300 TPMS_TIME_INFO **currentTime);
3301
3302/* Table 197 - TPM2_ClockSet Command */
3303
3304TSS2_RC
3305Esys_ClockSet(
3306 ESYS_CONTEXT *esysContext,
3307 ESYS_TR auth,
3308 ESYS_TR shandle1,
3309 ESYS_TR shandle2,
3310 ESYS_TR shandle3,
3311 UINT64 newTime);
3312
3313TSS2_RC
3314Esys_ClockSet_Async(
3315 ESYS_CONTEXT *esysContext,
3316 ESYS_TR auth,
3317 ESYS_TR shandle1,
3318 ESYS_TR shandle2,
3319 ESYS_TR shandle3,
3320 UINT64 newTime);
3321
3322TSS2_RC
3323Esys_ClockSet_Finish(
3324 ESYS_CONTEXT *esysContext);
3325
3326/* Table 199 - TPM2_ClockRateAdjust Command */
3327
3328TSS2_RC
3329Esys_ClockRateAdjust(
3330 ESYS_CONTEXT *esysContext,
3331 ESYS_TR auth,
3332 ESYS_TR shandle1,
3333 ESYS_TR shandle2,
3334 ESYS_TR shandle3,
3335 TPM2_CLOCK_ADJUST rateAdjust);
3336
3337TSS2_RC
3338Esys_ClockRateAdjust_Async(
3339 ESYS_CONTEXT *esysContext,
3340 ESYS_TR auth,
3341 ESYS_TR shandle1,
3342 ESYS_TR shandle2,
3343 ESYS_TR shandle3,
3344 TPM2_CLOCK_ADJUST rateAdjust);
3345
3346TSS2_RC
3347Esys_ClockRateAdjust_Finish(
3348 ESYS_CONTEXT *esysContext);
3349
3350/* Table 201 - TPM2_GetCapability Command */
3351
3352TSS2_RC
3353Esys_GetCapability(
3354 ESYS_CONTEXT *esysContext,
3355 ESYS_TR shandle1,
3356 ESYS_TR shandle2,
3357 ESYS_TR shandle3,
3358 TPM2_CAP capability,
3359 UINT32 property,
3360 UINT32 propertyCount,
3361 TPMI_YES_NO *moreData,
3362 TPMS_CAPABILITY_DATA **capabilityData);
3363
3364TSS2_RC
3365Esys_GetCapability_Async(
3366 ESYS_CONTEXT *esysContext,
3367 ESYS_TR shandle1,
3368 ESYS_TR shandle2,
3369 ESYS_TR shandle3,
3370 TPM2_CAP capability,
3371 UINT32 property,
3372 UINT32 propertyCount);
3373
3374TSS2_RC
3375Esys_GetCapability_Finish(
3376 ESYS_CONTEXT *esysContext,
3377 TPMI_YES_NO *moreData,
3378 TPMS_CAPABILITY_DATA **capabilityData);
3379
3380/* Table 203 - TPM2_TestParms Command */
3381
3382TSS2_RC
3383Esys_TestParms(
3384 ESYS_CONTEXT *esysContext,
3385 ESYS_TR shandle1,
3386 ESYS_TR shandle2,
3387 ESYS_TR shandle3,
3388 const TPMT_PUBLIC_PARMS *parameters);
3389
3390TSS2_RC
3391Esys_TestParms_Async(
3392 ESYS_CONTEXT *esysContext,
3393 ESYS_TR shandle1,
3394 ESYS_TR shandle2,
3395 ESYS_TR shandle3,
3396 const TPMT_PUBLIC_PARMS *parameters);
3397
3398TSS2_RC
3399Esys_TestParms_Finish(
3400 ESYS_CONTEXT *esysContext);
3401
3402/* Table 205 - TPM2_NV_DefineSpace Command */
3403
3404TSS2_RC
3405Esys_NV_DefineSpace(
3406 ESYS_CONTEXT *esysContext,
3407 ESYS_TR authHandle,
3408 ESYS_TR shandle1,
3409 ESYS_TR shandle2,
3410 ESYS_TR shandle3,
3411 const TPM2B_AUTH *auth,
3412 const TPM2B_NV_PUBLIC *publicInfo,
3413 ESYS_TR *nvHandle);
3414
3415TSS2_RC
3416Esys_NV_DefineSpace_Async(
3417 ESYS_CONTEXT *esysContext,
3418 ESYS_TR authHandle,
3419 ESYS_TR shandle1,
3420 ESYS_TR shandle2,
3421 ESYS_TR shandle3,
3422 const TPM2B_AUTH *auth,
3423 const TPM2B_NV_PUBLIC *publicInfo);
3424
3425TSS2_RC
3426Esys_NV_DefineSpace_Finish(
3427 ESYS_CONTEXT *esysContext,
3428 ESYS_TR *nvHandle);
3429
3430/* Table 207 - TPM2_NV_UndefineSpace Command */
3431
3432TSS2_RC
3433Esys_NV_UndefineSpace(
3434 ESYS_CONTEXT *esysContext,
3435 ESYS_TR authHandle,
3436 ESYS_TR nvIndex,
3437 ESYS_TR shandle1,
3438 ESYS_TR shandle2,
3439 ESYS_TR shandle3);
3440
3441TSS2_RC
3442Esys_NV_UndefineSpace_Async(
3443 ESYS_CONTEXT *esysContext,
3444 ESYS_TR authHandle,
3445 ESYS_TR nvIndex,
3446 ESYS_TR shandle1,
3447 ESYS_TR shandle2,
3448 ESYS_TR shandle3);
3449
3450TSS2_RC
3451Esys_NV_UndefineSpace_Finish(
3452 ESYS_CONTEXT *esysContext);
3453
3454/* Table 209 - TPM2_NV_UndefineSpaceSpecial Command */
3455
3456TSS2_RC
3457Esys_NV_UndefineSpaceSpecial(
3458 ESYS_CONTEXT *esysContext,
3459 ESYS_TR nvIndex,
3460 ESYS_TR platform,
3461 ESYS_TR shandle1,
3462 ESYS_TR shandle2,
3463 ESYS_TR shandle3);
3464
3465TSS2_RC
3466Esys_NV_UndefineSpaceSpecial_Async(
3467 ESYS_CONTEXT *esysContext,
3468 ESYS_TR nvIndex,
3469 ESYS_TR platform,
3470 ESYS_TR shandle1,
3471 ESYS_TR shandle2,
3472 ESYS_TR shandle3);
3473
3474TSS2_RC
3475Esys_NV_UndefineSpaceSpecial_Finish(
3476 ESYS_CONTEXT *esysContext);
3477
3478/* Table 211 - TPM2_NV_ReadPublic Command */
3479
3480TSS2_RC
3481Esys_NV_ReadPublic(
3482 ESYS_CONTEXT *esysContext,
3483 ESYS_TR nvIndex,
3484 ESYS_TR shandle1,
3485 ESYS_TR shandle2,
3486 ESYS_TR shandle3,
3487 TPM2B_NV_PUBLIC **nvPublic,
3488 TPM2B_NAME **nvName);
3489
3490TSS2_RC
3491Esys_NV_ReadPublic_Async(
3492 ESYS_CONTEXT *esysContext,
3493 ESYS_TR nvIndex,
3494 ESYS_TR shandle1,
3495 ESYS_TR shandle2,
3496 ESYS_TR shandle3);
3497
3498TSS2_RC
3499Esys_NV_ReadPublic_Finish(
3500 ESYS_CONTEXT *esysContext,
3501 TPM2B_NV_PUBLIC **nvPublic,
3502 TPM2B_NAME **nvName);
3503
3504/* Table 213 - TPM2_NV_Write Command */
3505
3506TSS2_RC
3507Esys_NV_Write(
3508 ESYS_CONTEXT *esysContext,
3509 ESYS_TR authHandle,
3510 ESYS_TR nvIndex,
3511 ESYS_TR shandle1,
3512 ESYS_TR shandle2,
3513 ESYS_TR shandle3,
3514 const TPM2B_MAX_NV_BUFFER *data,
3515 UINT16 offset);
3516
3517TSS2_RC
3518Esys_NV_Write_Async(
3519 ESYS_CONTEXT *esysContext,
3520 ESYS_TR authHandle,
3521 ESYS_TR nvIndex,
3522 ESYS_TR shandle1,
3523 ESYS_TR shandle2,
3524 ESYS_TR shandle3,
3525 const TPM2B_MAX_NV_BUFFER *data,
3526 UINT16 offset);
3527
3528TSS2_RC
3529Esys_NV_Write_Finish(
3530 ESYS_CONTEXT *esysContext);
3531
3532/* Table 215 - TPM2_NV_Increment Command */
3533
3534TSS2_RC
3535Esys_NV_Increment(
3536 ESYS_CONTEXT *esysContext,
3537 ESYS_TR authHandle,
3538 ESYS_TR nvIndex,
3539 ESYS_TR shandle1,
3540 ESYS_TR shandle2,
3541 ESYS_TR shandle3);
3542
3543TSS2_RC
3544Esys_NV_Increment_Async(
3545 ESYS_CONTEXT *esysContext,
3546 ESYS_TR authHandle,
3547 ESYS_TR nvIndex,
3548 ESYS_TR shandle1,
3549 ESYS_TR shandle2,
3550 ESYS_TR shandle3);
3551
3552TSS2_RC
3553Esys_NV_Increment_Finish(
3554 ESYS_CONTEXT *esysContext);
3555
3556/* Table 217 - TPM2_NV_Extend Command */
3557
3558TSS2_RC
3559Esys_NV_Extend(
3560 ESYS_CONTEXT *esysContext,
3561 ESYS_TR authHandle,
3562 ESYS_TR nvIndex,
3563 ESYS_TR shandle1,
3564 ESYS_TR shandle2,
3565 ESYS_TR shandle3,
3566 const TPM2B_MAX_NV_BUFFER *data);
3567
3568TSS2_RC
3569Esys_NV_Extend_Async(
3570 ESYS_CONTEXT *esysContext,
3571 ESYS_TR authHandle,
3572 ESYS_TR nvIndex,
3573 ESYS_TR shandle1,
3574 ESYS_TR shandle2,
3575 ESYS_TR shandle3,
3576 const TPM2B_MAX_NV_BUFFER *data);
3577
3578TSS2_RC
3579Esys_NV_Extend_Finish(
3580 ESYS_CONTEXT *esysContext);
3581
3582/* Table 219 - TPM2_NV_SetBits Command */
3583
3584TSS2_RC
3585Esys_NV_SetBits(
3586 ESYS_CONTEXT *esysContext,
3587 ESYS_TR authHandle,
3588 ESYS_TR nvIndex,
3589 ESYS_TR shandle1,
3590 ESYS_TR shandle2,
3591 ESYS_TR shandle3,
3592 UINT64 bits);
3593
3594TSS2_RC
3595Esys_NV_SetBits_Async(
3596 ESYS_CONTEXT *esysContext,
3597 ESYS_TR authHandle,
3598 ESYS_TR nvIndex,
3599 ESYS_TR shandle1,
3600 ESYS_TR shandle2,
3601 ESYS_TR shandle3,
3602 UINT64 bits);
3603
3604TSS2_RC
3605Esys_NV_SetBits_Finish(
3606 ESYS_CONTEXT *esysContext);
3607
3608/* Table 221 - TPM2_NV_WriteLock Command */
3609
3610TSS2_RC
3611Esys_NV_WriteLock(
3612 ESYS_CONTEXT *esysContext,
3613 ESYS_TR authHandle,
3614 ESYS_TR nvIndex,
3615 ESYS_TR shandle1,
3616 ESYS_TR shandle2,
3617 ESYS_TR shandle3);
3618
3619TSS2_RC
3620Esys_NV_WriteLock_Async(
3621 ESYS_CONTEXT *esysContext,
3622 ESYS_TR authHandle,
3623 ESYS_TR nvIndex,
3624 ESYS_TR shandle1,
3625 ESYS_TR shandle2,
3626 ESYS_TR shandle3);
3627
3628TSS2_RC
3629Esys_NV_WriteLock_Finish(
3630 ESYS_CONTEXT *esysContext);
3631
3632/* Table 223 - TPM2_NV_GlobalWriteLock Command */
3633
3634TSS2_RC
3635Esys_NV_GlobalWriteLock(
3636 ESYS_CONTEXT *esysContext,
3637 ESYS_TR authHandle,
3638 ESYS_TR shandle1,
3639 ESYS_TR shandle2,
3640 ESYS_TR shandle3);
3641
3642TSS2_RC
3643Esys_NV_GlobalWriteLock_Async(
3644 ESYS_CONTEXT *esysContext,
3645 ESYS_TR authHandle,
3646 ESYS_TR shandle1,
3647 ESYS_TR shandle2,
3648 ESYS_TR shandle3);
3649
3650TSS2_RC
3651Esys_NV_GlobalWriteLock_Finish(
3652 ESYS_CONTEXT *esysContext);
3653
3654/* Table 225 - TPM2_NV_Read Command */
3655
3656TSS2_RC
3657Esys_NV_Read(
3658 ESYS_CONTEXT *esysContext,
3659 ESYS_TR authHandle,
3660 ESYS_TR nvIndex,
3661 ESYS_TR shandle1,
3662 ESYS_TR shandle2,
3663 ESYS_TR shandle3,
3664 UINT16 size,
3665 UINT16 offset,
3666 TPM2B_MAX_NV_BUFFER **data);
3667
3668TSS2_RC
3669Esys_NV_Read_Async(
3670 ESYS_CONTEXT *esysContext,
3671 ESYS_TR authHandle,
3672 ESYS_TR nvIndex,
3673 ESYS_TR shandle1,
3674 ESYS_TR shandle2,
3675 ESYS_TR shandle3,
3676 UINT16 size,
3677 UINT16 offset);
3678
3679TSS2_RC
3680Esys_NV_Read_Finish(
3681 ESYS_CONTEXT *esysContext,
3682 TPM2B_MAX_NV_BUFFER **data);
3683
3684/* Table 227 - TPM2_NV_ReadLock Command */
3685
3686TSS2_RC
3687Esys_NV_ReadLock(
3688 ESYS_CONTEXT *esysContext,
3689 ESYS_TR authHandle,
3690 ESYS_TR nvIndex,
3691 ESYS_TR shandle1,
3692 ESYS_TR shandle2,
3693 ESYS_TR shandle3);
3694
3695TSS2_RC
3696Esys_NV_ReadLock_Async(
3697 ESYS_CONTEXT *esysContext,
3698 ESYS_TR authHandle,
3699 ESYS_TR nvIndex,
3700 ESYS_TR shandle1,
3701 ESYS_TR shandle2,
3702 ESYS_TR shandle3);
3703
3704TSS2_RC
3705Esys_NV_ReadLock_Finish(
3706 ESYS_CONTEXT *esysContext);
3707
3708/* Table 229 - TPM2_NV_ChangeAuth Command */
3709
3710TSS2_RC
3711Esys_NV_ChangeAuth(
3712 ESYS_CONTEXT *esysContext,
3713 ESYS_TR nvIndex,
3714 ESYS_TR shandle1,
3715 ESYS_TR shandle2,
3716 ESYS_TR shandle3,
3717 const TPM2B_AUTH *newAuth);
3718
3719TSS2_RC
3720Esys_NV_ChangeAuth_Async(
3721 ESYS_CONTEXT *esysContext,
3722 ESYS_TR nvIndex,
3723 ESYS_TR shandle1,
3724 ESYS_TR shandle2,
3725 ESYS_TR shandle3,
3726 const TPM2B_AUTH *newAuth);
3727
3728TSS2_RC
3729Esys_NV_ChangeAuth_Finish(
3730 ESYS_CONTEXT *esysContext);
3731
3732/* Table 231 - TPM2_NV_Certify Command */
3733
3734TSS2_RC
3735Esys_NV_Certify(
3736 ESYS_CONTEXT *esysContext,
3737 ESYS_TR signHandle,
3738 ESYS_TR authHandle,
3739 ESYS_TR nvIndex,
3740 ESYS_TR shandle1,
3741 ESYS_TR shandle2,
3742 ESYS_TR shandle3,
3743 const TPM2B_DATA *qualifyingData,
3744 const TPMT_SIG_SCHEME *inScheme,
3745 UINT16 size,
3746 UINT16 offset,
3747 TPM2B_ATTEST **certifyInfo,
3748 TPMT_SIGNATURE **signature);
3749
3750TSS2_RC
3751Esys_NV_Certify_Async(
3752 ESYS_CONTEXT *esysContext,
3753 ESYS_TR signHandle,
3754 ESYS_TR authHandle,
3755 ESYS_TR nvIndex,
3756 ESYS_TR shandle1,
3757 ESYS_TR shandle2,
3758 ESYS_TR shandle3,
3759 const TPM2B_DATA *qualifyingData,
3760 const TPMT_SIG_SCHEME *inScheme,
3761 UINT16 size,
3762 UINT16 offset);
3763
3764TSS2_RC
3765Esys_NV_Certify_Finish(
3766 ESYS_CONTEXT *esysContext,
3767 TPM2B_ATTEST **certifyInfo,
3768 TPMT_SIGNATURE **signature);
3769
3770/* Table 233 - TPM2_Vendor_TCG_Test Command */
3771
3772TSS2_RC
3773Esys_Vendor_TCG_Test(
3774 ESYS_CONTEXT *esysContext,
3775 ESYS_TR shandle1,
3776 ESYS_TR shandle2,
3777 ESYS_TR shandle3,
3778 const TPM2B_DATA *inputData,
3779 TPM2B_DATA **outputData);
3780
3781TSS2_RC
3782Esys_Vendor_TCG_Test_Async(
3783 ESYS_CONTEXT *esysContext,
3784 ESYS_TR shandle1,
3785 ESYS_TR shandle2,
3786 ESYS_TR shandle3,
3787 const TPM2B_DATA *inputData);
3788
3789TSS2_RC
3790Esys_Vendor_TCG_Test_Finish(
3791 ESYS_CONTEXT *esysContext,
3792 TPM2B_DATA **outputData);
3793
3794/*
3795 * TPM 2.0 ESAPI Helper Functions
3796 */
3797void
3798Esys_Free(
3799 void *__ptr);
3800
3801TSS2_RC
3802Esys_GetSysContext(
3803 ESYS_CONTEXT *esys_context,
3804 TSS2_SYS_CONTEXT **sys_context);
3805
3806TSS2_RC
3807Esys_SetCryptoCallbacks(
3808 ESYS_CONTEXT *esysContext,
3809 ESYS_CRYPTO_CALLBACKS *callbacks);
3810
3811#ifdef __cplusplus
3812}
3813#endif
3814
3815#endif /* TSS2_ESYS_H */
Definition esys_int.h:162
Definition tss2_esys.h:416
Definition esys_crypto_mbed.c:34