@@ -21,6 +21,117 @@ static inline UINT16 tpm2_error_get(TSS2_RC rc) {
2121 return ((rc & TPM2_ERROR_TSS2_RC_ERROR_MASK ));
2222}
2323
24+ tool_rc tpm2_encapsulate (ESYS_CONTEXT * esys_context , ESYS_TR object_handle ,
25+ TPM2B_KEM_CIPHERTEXT * * ciphertext , TPM2B_SHARED_SECRET * * sharedSecret ) {
26+
27+ TSS2_RC rval = Esys_Encapsulate (esys_context , object_handle ,
28+ ESYS_TR_NONE , ESYS_TR_NONE , ESYS_TR_NONE ,
29+ ciphertext , sharedSecret );
30+ if (rval != TPM2_RC_SUCCESS ) {
31+ LOG_PERR (Esys_Encapsulate , rval );
32+ return tool_rc_from_tpm (rval );
33+ }
34+
35+ return tool_rc_success ;
36+ }
37+
38+ tool_rc tpm2_decapsulate (ESYS_CONTEXT * esys_context , ESYS_TR object_handle ,
39+ TPM2B_KEM_CIPHERTEXT * ciphertext , TPM2B_SHARED_SECRET * * sharedSecret ) {
40+
41+ TSS2_RC rval = Esys_Decapsulate (esys_context , object_handle ,
42+ ESYS_TR_NONE , ESYS_TR_NONE , ESYS_TR_NONE ,
43+ ciphertext , sharedSecret );
44+ if (rval != TPM2_RC_SUCCESS ) {
45+ LOG_PERR (Esys_Decapsulate , rval );
46+ return tool_rc_from_tpm (rval );
47+ }
48+
49+ return tool_rc_success ;
50+ }
51+
52+ tool_rc tpm2_signsequencestart (ESYS_CONTEXT * esys_context , ESYS_TR keyHandle ,
53+ TPM2B_AUTH * auth , TPM2B_SIGNATURE_CTX * context , ESYS_TR * sequenceHandle ) {
54+
55+ TSS2_RC rval = Esys_SignSequenceStart (esys_context , keyHandle ,
56+ ESYS_TR_NONE , ESYS_TR_NONE , ESYS_TR_NONE ,
57+ auth , context , sequenceHandle );
58+ if (rval != TPM2_RC_SUCCESS ) {
59+ LOG_PERR (Esys_SignSequenceStart , rval );
60+ return tool_rc_from_tpm (rval );
61+ }
62+
63+ return tool_rc_success ;
64+ }
65+
66+ tool_rc tpm2_signsequencecomplete (ESYS_CONTEXT * esys_context , ESYS_TR sequence_handle ,
67+ ESYS_TR key_handle , TPM2B_MAX_BUFFER * buffer , TPMT_SIGNATURE * * signature ) {
68+
69+ TSS2_RC rval = Esys_SignSequenceComplete (esys_context , sequence_handle ,
70+ key_handle , ESYS_TR_PASSWORD , ESYS_TR_PASSWORD , ESYS_TR_NONE ,
71+ buffer , signature );
72+ if (rval != TPM2_RC_SUCCESS ) {
73+ LOG_PERR (Esys_SignSequenceComplete , rval );
74+ return tool_rc_from_tpm (rval );
75+ }
76+
77+ return tool_rc_success ;
78+ }
79+
80+ tool_rc tpm2_verifysequencestart (ESYS_CONTEXT * esys_context , ESYS_TR keyHandle ,
81+ TPM2B_AUTH * auth , TPM2B_SIGNATURE_HINT * hint , TPM2B_SIGNATURE_CTX * context , ESYS_TR * sequenceHandle ) {
82+
83+ TSS2_RC rval = Esys_VerifySequenceStart (esys_context , keyHandle ,
84+ ESYS_TR_NONE , ESYS_TR_NONE , ESYS_TR_NONE ,
85+ auth , hint , context , sequenceHandle );
86+ if (rval != TPM2_RC_SUCCESS ) {
87+ LOG_PERR (Esys_VerifySequenceStart , rval );
88+ return tool_rc_from_tpm (rval );
89+ }
90+
91+ return tool_rc_success ;
92+ }
93+
94+ tool_rc tpm2_verifysequencecomplete (ESYS_CONTEXT * esys_context , ESYS_TR sequenceHandle ,
95+ ESYS_TR keyHandle , TPMT_SIGNATURE * signature , TPMT_TK_VERIFIED * * validation ) {
96+
97+ TSS2_RC rval = Esys_VerifySequenceComplete (esys_context , sequenceHandle , keyHandle ,
98+ ESYS_TR_PASSWORD , ESYS_TR_NONE , ESYS_TR_NONE ,
99+ signature , validation );
100+ if (rval != TPM2_RC_SUCCESS ) {
101+ LOG_PERR (Esys_VerifySequenceComplete , rval );
102+ return tool_rc_from_tpm (rval );
103+ }
104+ return tool_rc_success ;
105+ }
106+
107+ tool_rc tpm2_signdigest (ESYS_CONTEXT * esys_context , ESYS_TR keyHandle ,
108+ TPM2B_SIGNATURE_CTX * context , TPM2B_DIGEST * digest , TPMT_TK_HASHCHECK * validation ,
109+ TPMT_SIGNATURE * * signature ) {
110+
111+ TSS2_RC rval = Esys_SignDigest (esys_context , keyHandle , ESYS_TR_NONE ,
112+ ESYS_TR_NONE , ESYS_TR_NONE ,
113+ context , digest , validation , signature );
114+ if (rval != TPM2_RC_SUCCESS ) {
115+ LOG_PERR (Esys_SignDigest , rval );
116+ return tool_rc_from_tpm (rval );
117+ }
118+ return tool_rc_success ;
119+ }
120+
121+ tool_rc tpm2_verifydigestsignature (ESYS_CONTEXT * esys_context , ESYS_TR keyHandle ,
122+ TPM2B_SIGNATURE_CTX * context , TPM2B_DIGEST * digest , TPMT_SIGNATURE * signature ,
123+ TPMT_TK_VERIFIED * * validation ) {
124+
125+ TSS2_RC rval = Esys_VerifyDigestSignature (esys_context , keyHandle , ESYS_TR_NONE ,
126+ ESYS_TR_NONE , ESYS_TR_NONE ,
127+ context , digest , signature , validation );
128+ if (rval != TPM2_RC_SUCCESS ) {
129+ LOG_PERR (Esys_VerifyDigestSignature , rval );
130+ return tool_rc_from_tpm (rval );
131+ }
132+ return tool_rc_success ;
133+ }
134+
24135tool_rc tpm2_readpublic (ESYS_CONTEXT * esys_context , ESYS_TR object_handle ,
25136 TPM2B_PUBLIC * * out_public , TPM2B_NAME * * name ,
26137 TPM2B_NAME * * qualified_name ) {
0 commit comments