xref: /optee_os/core/crypto/crypto.c (revision e1770e7153676d40582092005fbffb16cfeafd09)
1b887bd8fSJens Wiklander /*
2b887bd8fSJens Wiklander  * Copyright (c) 2017, Linaro Limited
3b887bd8fSJens Wiklander  * All rights reserved.
4b887bd8fSJens Wiklander  *
5b887bd8fSJens Wiklander  * SPDX-License-Identifier: BSD-2-Clause
6b887bd8fSJens Wiklander  */
7b887bd8fSJens Wiklander 
8b887bd8fSJens Wiklander #include <compiler.h>
9*e1770e71SJens Wiklander #include <crypto/crypto.h>
1033790cc1SJens Wiklander #include <kernel/panic.h>
11b887bd8fSJens Wiklander 
12b887bd8fSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_HASH)
13b887bd8fSJens Wiklander TEE_Result crypto_hash_get_ctx_size(uint32_t algo __unused,
14b887bd8fSJens Wiklander 				    size_t *size __unused)
15b887bd8fSJens Wiklander {
16b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
17b887bd8fSJens Wiklander }
18b887bd8fSJens Wiklander 
19b887bd8fSJens Wiklander TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused)
20b887bd8fSJens Wiklander {
21b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
22b887bd8fSJens Wiklander }
23b887bd8fSJens Wiklander TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused,
24b887bd8fSJens Wiklander 			      const uint8_t *data __unused, size_t len __unused)
25b887bd8fSJens Wiklander {
26b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
27b887bd8fSJens Wiklander }
28b887bd8fSJens Wiklander TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused,
29b887bd8fSJens Wiklander 			     uint8_t *digest __unused, size_t len __unused)
30b887bd8fSJens Wiklander {
31b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
32b887bd8fSJens Wiklander }
33b887bd8fSJens Wiklander #endif /*_CFG_CRYPTO_WITH_HASH*/
3482d91db1SJens Wiklander 
3582d91db1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_CIPHER)
3682d91db1SJens Wiklander TEE_Result crypto_cipher_get_ctx_size(uint32_t algo, size_t *size)
3782d91db1SJens Wiklander {
3882d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
3982d91db1SJens Wiklander }
4082d91db1SJens Wiklander 
4182d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused,
4282d91db1SJens Wiklander 			      TEE_OperationMode mode __unused,
4382d91db1SJens Wiklander 			      const uint8_t *key1 __unused,
4482d91db1SJens Wiklander 			      size_t key1_len __unused,
4582d91db1SJens Wiklander 			      const uint8_t *key2 __unused,
4682d91db1SJens Wiklander 			      size_t key2_len __unused,
4782d91db1SJens Wiklander 			      const uint8_t *iv __unused,
4882d91db1SJens Wiklander 			      size_t iv_len __unused)
4982d91db1SJens Wiklander {
5082d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
5182d91db1SJens Wiklander }
5282d91db1SJens Wiklander 
5382d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused,
5482d91db1SJens Wiklander 				TEE_OperationMode mode __unused,
5582d91db1SJens Wiklander 				bool last_block __unused,
5682d91db1SJens Wiklander 				const uint8_t *data __unused,
5782d91db1SJens Wiklander 				size_t len __unused, uint8_t *dst __unused)
5882d91db1SJens Wiklander {
5982d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
6082d91db1SJens Wiklander }
6182d91db1SJens Wiklander 
6282d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused)
6382d91db1SJens Wiklander {
6482d91db1SJens Wiklander }
6582d91db1SJens Wiklander 
6682d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused,
6782d91db1SJens Wiklander 					size_t *size __unused)
6882d91db1SJens Wiklander {
6982d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
7082d91db1SJens Wiklander }
7182d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/
72e9eaba5cSJens Wiklander 
73e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC)
74e9eaba5cSJens Wiklander TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused,
75e9eaba5cSJens Wiklander 				   size_t *size __unused)
76e9eaba5cSJens Wiklander {
77e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
78e9eaba5cSJens Wiklander }
79e9eaba5cSJens Wiklander 
80e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused,
81e9eaba5cSJens Wiklander 			   const uint8_t *key __unused, size_t len __unused)
82e9eaba5cSJens Wiklander {
83e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
84e9eaba5cSJens Wiklander }
85e9eaba5cSJens Wiklander 
86e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused,
87e9eaba5cSJens Wiklander 			     const uint8_t *data __unused, size_t len __unused)
88e9eaba5cSJens Wiklander {
89e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
90e9eaba5cSJens Wiklander }
91e9eaba5cSJens Wiklander 
92e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused,
93e9eaba5cSJens Wiklander 			    uint8_t *digest __unused,
94e9eaba5cSJens Wiklander 			    size_t digest_len __unused)
95e9eaba5cSJens Wiklander {
96e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
97e9eaba5cSJens Wiklander }
98e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/
99e9eaba5cSJens Wiklander 
1008875ce46SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_AUTHENC)
1018875ce46SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __unused,
1028875ce46SJens Wiklander 				       size_t *size __unused)
1038875ce46SJens Wiklander {
1048875ce46SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
1058875ce46SJens Wiklander }
1068875ce46SJens Wiklander 
1078875ce46SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __unused, uint32_t algo __unused,
1088875ce46SJens Wiklander 			       TEE_OperationMode mode __unused,
1098875ce46SJens Wiklander 			       const uint8_t *key __unused,
1108875ce46SJens Wiklander 			       size_t key_len __unused,
1118875ce46SJens Wiklander 			       const uint8_t *nonce __unused,
1128875ce46SJens Wiklander 			       size_t nonce_len __unused,
1138875ce46SJens Wiklander 			       size_t tag_len __unused,
1148875ce46SJens Wiklander 			       size_t aad_len __unused,
1158875ce46SJens Wiklander 			       size_t payload_len __unused)
1168875ce46SJens Wiklander {
1178875ce46SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
1188875ce46SJens Wiklander }
1198875ce46SJens Wiklander 
1208875ce46SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __unused, uint32_t algo __unused,
1218875ce46SJens Wiklander 				     TEE_OperationMode mode __unused,
1228875ce46SJens Wiklander 				     const uint8_t *data __unused,
1238875ce46SJens Wiklander 				     size_t len __unused)
1248875ce46SJens Wiklander {
1258875ce46SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
1268875ce46SJens Wiklander }
1278875ce46SJens Wiklander 
1288875ce46SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __unused,
1298875ce46SJens Wiklander 					 uint32_t algo __unused,
1308875ce46SJens Wiklander 					 TEE_OperationMode mode __unused,
1318875ce46SJens Wiklander 					 const uint8_t *src_data __unused,
1328875ce46SJens Wiklander 					 size_t src_len __unused,
1338875ce46SJens Wiklander 					 uint8_t *dst_data __unused,
1348875ce46SJens Wiklander 					 size_t *dst_len __unused)
1358875ce46SJens Wiklander {
1368875ce46SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
1378875ce46SJens Wiklander }
1388875ce46SJens Wiklander 
1398875ce46SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __unused, uint32_t algo __unused,
1408875ce46SJens Wiklander 				    const uint8_t *src_data __unused,
1418875ce46SJens Wiklander 				    size_t src_len __unused,
1428875ce46SJens Wiklander 				    uint8_t *dst_data __unused,
1438875ce46SJens Wiklander 				    size_t *dst_len __unused,
1448875ce46SJens Wiklander 				    uint8_t *dst_tag __unused,
1458875ce46SJens Wiklander 				    size_t *dst_tag_len __unused)
1468875ce46SJens Wiklander {
1478875ce46SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
1488875ce46SJens Wiklander }
1498875ce46SJens Wiklander 
1508875ce46SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __unused, uint32_t algo __unused,
1518875ce46SJens Wiklander 				    const uint8_t *src_data __unused,
1528875ce46SJens Wiklander 				    size_t src_len __unused,
1538875ce46SJens Wiklander 				    uint8_t *dst_data __unused,
1548875ce46SJens Wiklander 				    size_t *dst_len __unused,
1558875ce46SJens Wiklander 				    const uint8_t *tag __unused,
1568875ce46SJens Wiklander 				    size_t tag_len __unused)
1578875ce46SJens Wiklander {
1588875ce46SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
1598875ce46SJens Wiklander }
1608875ce46SJens Wiklander 
1618875ce46SJens Wiklander void crypto_authenc_final(void *ctx __unused, uint32_t algo __unused)
1628875ce46SJens Wiklander {
1638875ce46SJens Wiklander }
1648875ce46SJens Wiklander #endif /*_CFG_CRYPTO_WITH_AUTHENC*/
16533790cc1SJens Wiklander 
16633790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER)
16733790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused)
16833790cc1SJens Wiklander {
16933790cc1SJens Wiklander 	return NULL;
17033790cc1SJens Wiklander }
17133790cc1SJens Wiklander 
17233790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused,
17333790cc1SJens Wiklander 				size_t fromsize __unused,
17433790cc1SJens Wiklander 				struct bignum *to __unused)
17533790cc1SJens Wiklander {
17633790cc1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
17733790cc1SJens Wiklander }
17833790cc1SJens Wiklander 
17933790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused)
18033790cc1SJens Wiklander {
18133790cc1SJens Wiklander 	return 0;
18233790cc1SJens Wiklander }
18333790cc1SJens Wiklander 
18433790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused)
18533790cc1SJens Wiklander {
18633790cc1SJens Wiklander 	return 0;
18733790cc1SJens Wiklander }
18833790cc1SJens Wiklander 
18933790cc1SJens Wiklander /*
19033790cc1SJens Wiklander  * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be
19133790cc1SJens Wiklander  * enough to guarantee that the functions calling this function aren't
19233790cc1SJens Wiklander  * called, but just in case add a panic() here to avoid unexpected
19333790cc1SJens Wiklander  * behavoir.
19433790cc1SJens Wiklander  */
19533790cc1SJens Wiklander static void bignum_cant_happen(void)
19633790cc1SJens Wiklander {
19733790cc1SJens Wiklander 	volatile bool b = true;
19833790cc1SJens Wiklander 
19933790cc1SJens Wiklander 	/* Avoid warning about function does not return */
20033790cc1SJens Wiklander 	if (b)
20133790cc1SJens Wiklander 		panic();
20233790cc1SJens Wiklander }
20333790cc1SJens Wiklander 
20433790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused,
20533790cc1SJens Wiklander 			  uint8_t *to __unused)
20633790cc1SJens Wiklander {
20733790cc1SJens Wiklander 	bignum_cant_happen();
20833790cc1SJens Wiklander }
20933790cc1SJens Wiklander 
21033790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused,
21133790cc1SJens Wiklander 			const struct bignum *from __unused)
21233790cc1SJens Wiklander {
21333790cc1SJens Wiklander 	bignum_cant_happen();
21433790cc1SJens Wiklander }
21533790cc1SJens Wiklander 
21633790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a)
21733790cc1SJens Wiklander {
21833790cc1SJens Wiklander 	if (a)
21933790cc1SJens Wiklander 		panic();
22033790cc1SJens Wiklander }
22133790cc1SJens Wiklander 
22233790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused)
22333790cc1SJens Wiklander {
22433790cc1SJens Wiklander 	bignum_cant_happen();
22533790cc1SJens Wiklander }
22633790cc1SJens Wiklander 
22733790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */
22833790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused,
22933790cc1SJens Wiklander 			      struct bignum *b __unused)
23033790cc1SJens Wiklander {
23133790cc1SJens Wiklander 	bignum_cant_happen();
23233790cc1SJens Wiklander 	return -1;
23333790cc1SJens Wiklander }
23433790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/
235291e5450SJens Wiklander 
236291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
237291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused,
238291e5450SJens Wiklander 					    size_t key_size_bits __unused)
239291e5450SJens Wiklander {
240291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
241291e5450SJens Wiklander }
242291e5450SJens Wiklander 
243291e5450SJens Wiklander TEE_Result
244291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused,
245291e5450SJens Wiklander 				    size_t key_size_bits __unused)
246291e5450SJens Wiklander {
247291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
248291e5450SJens Wiklander }
249291e5450SJens Wiklander 
250291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused)
251291e5450SJens Wiklander {
252291e5450SJens Wiklander }
253291e5450SJens Wiklander 
254291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused,
255291e5450SJens Wiklander 				      size_t key_size __unused)
256291e5450SJens Wiklander {
257291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
258291e5450SJens Wiklander }
259291e5450SJens Wiklander 
260291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused,
261291e5450SJens Wiklander 					   const uint8_t *src __unused,
262291e5450SJens Wiklander 					   size_t src_len __unused,
263291e5450SJens Wiklander 					   uint8_t *dst __unused,
264291e5450SJens Wiklander 					   size_t *dst_len __unused)
265291e5450SJens Wiklander {
266291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
267291e5450SJens Wiklander }
268291e5450SJens Wiklander 
269291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused,
270291e5450SJens Wiklander 					   const uint8_t *src __unused,
271291e5450SJens Wiklander 					   size_t src_len __unused,
272291e5450SJens Wiklander 					   uint8_t *dst __unused,
273291e5450SJens Wiklander 					   size_t *dst_len __unused)
274291e5450SJens Wiklander {
275291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
276291e5450SJens Wiklander }
277291e5450SJens Wiklander 
278291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused,
279291e5450SJens Wiklander 					struct rsa_keypair *key __unused,
280291e5450SJens Wiklander 					const uint8_t *label __unused,
281291e5450SJens Wiklander 					size_t label_len __unused,
282291e5450SJens Wiklander 					const uint8_t *src __unused,
283291e5450SJens Wiklander 					size_t src_len __unused,
284291e5450SJens Wiklander 					uint8_t *dst __unused,
285291e5450SJens Wiklander 					size_t *dst_len __unused)
286291e5450SJens Wiklander {
287291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
288291e5450SJens Wiklander }
289291e5450SJens Wiklander 
290291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused,
291291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
292291e5450SJens Wiklander 					const uint8_t *label __unused,
293291e5450SJens Wiklander 					size_t label_len __unused,
294291e5450SJens Wiklander 					const uint8_t *src __unused,
295291e5450SJens Wiklander 					size_t src_len __unused,
296291e5450SJens Wiklander 					uint8_t *dst __unused,
297291e5450SJens Wiklander 					size_t *dst_len __unused)
298291e5450SJens Wiklander {
299291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
300291e5450SJens Wiklander }
301291e5450SJens Wiklander 
302291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused,
303291e5450SJens Wiklander 				      struct rsa_keypair *key __unused,
304291e5450SJens Wiklander 				      int salt_len __unused,
305291e5450SJens Wiklander 				      const uint8_t *msg __unused,
306291e5450SJens Wiklander 				      size_t msg_len __unused,
307291e5450SJens Wiklander 				      uint8_t *sig __unused,
308291e5450SJens Wiklander 				      size_t *sig_len __unused)
309291e5450SJens Wiklander {
310291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
311291e5450SJens Wiklander }
312291e5450SJens Wiklander 
313291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused,
314291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
315291e5450SJens Wiklander 					int salt_len __unused,
316291e5450SJens Wiklander 					const uint8_t *msg __unused,
317291e5450SJens Wiklander 					size_t msg_len __unused,
318291e5450SJens Wiklander 					const uint8_t *sig __unused,
319291e5450SJens Wiklander 					size_t sig_len __unused)
320291e5450SJens Wiklander {
321291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
322291e5450SJens Wiklander }
323291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/
324291e5450SJens Wiklander 
325291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
326291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused,
327291e5450SJens Wiklander 					    size_t key_size_bits __unused)
328291e5450SJens Wiklander {
329291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
330291e5450SJens Wiklander }
331291e5450SJens Wiklander 
332291e5450SJens Wiklander TEE_Result
333291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused,
334291e5450SJens Wiklander 				    size_t key_size_bits __unused)
335291e5450SJens Wiklander {
336291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
337291e5450SJens Wiklander }
338291e5450SJens Wiklander 
339291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused,
340291e5450SJens Wiklander 				      size_t key_size __unused)
341291e5450SJens Wiklander {
342291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
343291e5450SJens Wiklander }
344291e5450SJens Wiklander 
345291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused,
346291e5450SJens Wiklander 				   struct dsa_keypair *key __unused,
347291e5450SJens Wiklander 				   const uint8_t *msg __unused,
348291e5450SJens Wiklander 				   size_t msg_len __unused,
349291e5450SJens Wiklander 				   uint8_t *sig __unused,
350291e5450SJens Wiklander 				   size_t *sig_len __unused)
351291e5450SJens Wiklander {
352291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
353291e5450SJens Wiklander }
354291e5450SJens Wiklander 
355291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused,
356291e5450SJens Wiklander 				     struct dsa_public_key *key __unused,
357291e5450SJens Wiklander 				     const uint8_t *msg __unused,
358291e5450SJens Wiklander 				     size_t msg_len __unused,
359291e5450SJens Wiklander 				     const uint8_t *sig __unused,
360291e5450SJens Wiklander 				     size_t sig_len __unused)
361291e5450SJens Wiklander {
362291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
363291e5450SJens Wiklander }
364291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/
365291e5450SJens Wiklander 
366291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
367291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *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 TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused,
374291e5450SJens Wiklander 				     struct bignum *q __unused,
375291e5450SJens Wiklander 				     size_t xbits __unused)
376291e5450SJens Wiklander {
377291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
378291e5450SJens Wiklander }
379291e5450SJens Wiklander 
380291e5450SJens Wiklander TEE_Result
381291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused,
382291e5450SJens Wiklander 				struct bignum *public_key __unused,
383291e5450SJens Wiklander 				struct bignum *secret __unused)
384291e5450SJens Wiklander {
385291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
386291e5450SJens Wiklander }
387291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/
388291e5450SJens Wiklander 
389291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
390291e5450SJens Wiklander TEE_Result
391291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused,
392291e5450SJens Wiklander 				    size_t key_size_bits __unused)
393291e5450SJens Wiklander {
394291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
395291e5450SJens Wiklander }
396291e5450SJens Wiklander 
397291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused,
398291e5450SJens Wiklander 					    size_t key_size_bits __unused)
399291e5450SJens Wiklander {
400291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
401291e5450SJens Wiklander }
402291e5450SJens Wiklander 
403291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused)
404291e5450SJens Wiklander {
405291e5450SJens Wiklander }
406291e5450SJens Wiklander 
407291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused)
408291e5450SJens Wiklander {
409291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
410291e5450SJens Wiklander }
411291e5450SJens Wiklander 
412291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused,
413291e5450SJens Wiklander 				   struct ecc_keypair *key __unused,
414291e5450SJens Wiklander 				   const uint8_t *msg __unused,
415291e5450SJens Wiklander 				   size_t msg_len __unused,
416291e5450SJens Wiklander 				   uint8_t *sig __unused,
417291e5450SJens Wiklander 				   size_t *sig_len __unused)
418291e5450SJens Wiklander {
419291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
420291e5450SJens Wiklander }
421291e5450SJens Wiklander 
422291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_verify(uint32_t algo __unused,
423291e5450SJens Wiklander 				     struct ecc_public_key *key __unused,
424291e5450SJens Wiklander 				     const uint8_t *msg __unused,
425291e5450SJens Wiklander 				     size_t msg_len __unused,
426291e5450SJens Wiklander 				     const uint8_t *sig __unused,
427291e5450SJens Wiklander 				     size_t sig_len __unused)
428291e5450SJens Wiklander {
429291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
430291e5450SJens Wiklander }
431291e5450SJens Wiklander 
432291e5450SJens Wiklander TEE_Result
433291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused,
434291e5450SJens Wiklander 				 struct ecc_public_key *public_key __unused,
435291e5450SJens Wiklander 				 void *secret __unused,
436291e5450SJens Wiklander 				 unsigned long *secret_len __unused)
437291e5450SJens Wiklander {
438291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
439291e5450SJens Wiklander }
440291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/
441