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