xref: /optee_os/core/crypto/crypto.c (revision ecf2e014a6a614ae163616568ba6703a3502e956)
1fb7ef469SJerome Forissier // SPDX-License-Identifier: BSD-2-Clause
2b887bd8fSJens Wiklander /*
3b887bd8fSJens Wiklander  * Copyright (c) 2017, Linaro Limited
4b887bd8fSJens Wiklander  */
5b887bd8fSJens Wiklander 
6b887bd8fSJens Wiklander #include <compiler.h>
7d0620b01SJens Wiklander #include <crypto/aes-ccm.h>
8d0620b01SJens Wiklander #include <crypto/aes-gcm.h>
9e1770e71SJens Wiklander #include <crypto/crypto.h>
1033790cc1SJens Wiklander #include <kernel/panic.h>
11b887bd8fSJens Wiklander 
12b887bd8fSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_HASH)
13*ecf2e014SJens Wiklander TEE_Result crypto_hash_alloc_ctx(void **ctx __unused, uint32_t algo __unused)
14b887bd8fSJens Wiklander {
15b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
16b887bd8fSJens Wiklander }
17b887bd8fSJens Wiklander 
18*ecf2e014SJens Wiklander void crypto_hash_free_ctx(void *ctx __unused, uint32_t algo __unused)
19*ecf2e014SJens Wiklander {
20*ecf2e014SJens Wiklander 	assert(0);
21*ecf2e014SJens Wiklander }
22*ecf2e014SJens Wiklander 
23*ecf2e014SJens Wiklander void crypto_hash_copy_state(void *dst_ctx __unused, void *src_ctx __unused,
24*ecf2e014SJens Wiklander 			    uint32_t algo __unused)
25*ecf2e014SJens Wiklander {
26*ecf2e014SJens Wiklander 	assert(0);
27*ecf2e014SJens Wiklander }
28*ecf2e014SJens Wiklander 
29b887bd8fSJens Wiklander TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused)
30b887bd8fSJens Wiklander {
31b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
32b887bd8fSJens Wiklander }
33b887bd8fSJens Wiklander TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused,
34b887bd8fSJens Wiklander 			      const uint8_t *data __unused, size_t len __unused)
35b887bd8fSJens Wiklander {
36b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
37b887bd8fSJens Wiklander }
38b887bd8fSJens Wiklander TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused,
39b887bd8fSJens Wiklander 			     uint8_t *digest __unused, size_t len __unused)
40b887bd8fSJens Wiklander {
41b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
42b887bd8fSJens Wiklander }
43b887bd8fSJens Wiklander #endif /*_CFG_CRYPTO_WITH_HASH*/
4482d91db1SJens Wiklander 
4582d91db1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_CIPHER)
461c5fdd1fSJerome Forissier TEE_Result crypto_cipher_get_ctx_size(uint32_t algo __unused,
471c5fdd1fSJerome Forissier 				      size_t *size __unused)
4882d91db1SJens Wiklander {
491c5fdd1fSJerome Forissier 	return TEE_ERROR_NOT_IMPLEMENTED;
5082d91db1SJens Wiklander }
5182d91db1SJens Wiklander 
5282d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused,
5382d91db1SJens Wiklander 			      TEE_OperationMode mode __unused,
5482d91db1SJens Wiklander 			      const uint8_t *key1 __unused,
5582d91db1SJens Wiklander 			      size_t key1_len __unused,
5682d91db1SJens Wiklander 			      const uint8_t *key2 __unused,
5782d91db1SJens Wiklander 			      size_t key2_len __unused,
5882d91db1SJens Wiklander 			      const uint8_t *iv __unused,
5982d91db1SJens Wiklander 			      size_t iv_len __unused)
6082d91db1SJens Wiklander {
611c5fdd1fSJerome Forissier 	return TEE_ERROR_NOT_IMPLEMENTED;
6282d91db1SJens Wiklander }
6382d91db1SJens Wiklander 
6482d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused,
6582d91db1SJens Wiklander 				TEE_OperationMode mode __unused,
6682d91db1SJens Wiklander 				bool last_block __unused,
6782d91db1SJens Wiklander 				const uint8_t *data __unused,
6882d91db1SJens Wiklander 				size_t len __unused, uint8_t *dst __unused)
6982d91db1SJens Wiklander {
701c5fdd1fSJerome Forissier 	return TEE_ERROR_NOT_IMPLEMENTED;
7182d91db1SJens Wiklander }
7282d91db1SJens Wiklander 
7382d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused)
7482d91db1SJens Wiklander {
7582d91db1SJens Wiklander }
7682d91db1SJens Wiklander 
7782d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused,
7882d91db1SJens Wiklander 					size_t *size __unused)
7982d91db1SJens Wiklander {
801c5fdd1fSJerome Forissier 	return TEE_ERROR_NOT_IMPLEMENTED;
8182d91db1SJens Wiklander }
8282d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/
83e9eaba5cSJens Wiklander 
84e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC)
85e9eaba5cSJens Wiklander TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused,
86e9eaba5cSJens Wiklander 				   size_t *size __unused)
87e9eaba5cSJens Wiklander {
88e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
89e9eaba5cSJens Wiklander }
90e9eaba5cSJens Wiklander 
91e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused,
92e9eaba5cSJens Wiklander 			   const uint8_t *key __unused, size_t len __unused)
93e9eaba5cSJens Wiklander {
94e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
95e9eaba5cSJens Wiklander }
96e9eaba5cSJens Wiklander 
97e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused,
98e9eaba5cSJens Wiklander 			     const uint8_t *data __unused, size_t len __unused)
99e9eaba5cSJens Wiklander {
100e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
101e9eaba5cSJens Wiklander }
102e9eaba5cSJens Wiklander 
103e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused,
104e9eaba5cSJens Wiklander 			    uint8_t *digest __unused,
105e9eaba5cSJens Wiklander 			    size_t digest_len __unused)
106e9eaba5cSJens Wiklander {
107e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
108e9eaba5cSJens Wiklander }
109e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/
110e9eaba5cSJens Wiklander 
111d0620b01SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __maybe_unused,
112d0620b01SJens Wiklander 				       size_t *size __maybe_unused)
1138875ce46SJens Wiklander {
114d0620b01SJens Wiklander 	switch (algo) {
115d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
116d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
117d0620b01SJens Wiklander 		*size = crypto_aes_ccm_get_ctx_size();
118d0620b01SJens Wiklander 		return TEE_SUCCESS;
119d0620b01SJens Wiklander #endif
120d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
121d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
122d0620b01SJens Wiklander 		*size = crypto_aes_gcm_get_ctx_size();
123d0620b01SJens Wiklander 		return TEE_SUCCESS;
124d0620b01SJens Wiklander #endif
125d0620b01SJens Wiklander 	default:
1268875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
1278875ce46SJens Wiklander 	}
128d0620b01SJens Wiklander }
1298875ce46SJens Wiklander 
130d0620b01SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __maybe_unused,
131d0620b01SJens Wiklander 			       uint32_t algo __maybe_unused,
132d0620b01SJens Wiklander 			       TEE_OperationMode mode __maybe_unused,
133d0620b01SJens Wiklander 			       const uint8_t *key __maybe_unused,
134d0620b01SJens Wiklander 			       size_t key_len __maybe_unused,
135d0620b01SJens Wiklander 			       const uint8_t *nonce __maybe_unused,
136d0620b01SJens Wiklander 			       size_t nonce_len __maybe_unused,
137d0620b01SJens Wiklander 			       size_t tag_len __maybe_unused,
138d0620b01SJens Wiklander 			       size_t aad_len __maybe_unused,
139d0620b01SJens Wiklander 			       size_t payload_len __maybe_unused)
140d0620b01SJens Wiklander {
141d0620b01SJens Wiklander 	switch (algo) {
142d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
143d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
144d0620b01SJens Wiklander 		return crypto_aes_ccm_init(ctx, mode, key, key_len, nonce,
145d0620b01SJens Wiklander 					   nonce_len, tag_len, aad_len,
146d0620b01SJens Wiklander 					   payload_len);
147d0620b01SJens Wiklander #endif
148d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
149d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
150d0620b01SJens Wiklander 		return crypto_aes_gcm_init(ctx, mode, key, key_len, nonce,
151d0620b01SJens Wiklander 					   nonce_len, tag_len);
152d0620b01SJens Wiklander #endif
153d0620b01SJens Wiklander 	default:
154d0620b01SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
155d0620b01SJens Wiklander 	}
156d0620b01SJens Wiklander }
157d0620b01SJens Wiklander 
158d0620b01SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __maybe_unused,
159d0620b01SJens Wiklander 				     uint32_t algo __maybe_unused,
1608875ce46SJens Wiklander 				     TEE_OperationMode mode __unused,
161d0620b01SJens Wiklander 				     const uint8_t *data __maybe_unused,
162d0620b01SJens Wiklander 				     size_t len __maybe_unused)
1638875ce46SJens Wiklander {
164d0620b01SJens Wiklander 	switch (algo) {
165d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
166d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
167d0620b01SJens Wiklander 		return crypto_aes_ccm_update_aad(ctx, data, len);
168d0620b01SJens Wiklander #endif
169d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
170d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
171d0620b01SJens Wiklander 		return crypto_aes_gcm_update_aad(ctx, data, len);
172d0620b01SJens Wiklander #endif
173d0620b01SJens Wiklander 	default:
1748875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
1758875ce46SJens Wiklander 	}
176d0620b01SJens Wiklander }
1778875ce46SJens Wiklander 
178d0620b01SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __maybe_unused,
179d0620b01SJens Wiklander 					 uint32_t algo __maybe_unused,
180d0620b01SJens Wiklander 					 TEE_OperationMode mode __maybe_unused,
181d0620b01SJens Wiklander 					 const uint8_t *src_data __maybe_unused,
182d0620b01SJens Wiklander 					 size_t src_len __maybe_unused,
183d0620b01SJens Wiklander 					 uint8_t *dst_data __maybe_unused,
184d0620b01SJens Wiklander 					 size_t *dst_len __maybe_unused)
1858875ce46SJens Wiklander {
186d0620b01SJens Wiklander 	size_t dl = *dst_len;
187d0620b01SJens Wiklander 
188d0620b01SJens Wiklander 	*dst_len = src_len;
189d0620b01SJens Wiklander 	if (dl < src_len)
190d0620b01SJens Wiklander 		return TEE_ERROR_SHORT_BUFFER;
191d0620b01SJens Wiklander 
192d0620b01SJens Wiklander 	switch (algo) {
193d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
194d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
195d0620b01SJens Wiklander 		return crypto_aes_ccm_update_payload(ctx, mode, src_data,
196d0620b01SJens Wiklander 						     src_len, dst_data);
197d0620b01SJens Wiklander #endif
198d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
199d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
200d0620b01SJens Wiklander 		return crypto_aes_gcm_update_payload(ctx, mode, src_data,
201d0620b01SJens Wiklander 						     src_len, dst_data);
202d0620b01SJens Wiklander #endif
203d0620b01SJens Wiklander 	default:
2048875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
2058875ce46SJens Wiklander 	}
206d0620b01SJens Wiklander }
2078875ce46SJens Wiklander 
208d0620b01SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __maybe_unused,
209d0620b01SJens Wiklander 				    uint32_t algo __maybe_unused,
210d0620b01SJens Wiklander 				    const uint8_t *src_data __maybe_unused,
211d0620b01SJens Wiklander 				    size_t src_len __maybe_unused,
212d0620b01SJens Wiklander 				    uint8_t *dst_data __maybe_unused,
213d0620b01SJens Wiklander 				    size_t *dst_len __maybe_unused,
214d0620b01SJens Wiklander 				    uint8_t *dst_tag __maybe_unused,
215d0620b01SJens Wiklander 				    size_t *dst_tag_len __maybe_unused)
2168875ce46SJens Wiklander {
217d0620b01SJens Wiklander 	size_t dl = *dst_len;
218d0620b01SJens Wiklander 
219d0620b01SJens Wiklander 	*dst_len = src_len;
220d0620b01SJens Wiklander 	if (dl < src_len)
221d0620b01SJens Wiklander 		return TEE_ERROR_SHORT_BUFFER;
222d0620b01SJens Wiklander 
223d0620b01SJens Wiklander 	switch (algo) {
224d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
225d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
226d0620b01SJens Wiklander 		return crypto_aes_ccm_enc_final(ctx, src_data, src_len,
227d0620b01SJens Wiklander 						dst_data, dst_tag, dst_tag_len);
228d0620b01SJens Wiklander #endif
229d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
230d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
231d0620b01SJens Wiklander 		return crypto_aes_gcm_enc_final(ctx, src_data, src_len,
232d0620b01SJens Wiklander 						dst_data, dst_tag, dst_tag_len);
233d0620b01SJens Wiklander #endif
234d0620b01SJens Wiklander 	default:
2358875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
2368875ce46SJens Wiklander 	}
237d0620b01SJens Wiklander }
2388875ce46SJens Wiklander 
239d0620b01SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __maybe_unused,
240d0620b01SJens Wiklander 				    uint32_t algo __maybe_unused,
241d0620b01SJens Wiklander 				    const uint8_t *src_data __maybe_unused,
242d0620b01SJens Wiklander 				    size_t src_len __maybe_unused,
243d0620b01SJens Wiklander 				    uint8_t *dst_data __maybe_unused,
244d0620b01SJens Wiklander 				    size_t *dst_len __maybe_unused,
245d0620b01SJens Wiklander 				    const uint8_t *tag __maybe_unused,
246d0620b01SJens Wiklander 				    size_t tag_len __maybe_unused)
2478875ce46SJens Wiklander {
248d0620b01SJens Wiklander 	size_t dl = *dst_len;
249d0620b01SJens Wiklander 
250d0620b01SJens Wiklander 	*dst_len = src_len;
251d0620b01SJens Wiklander 	if (dl < src_len)
252d0620b01SJens Wiklander 		return TEE_ERROR_SHORT_BUFFER;
253d0620b01SJens Wiklander 
254d0620b01SJens Wiklander 	switch (algo) {
255d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
256d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
257d0620b01SJens Wiklander 		return crypto_aes_ccm_dec_final(ctx, src_data, src_len,
258d0620b01SJens Wiklander 						dst_data, tag, tag_len);
259d0620b01SJens Wiklander #endif
260d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
261d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
262d0620b01SJens Wiklander 		return crypto_aes_gcm_dec_final(ctx, src_data, src_len,
263d0620b01SJens Wiklander 						dst_data, tag, tag_len);
264d0620b01SJens Wiklander #endif
265d0620b01SJens Wiklander 	default:
2668875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
2678875ce46SJens Wiklander 	}
2688875ce46SJens Wiklander }
2698875ce46SJens Wiklander 
270d0620b01SJens Wiklander void crypto_authenc_final(void *ctx __maybe_unused,
271d0620b01SJens Wiklander 			  uint32_t algo __maybe_unused)
2728875ce46SJens Wiklander {
273d0620b01SJens Wiklander 	switch (algo) {
274d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
275d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
276d0620b01SJens Wiklander 		crypto_aes_ccm_final(ctx);
277d0620b01SJens Wiklander 		break;
278d0620b01SJens Wiklander #endif
279d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
280d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
281d0620b01SJens Wiklander 		crypto_aes_gcm_final(ctx);
282d0620b01SJens Wiklander 		break;
283d0620b01SJens Wiklander #endif
284d0620b01SJens Wiklander 	default:
285d0620b01SJens Wiklander 		break;
2868875ce46SJens Wiklander 	}
287d0620b01SJens Wiklander }
28833790cc1SJens Wiklander 
28933790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER)
29033790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused)
29133790cc1SJens Wiklander {
29233790cc1SJens Wiklander 	return NULL;
29333790cc1SJens Wiklander }
29433790cc1SJens Wiklander 
29533790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused,
29633790cc1SJens Wiklander 				size_t fromsize __unused,
29733790cc1SJens Wiklander 				struct bignum *to __unused)
29833790cc1SJens Wiklander {
29933790cc1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
30033790cc1SJens Wiklander }
30133790cc1SJens Wiklander 
30233790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused)
30333790cc1SJens Wiklander {
30433790cc1SJens Wiklander 	return 0;
30533790cc1SJens Wiklander }
30633790cc1SJens Wiklander 
30733790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused)
30833790cc1SJens Wiklander {
30933790cc1SJens Wiklander 	return 0;
31033790cc1SJens Wiklander }
31133790cc1SJens Wiklander 
31233790cc1SJens Wiklander /*
31333790cc1SJens Wiklander  * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be
31433790cc1SJens Wiklander  * enough to guarantee that the functions calling this function aren't
31533790cc1SJens Wiklander  * called, but just in case add a panic() here to avoid unexpected
31633790cc1SJens Wiklander  * behavoir.
31733790cc1SJens Wiklander  */
31833790cc1SJens Wiklander static void bignum_cant_happen(void)
31933790cc1SJens Wiklander {
32033790cc1SJens Wiklander 	volatile bool b = true;
32133790cc1SJens Wiklander 
32233790cc1SJens Wiklander 	/* Avoid warning about function does not return */
32333790cc1SJens Wiklander 	if (b)
32433790cc1SJens Wiklander 		panic();
32533790cc1SJens Wiklander }
32633790cc1SJens Wiklander 
32733790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused,
32833790cc1SJens Wiklander 			  uint8_t *to __unused)
32933790cc1SJens Wiklander {
33033790cc1SJens Wiklander 	bignum_cant_happen();
33133790cc1SJens Wiklander }
33233790cc1SJens Wiklander 
33333790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused,
33433790cc1SJens Wiklander 			const struct bignum *from __unused)
33533790cc1SJens Wiklander {
33633790cc1SJens Wiklander 	bignum_cant_happen();
33733790cc1SJens Wiklander }
33833790cc1SJens Wiklander 
33933790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a)
34033790cc1SJens Wiklander {
34133790cc1SJens Wiklander 	if (a)
34233790cc1SJens Wiklander 		panic();
34333790cc1SJens Wiklander }
34433790cc1SJens Wiklander 
34533790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused)
34633790cc1SJens Wiklander {
34733790cc1SJens Wiklander 	bignum_cant_happen();
34833790cc1SJens Wiklander }
34933790cc1SJens Wiklander 
35033790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */
35133790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused,
35233790cc1SJens Wiklander 			      struct bignum *b __unused)
35333790cc1SJens Wiklander {
35433790cc1SJens Wiklander 	bignum_cant_happen();
35533790cc1SJens Wiklander 	return -1;
35633790cc1SJens Wiklander }
35733790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/
358291e5450SJens Wiklander 
359291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
360291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused,
361291e5450SJens Wiklander 					    size_t key_size_bits __unused)
362291e5450SJens Wiklander {
363291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
364291e5450SJens Wiklander }
365291e5450SJens Wiklander 
366291e5450SJens Wiklander TEE_Result
367291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused,
368291e5450SJens Wiklander 				    size_t key_size_bits __unused)
369291e5450SJens Wiklander {
370291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
371291e5450SJens Wiklander }
372291e5450SJens Wiklander 
373291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused)
374291e5450SJens Wiklander {
375291e5450SJens Wiklander }
376291e5450SJens Wiklander 
377291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused,
378291e5450SJens Wiklander 				      size_t key_size __unused)
379291e5450SJens Wiklander {
380291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
381291e5450SJens Wiklander }
382291e5450SJens Wiklander 
383291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused,
384291e5450SJens Wiklander 					   const uint8_t *src __unused,
385291e5450SJens Wiklander 					   size_t src_len __unused,
386291e5450SJens Wiklander 					   uint8_t *dst __unused,
387291e5450SJens Wiklander 					   size_t *dst_len __unused)
388291e5450SJens Wiklander {
389291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
390291e5450SJens Wiklander }
391291e5450SJens Wiklander 
392291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused,
393291e5450SJens Wiklander 					   const uint8_t *src __unused,
394291e5450SJens Wiklander 					   size_t src_len __unused,
395291e5450SJens Wiklander 					   uint8_t *dst __unused,
396291e5450SJens Wiklander 					   size_t *dst_len __unused)
397291e5450SJens Wiklander {
398291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
399291e5450SJens Wiklander }
400291e5450SJens Wiklander 
401291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused,
402291e5450SJens Wiklander 					struct rsa_keypair *key __unused,
403291e5450SJens Wiklander 					const uint8_t *label __unused,
404291e5450SJens Wiklander 					size_t label_len __unused,
405291e5450SJens Wiklander 					const uint8_t *src __unused,
406291e5450SJens Wiklander 					size_t src_len __unused,
407291e5450SJens Wiklander 					uint8_t *dst __unused,
408291e5450SJens Wiklander 					size_t *dst_len __unused)
409291e5450SJens Wiklander {
410291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
411291e5450SJens Wiklander }
412291e5450SJens Wiklander 
413291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused,
414291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
415291e5450SJens Wiklander 					const uint8_t *label __unused,
416291e5450SJens Wiklander 					size_t label_len __unused,
417291e5450SJens Wiklander 					const uint8_t *src __unused,
418291e5450SJens Wiklander 					size_t src_len __unused,
419291e5450SJens Wiklander 					uint8_t *dst __unused,
420291e5450SJens Wiklander 					size_t *dst_len __unused)
421291e5450SJens Wiklander {
422291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
423291e5450SJens Wiklander }
424291e5450SJens Wiklander 
425291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused,
426291e5450SJens Wiklander 				      struct rsa_keypair *key __unused,
427291e5450SJens Wiklander 				      int salt_len __unused,
428291e5450SJens Wiklander 				      const uint8_t *msg __unused,
429291e5450SJens Wiklander 				      size_t msg_len __unused,
430291e5450SJens Wiklander 				      uint8_t *sig __unused,
431291e5450SJens Wiklander 				      size_t *sig_len __unused)
432291e5450SJens Wiklander {
433291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
434291e5450SJens Wiklander }
435291e5450SJens Wiklander 
436291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused,
437291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
438291e5450SJens Wiklander 					int salt_len __unused,
439291e5450SJens Wiklander 					const uint8_t *msg __unused,
440291e5450SJens Wiklander 					size_t msg_len __unused,
441291e5450SJens Wiklander 					const uint8_t *sig __unused,
442291e5450SJens Wiklander 					size_t sig_len __unused)
443291e5450SJens Wiklander {
444291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
445291e5450SJens Wiklander }
446291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/
447291e5450SJens Wiklander 
448291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
449291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused,
450291e5450SJens Wiklander 					    size_t key_size_bits __unused)
451291e5450SJens Wiklander {
452291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
453291e5450SJens Wiklander }
454291e5450SJens Wiklander 
455291e5450SJens Wiklander TEE_Result
456291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused,
457291e5450SJens Wiklander 				    size_t key_size_bits __unused)
458291e5450SJens Wiklander {
459291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
460291e5450SJens Wiklander }
461291e5450SJens Wiklander 
462291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused,
463291e5450SJens Wiklander 				      size_t key_size __unused)
464291e5450SJens Wiklander {
465291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
466291e5450SJens Wiklander }
467291e5450SJens Wiklander 
468291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused,
469291e5450SJens Wiklander 				   struct dsa_keypair *key __unused,
470291e5450SJens Wiklander 				   const uint8_t *msg __unused,
471291e5450SJens Wiklander 				   size_t msg_len __unused,
472291e5450SJens Wiklander 				   uint8_t *sig __unused,
473291e5450SJens Wiklander 				   size_t *sig_len __unused)
474291e5450SJens Wiklander {
475291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
476291e5450SJens Wiklander }
477291e5450SJens Wiklander 
478291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused,
479291e5450SJens Wiklander 				     struct dsa_public_key *key __unused,
480291e5450SJens Wiklander 				     const uint8_t *msg __unused,
481291e5450SJens Wiklander 				     size_t msg_len __unused,
482291e5450SJens Wiklander 				     const uint8_t *sig __unused,
483291e5450SJens Wiklander 				     size_t sig_len __unused)
484291e5450SJens Wiklander {
485291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
486291e5450SJens Wiklander }
487291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/
488291e5450SJens Wiklander 
489291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
490291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused,
491291e5450SJens Wiklander 					   size_t key_size_bits __unused)
492291e5450SJens Wiklander {
493291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
494291e5450SJens Wiklander }
495291e5450SJens Wiklander 
496291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused,
497291e5450SJens Wiklander 				     struct bignum *q __unused,
498291e5450SJens Wiklander 				     size_t xbits __unused)
499291e5450SJens Wiklander {
500291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
501291e5450SJens Wiklander }
502291e5450SJens Wiklander 
503291e5450SJens Wiklander TEE_Result
504291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused,
505291e5450SJens Wiklander 				struct bignum *public_key __unused,
506291e5450SJens Wiklander 				struct bignum *secret __unused)
507291e5450SJens Wiklander {
508291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
509291e5450SJens Wiklander }
510291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/
511291e5450SJens Wiklander 
512291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
513291e5450SJens Wiklander TEE_Result
514291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused,
515291e5450SJens Wiklander 				    size_t key_size_bits __unused)
516291e5450SJens Wiklander {
517291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
518291e5450SJens Wiklander }
519291e5450SJens Wiklander 
520291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused,
521291e5450SJens Wiklander 					    size_t key_size_bits __unused)
522291e5450SJens Wiklander {
523291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
524291e5450SJens Wiklander }
525291e5450SJens Wiklander 
526291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused)
527291e5450SJens Wiklander {
528291e5450SJens Wiklander }
529291e5450SJens Wiklander 
530291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused)
531291e5450SJens Wiklander {
532291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
533291e5450SJens Wiklander }
534291e5450SJens Wiklander 
535291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused,
536291e5450SJens Wiklander 				   struct ecc_keypair *key __unused,
537291e5450SJens Wiklander 				   const uint8_t *msg __unused,
538291e5450SJens Wiklander 				   size_t msg_len __unused,
539291e5450SJens Wiklander 				   uint8_t *sig __unused,
540291e5450SJens Wiklander 				   size_t *sig_len __unused)
541291e5450SJens Wiklander {
542291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
543291e5450SJens Wiklander }
544291e5450SJens Wiklander 
545291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_verify(uint32_t algo __unused,
546291e5450SJens Wiklander 				     struct ecc_public_key *key __unused,
547291e5450SJens Wiklander 				     const uint8_t *msg __unused,
548291e5450SJens Wiklander 				     size_t msg_len __unused,
549291e5450SJens Wiklander 				     const uint8_t *sig __unused,
550291e5450SJens Wiklander 				     size_t sig_len __unused)
551291e5450SJens Wiklander {
552291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
553291e5450SJens Wiklander }
554291e5450SJens Wiklander 
555291e5450SJens Wiklander TEE_Result
556291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused,
557291e5450SJens Wiklander 				 struct ecc_public_key *public_key __unused,
558291e5450SJens Wiklander 				 void *secret __unused,
559291e5450SJens Wiklander 				 unsigned long *secret_len __unused)
560291e5450SJens Wiklander {
561291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
562291e5450SJens Wiklander }
563291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/
564