xref: /aosp_15_r20/external/tpm2-tss/src/tss2-esys/esys_crypto_ossl.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_OSSL_H
7*758e9fbaSOystein Eftevaag #define ESYS_CRYPTO_OSSL_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 #define OSSL_FREE(S,TYPE) if((S) != NULL) {TYPE##_free((void*) (S)); (S)=NULL;}
18*758e9fbaSOystein Eftevaag 
19*758e9fbaSOystein Eftevaag typedef struct _IESYS_CRYPTO_CONTEXT IESYS_CRYPTO_CONTEXT_BLOB;
20*758e9fbaSOystein Eftevaag 
21*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hash_start(
22*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
23*758e9fbaSOystein Eftevaag     TPM2_ALG_ID hashAlg);
24*758e9fbaSOystein Eftevaag 
25*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hash_update(
26*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
27*758e9fbaSOystein Eftevaag     const uint8_t *buffer, size_t size);
28*758e9fbaSOystein Eftevaag 
29*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hash_update2b(
30*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
31*758e9fbaSOystein Eftevaag     TPM2B *b);
32*758e9fbaSOystein Eftevaag 
33*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hash_finish(
34*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
35*758e9fbaSOystein Eftevaag     uint8_t *buffer,
36*758e9fbaSOystein Eftevaag     size_t *size);
37*758e9fbaSOystein Eftevaag 
38*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hash_finish2b(
39*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
40*758e9fbaSOystein Eftevaag     TPM2B *b);
41*758e9fbaSOystein Eftevaag 
42*758e9fbaSOystein Eftevaag void iesys_cryptossl_hash_abort(IESYS_CRYPTO_CONTEXT_BLOB **context);
43*758e9fbaSOystein Eftevaag 
44*758e9fbaSOystein Eftevaag #define iesys_crypto_pk_encrypt iesys_cryptossl_pk_encrypt
45*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_start iesys_cryptossl_hash_start
46*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_update iesys_cryptossl_hash_update
47*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_update2b iesys_cryptossl_hash_update2b
48*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_finish iesys_cryptossl_hash_finish
49*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_finish2b iesys_cryptossl_hash_finish2b
50*758e9fbaSOystein Eftevaag #define iesys_crypto_hash_abort iesys_cryptossl_hash_abort
51*758e9fbaSOystein Eftevaag 
52*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hmac_start(
53*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
54*758e9fbaSOystein Eftevaag     TPM2_ALG_ID hmacAlg,
55*758e9fbaSOystein Eftevaag     const uint8_t *key,
56*758e9fbaSOystein Eftevaag     size_t size);
57*758e9fbaSOystein Eftevaag 
58*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hmac_start2b(
59*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
60*758e9fbaSOystein Eftevaag     TPM2_ALG_ID hmacAlg,
61*758e9fbaSOystein Eftevaag     TPM2B *b);
62*758e9fbaSOystein Eftevaag 
63*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hmac_update(
64*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
65*758e9fbaSOystein Eftevaag     const uint8_t *buffer,
66*758e9fbaSOystein Eftevaag     size_t size);
67*758e9fbaSOystein Eftevaag 
68*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hmac_update2b(
69*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB *context,
70*758e9fbaSOystein Eftevaag     TPM2B *b);
71*758e9fbaSOystein Eftevaag 
72*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hmac_finish(
73*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
74*758e9fbaSOystein Eftevaag     uint8_t *buffer,
75*758e9fbaSOystein Eftevaag     size_t *size);
76*758e9fbaSOystein Eftevaag 
77*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_hmac_finish2b(
78*758e9fbaSOystein Eftevaag     IESYS_CRYPTO_CONTEXT_BLOB **context,
79*758e9fbaSOystein Eftevaag     TPM2B *b);
80*758e9fbaSOystein Eftevaag 
81*758e9fbaSOystein Eftevaag void iesys_cryptossl_hmac_abort(IESYS_CRYPTO_CONTEXT_BLOB **context);
82*758e9fbaSOystein Eftevaag 
83*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_start iesys_cryptossl_hmac_start
84*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_start2b iesys_cryptossl_hmac_start2b
85*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_update iesys_cryptossl_hmac_update
86*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_update2b iesys_cryptossl_hmac_update2b
87*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_finish iesys_cryptossl_hmac_finish
88*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_finish2b iesys_cryptossl_hmac_finish2b
89*758e9fbaSOystein Eftevaag #define iesys_crypto_hmac_abort iesys_cryptossl_hmac_abort
90*758e9fbaSOystein Eftevaag 
91*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_random2b(TPM2B_NONCE *nonce, size_t num_bytes);
92*758e9fbaSOystein Eftevaag 
93*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_pk_encrypt(
94*758e9fbaSOystein Eftevaag     TPM2B_PUBLIC *key,
95*758e9fbaSOystein Eftevaag     size_t in_size,
96*758e9fbaSOystein Eftevaag     BYTE *in_buffer,
97*758e9fbaSOystein Eftevaag     size_t max_out_size,
98*758e9fbaSOystein Eftevaag     BYTE *out_buffer,
99*758e9fbaSOystein Eftevaag     size_t *out_size,
100*758e9fbaSOystein Eftevaag     const char *label);
101*758e9fbaSOystein Eftevaag 
102*758e9fbaSOystein Eftevaag 
103*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_sym_aes_encrypt(
104*758e9fbaSOystein Eftevaag     uint8_t *key,
105*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_sym_alg,
106*758e9fbaSOystein Eftevaag     TPMI_AES_KEY_BITS key_bits,
107*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_mode,
108*758e9fbaSOystein Eftevaag     size_t blk_len,
109*758e9fbaSOystein Eftevaag     uint8_t *dst,
110*758e9fbaSOystein Eftevaag     size_t dst_size,
111*758e9fbaSOystein Eftevaag     uint8_t *iv);
112*758e9fbaSOystein Eftevaag 
113*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_sym_aes_decrypt(
114*758e9fbaSOystein Eftevaag     uint8_t *key,
115*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_sym_alg,
116*758e9fbaSOystein Eftevaag     TPMI_AES_KEY_BITS key_bits,
117*758e9fbaSOystein Eftevaag     TPM2_ALG_ID tpm_mode,
118*758e9fbaSOystein Eftevaag     size_t blk_len,
119*758e9fbaSOystein Eftevaag     uint8_t *dst,
120*758e9fbaSOystein Eftevaag     size_t dst_size,
121*758e9fbaSOystein Eftevaag     uint8_t *iv);
122*758e9fbaSOystein Eftevaag 
123*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_get_ecdh_point(
124*758e9fbaSOystein Eftevaag     TPM2B_PUBLIC *key,
125*758e9fbaSOystein Eftevaag     size_t max_out_size,
126*758e9fbaSOystein Eftevaag     TPM2B_ECC_PARAMETER *Z,
127*758e9fbaSOystein Eftevaag     TPMS_ECC_POINT *Q,
128*758e9fbaSOystein Eftevaag     BYTE * out_buffer,
129*758e9fbaSOystein Eftevaag     size_t * out_size);
130*758e9fbaSOystein Eftevaag 
131*758e9fbaSOystein Eftevaag #define iesys_crypto_random2b iesys_cryptossl_random2b
132*758e9fbaSOystein Eftevaag #define iesys_crypto_get_ecdh_point iesys_cryptossl_get_ecdh_point
133*758e9fbaSOystein Eftevaag #define iesys_crypto_sym_aes_encrypt iesys_cryptossl_sym_aes_encrypt
134*758e9fbaSOystein Eftevaag #define iesys_crypto_sym_aes_decrypt iesys_cryptossl_sym_aes_decrypt
135*758e9fbaSOystein Eftevaag 
136*758e9fbaSOystein Eftevaag TSS2_RC iesys_cryptossl_init();
137*758e9fbaSOystein Eftevaag 
138*758e9fbaSOystein Eftevaag #define iesys_crypto_init iesys_cryptossl_init
139*758e9fbaSOystein Eftevaag 
140*758e9fbaSOystein Eftevaag #ifdef __cplusplus
141*758e9fbaSOystein Eftevaag } /* extern "C" */
142*758e9fbaSOystein Eftevaag #endif
143*758e9fbaSOystein Eftevaag 
144*758e9fbaSOystein Eftevaag #endif /* ESYS_CRYPTO_OSSL_H */
145