xref: /aosp_15_r20/external/tpm2-tss/src/tss2-esys/esys_crypto_gcrypt.h (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */
2*758e9fbaSOystein Eftevaag /*******************************************************************************
3*758e9fbaSOystein Eftevaag  * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
4*758e9fbaSOystein Eftevaag  * All rights reserved.
5*758e9fbaSOystein Eftevaag  ******************************************************************************/
6*758e9fbaSOystein Eftevaag #ifndef ESYS_CRYPTO_GCRYPT_H
7*758e9fbaSOystein Eftevaag #define ESYS_CRYPTO_GCRYPT_H
8*758e9fbaSOystein Eftevaag 
9*758e9fbaSOystein Eftevaag #include <stddef.h>
10*758e9fbaSOystein Eftevaag #include "tss2_tpm2_types.h"
11*758e9fbaSOystein Eftevaag #include "tss2-sys/sysapi_util.h"
12*758e9fbaSOystein Eftevaag 
13*758e9fbaSOystein Eftevaag #ifdef __cplusplus
14*758e9fbaSOystein Eftevaag extern "C" {
15*758e9fbaSOystein Eftevaag #endif
16*758e9fbaSOystein Eftevaag 
17*758e9fbaSOystein Eftevaag typedef struct _IESYS_CRYPTO_CONTEXT IESYS_CRYPTO_CONTEXT_BLOB;
18*758e9fbaSOystein Eftevaag 
19*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hash_start(
20*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
21*758e9fbaSOystein Eftevaag     TPM2_ALG_ID hashAlg);
22*758e9fbaSOystein Eftevaag 
23*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hash_update(
24*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
25*758e9fbaSOystein Eftevaag     const uint8_t *buffer, size_t size);
26*758e9fbaSOystein Eftevaag 
27*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hash_update2b(
28*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
29*758e9fbaSOystein Eftevaag     TPM2B *b);
30*758e9fbaSOystein Eftevaag 
31*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hash_finish(
32*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
33*758e9fbaSOystein Eftevaag     uint8_t *buffer,
34*758e9fbaSOystein Eftevaag     size_t *size);
35*758e9fbaSOystein Eftevaag 
36*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hash_finish2b(
37*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
38*758e9fbaSOystein Eftevaag     TPM2B *b);
39*758e9fbaSOystein Eftevaag 
40*758e9fbaSOystein Eftevaag void iesys_cryptogcry_hash_abort(IESYS_CRYPTO_CONTEXT_BLOB **context);
41*758e9fbaSOystein Eftevaag 
42*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_start iesys_cryptogcry_hash_start
43*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_update iesys_cryptogcry_hash_update
44*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_update2b iesys_cryptogcry_hash_update2b
45*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_finish iesys_cryptogcry_hash_finish
46*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_finish2b iesys_cryptogcry_hash_finish2b
47*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_abort iesys_cryptogcry_hash_abort
48*758e9fbaSOystein Eftevaag 
49*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hmac_start(
50*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
51*758e9fbaSOystein Eftevaag     TPM2_ALG_ID hmacAlg,
52*758e9fbaSOystein Eftevaag     const uint8_t *key,
53*758e9fbaSOystein Eftevaag     size_t size);
54*758e9fbaSOystein Eftevaag 
55*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hmac_start2b(
56*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
57*758e9fbaSOystein Eftevaag     TPM2_ALG_ID hmacAlg,
58*758e9fbaSOystein Eftevaag     TPM2B *b);
59*758e9fbaSOystein Eftevaag 
60*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hmac_update(
61*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
62*758e9fbaSOystein Eftevaag     const uint8_t *buffer,
63*758e9fbaSOystein Eftevaag     size_t size);
64*758e9fbaSOystein Eftevaag 
65*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hmac_update2b(
66*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
67*758e9fbaSOystein Eftevaag     TPM2B *b);
68*758e9fbaSOystein Eftevaag 
69*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hmac_finish(
70*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
71*758e9fbaSOystein Eftevaag     uint8_t *buffer,
72*758e9fbaSOystein Eftevaag     size_t *size);
73*758e9fbaSOystein Eftevaag 
74*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_hmac_finish2b(
75*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
76*758e9fbaSOystein Eftevaag     TPM2B *b);
77*758e9fbaSOystein Eftevaag 
78*758e9fbaSOystein Eftevaag void iesys_cryptogcry_hmac_abort(IESYS_CRYPTO_CONTEXT_BLOB **context);
79*758e9fbaSOystein Eftevaag 
80*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_start iesys_cryptogcry_hmac_start
81*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_start2b iesys_cryptogcry_hmac_start2b
82*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_update iesys_cryptogcry_hmac_update
83*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_update2b iesys_cryptogcry_hmac_update2b
84*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_finish iesys_cryptogcry_hmac_finish
85*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_finish2b iesys_cryptogcry_hmac_finish2b
86*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_abort iesys_cryptogcry_hmac_abort
87*758e9fbaSOystein Eftevaag 
88*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_random2b(TPM2B_NONCE *nonce, size_t num_bytes);
89*758e9fbaSOystein Eftevaag #define iesys_crypto_random2b iesys_cryptogcry_random2b
90*758e9fbaSOystein Eftevaag 
91*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_pk_encrypt(
92*758e9fbaSOystein Eftevaag     TPM2B_PUBLIC *key,
93*758e9fbaSOystein Eftevaag     size_t in_size,
94*758e9fbaSOystein Eftevaag     BYTE *in_buffer,
95*758e9fbaSOystein Eftevaag     size_t max_out_size,
96*758e9fbaSOystein Eftevaag     BYTE *out_buffer,
97*758e9fbaSOystein Eftevaag     size_t *out_size,
98*758e9fbaSOystein Eftevaag     const char *label);
99*758e9fbaSOystein Eftevaag 
100*758e9fbaSOystein Eftevaag #define iesys_crypto_pk_encrypt iesys_cryptogcry_pk_encrypt
101*758e9fbaSOystein Eftevaag 
102*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_sym_aes_encrypt(
103*758e9fbaSOystein Eftevaag     uint8_t *key,
104*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_sym_alg,
105*758e9fbaSOystein Eftevaag     TPMI_AES_KEY_BITS key_bits,
106*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_mode,
107*758e9fbaSOystein Eftevaag     size_t blk_len,
108*758e9fbaSOystein Eftevaag     uint8_t *dst,
109*758e9fbaSOystein Eftevaag     size_t dst_size,
110*758e9fbaSOystein Eftevaag     uint8_t *iv);
111*758e9fbaSOystein Eftevaag 
112*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_sym_aes_decrypt(
113*758e9fbaSOystein Eftevaag     uint8_t *key,
114*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_sym_alg,
115*758e9fbaSOystein Eftevaag     TPMI_AES_KEY_BITS key_bits,
116*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_mode,
117*758e9fbaSOystein Eftevaag     size_t blk_len,
118*758e9fbaSOystein Eftevaag     uint8_t *dst,
119*758e9fbaSOystein Eftevaag     size_t dst_size,
120*758e9fbaSOystein Eftevaag     uint8_t *iv);
121*758e9fbaSOystein Eftevaag 
122*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_get_ecdh_point(
123*758e9fbaSOystein Eftevaag     TPM2B_PUBLIC *key,
124*758e9fbaSOystein Eftevaag     size_t max_out_size,
125*758e9fbaSOystein Eftevaag     TPM2B_ECC_PARAMETER *Z,
126*758e9fbaSOystein Eftevaag     TPMS_ECC_POINT *Q,
127*758e9fbaSOystein Eftevaag     BYTE * out_buffer,
128*758e9fbaSOystein Eftevaag     size_t * out_size);
129*758e9fbaSOystein Eftevaag 
130*758e9fbaSOystein Eftevaag #define iesys_crypto_get_ecdh_point iesys_cryptogcry_get_ecdh_point
131*758e9fbaSOystein Eftevaag #define iesys_crypto_sym_aes_encrypt iesys_cryptogcry_sym_aes_encrypt
132*758e9fbaSOystein Eftevaag #define iesys_crypto_sym_aes_decrypt iesys_cryptogcry_sym_aes_decrypt
133*758e9fbaSOystein Eftevaag 
134*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptogcry_init();
135*758e9fbaSOystein Eftevaag 
136*758e9fbaSOystein Eftevaag #define iesys_crypto_init iesys_cryptogcry_init
137*758e9fbaSOystein Eftevaag 
138*758e9fbaSOystein Eftevaag #endif /* ESYS_CRYPTO_GCRYPT_H */
139*758e9fbaSOystein Eftevaag 
140*758e9fbaSOystein Eftevaag #ifdef __cplusplus
141*758e9fbaSOystein Eftevaag } /* extern "C" */
142*758e9fbaSOystein Eftevaag #endif
143