xref: /optee_os/core/crypto/crypto.c (revision 291e5450a1e9cf4e495d292f40a8ab9b901d9c78)
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>
933790cc1SJens Wiklander #include <kernel/panic.h>
10b887bd8fSJens Wiklander #include <tee/tee_cryp_provider.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*/
235*291e5450SJens Wiklander 
236*291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
237*291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused,
238*291e5450SJens Wiklander 					    size_t key_size_bits __unused)
239*291e5450SJens Wiklander {
240*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
241*291e5450SJens Wiklander }
242*291e5450SJens Wiklander 
243*291e5450SJens Wiklander TEE_Result
244*291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused,
245*291e5450SJens Wiklander 				    size_t key_size_bits __unused)
246*291e5450SJens Wiklander {
247*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
248*291e5450SJens Wiklander }
249*291e5450SJens Wiklander 
250*291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused)
251*291e5450SJens Wiklander {
252*291e5450SJens Wiklander }
253*291e5450SJens Wiklander 
254*291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused,
255*291e5450SJens Wiklander 				      size_t key_size __unused)
256*291e5450SJens Wiklander {
257*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
258*291e5450SJens Wiklander }
259*291e5450SJens Wiklander 
260*291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused,
261*291e5450SJens Wiklander 					   const uint8_t *src __unused,
262*291e5450SJens Wiklander 					   size_t src_len __unused,
263*291e5450SJens Wiklander 					   uint8_t *dst __unused,
264*291e5450SJens Wiklander 					   size_t *dst_len __unused)
265*291e5450SJens Wiklander {
266*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
267*291e5450SJens Wiklander }
268*291e5450SJens Wiklander 
269*291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused,
270*291e5450SJens Wiklander 					   const uint8_t *src __unused,
271*291e5450SJens Wiklander 					   size_t src_len __unused,
272*291e5450SJens Wiklander 					   uint8_t *dst __unused,
273*291e5450SJens Wiklander 					   size_t *dst_len __unused)
274*291e5450SJens Wiklander {
275*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
276*291e5450SJens Wiklander }
277*291e5450SJens Wiklander 
278*291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused,
279*291e5450SJens Wiklander 					struct rsa_keypair *key __unused,
280*291e5450SJens Wiklander 					const uint8_t *label __unused,
281*291e5450SJens Wiklander 					size_t label_len __unused,
282*291e5450SJens Wiklander 					const uint8_t *src __unused,
283*291e5450SJens Wiklander 					size_t src_len __unused,
284*291e5450SJens Wiklander 					uint8_t *dst __unused,
285*291e5450SJens Wiklander 					size_t *dst_len __unused)
286*291e5450SJens Wiklander {
287*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
288*291e5450SJens Wiklander }
289*291e5450SJens Wiklander 
290*291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused,
291*291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
292*291e5450SJens Wiklander 					const uint8_t *label __unused,
293*291e5450SJens Wiklander 					size_t label_len __unused,
294*291e5450SJens Wiklander 					const uint8_t *src __unused,
295*291e5450SJens Wiklander 					size_t src_len __unused,
296*291e5450SJens Wiklander 					uint8_t *dst __unused,
297*291e5450SJens Wiklander 					size_t *dst_len __unused)
298*291e5450SJens Wiklander {
299*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
300*291e5450SJens Wiklander }
301*291e5450SJens Wiklander 
302*291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused,
303*291e5450SJens Wiklander 				      struct rsa_keypair *key __unused,
304*291e5450SJens Wiklander 				      int salt_len __unused,
305*291e5450SJens Wiklander 				      const uint8_t *msg __unused,
306*291e5450SJens Wiklander 				      size_t msg_len __unused,
307*291e5450SJens Wiklander 				      uint8_t *sig __unused,
308*291e5450SJens Wiklander 				      size_t *sig_len __unused)
309*291e5450SJens Wiklander {
310*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
311*291e5450SJens Wiklander }
312*291e5450SJens Wiklander 
313*291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused,
314*291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
315*291e5450SJens Wiklander 					int salt_len __unused,
316*291e5450SJens Wiklander 					const uint8_t *msg __unused,
317*291e5450SJens Wiklander 					size_t msg_len __unused,
318*291e5450SJens Wiklander 					const uint8_t *sig __unused,
319*291e5450SJens Wiklander 					size_t sig_len __unused)
320*291e5450SJens Wiklander {
321*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
322*291e5450SJens Wiklander }
323*291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/
324*291e5450SJens Wiklander 
325*291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
326*291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused,
327*291e5450SJens Wiklander 					    size_t key_size_bits __unused)
328*291e5450SJens Wiklander {
329*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
330*291e5450SJens Wiklander }
331*291e5450SJens Wiklander 
332*291e5450SJens Wiklander TEE_Result
333*291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused,
334*291e5450SJens Wiklander 				    size_t key_size_bits __unused)
335*291e5450SJens Wiklander {
336*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
337*291e5450SJens Wiklander }
338*291e5450SJens Wiklander 
339*291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused,
340*291e5450SJens Wiklander 				      size_t key_size __unused)
341*291e5450SJens Wiklander {
342*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
343*291e5450SJens Wiklander }
344*291e5450SJens Wiklander 
345*291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused,
346*291e5450SJens Wiklander 				   struct dsa_keypair *key __unused,
347*291e5450SJens Wiklander 				   const uint8_t *msg __unused,
348*291e5450SJens Wiklander 				   size_t msg_len __unused,
349*291e5450SJens Wiklander 				   uint8_t *sig __unused,
350*291e5450SJens Wiklander 				   size_t *sig_len __unused)
351*291e5450SJens Wiklander {
352*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
353*291e5450SJens Wiklander }
354*291e5450SJens Wiklander 
355*291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused,
356*291e5450SJens Wiklander 				     struct dsa_public_key *key __unused,
357*291e5450SJens Wiklander 				     const uint8_t *msg __unused,
358*291e5450SJens Wiklander 				     size_t msg_len __unused,
359*291e5450SJens Wiklander 				     const uint8_t *sig __unused,
360*291e5450SJens Wiklander 				     size_t sig_len __unused)
361*291e5450SJens Wiklander {
362*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
363*291e5450SJens Wiklander }
364*291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/
365*291e5450SJens Wiklander 
366*291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
367*291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused,
368*291e5450SJens Wiklander 					   size_t key_size_bits __unused)
369*291e5450SJens Wiklander {
370*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
371*291e5450SJens Wiklander }
372*291e5450SJens Wiklander 
373*291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused,
374*291e5450SJens Wiklander 				     struct bignum *q __unused,
375*291e5450SJens Wiklander 				     size_t xbits __unused)
376*291e5450SJens Wiklander {
377*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
378*291e5450SJens Wiklander }
379*291e5450SJens Wiklander 
380*291e5450SJens Wiklander TEE_Result
381*291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused,
382*291e5450SJens Wiklander 				struct bignum *public_key __unused,
383*291e5450SJens Wiklander 				struct bignum *secret __unused)
384*291e5450SJens Wiklander {
385*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
386*291e5450SJens Wiklander }
387*291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/
388*291e5450SJens Wiklander 
389*291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
390*291e5450SJens Wiklander TEE_Result
391*291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused,
392*291e5450SJens Wiklander 				    size_t key_size_bits __unused)
393*291e5450SJens Wiklander {
394*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
395*291e5450SJens Wiklander }
396*291e5450SJens Wiklander 
397*291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused,
398*291e5450SJens Wiklander 					    size_t key_size_bits __unused)
399*291e5450SJens Wiklander {
400*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
401*291e5450SJens Wiklander }
402*291e5450SJens Wiklander 
403*291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused)
404*291e5450SJens Wiklander {
405*291e5450SJens Wiklander }
406*291e5450SJens Wiklander 
407*291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused)
408*291e5450SJens Wiklander {
409*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
410*291e5450SJens Wiklander }
411*291e5450SJens Wiklander 
412*291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused,
413*291e5450SJens Wiklander 				   struct ecc_keypair *key __unused,
414*291e5450SJens Wiklander 				   const uint8_t *msg __unused,
415*291e5450SJens Wiklander 				   size_t msg_len __unused,
416*291e5450SJens Wiklander 				   uint8_t *sig __unused,
417*291e5450SJens Wiklander 				   size_t *sig_len __unused)
418*291e5450SJens Wiklander {
419*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
420*291e5450SJens Wiklander }
421*291e5450SJens Wiklander 
422*291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_verify(uint32_t algo __unused,
423*291e5450SJens Wiklander 				     struct ecc_public_key *key __unused,
424*291e5450SJens Wiklander 				     const uint8_t *msg __unused,
425*291e5450SJens Wiklander 				     size_t msg_len __unused,
426*291e5450SJens Wiklander 				     const uint8_t *sig __unused,
427*291e5450SJens Wiklander 				     size_t sig_len __unused)
428*291e5450SJens Wiklander {
429*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
430*291e5450SJens Wiklander }
431*291e5450SJens Wiklander 
432*291e5450SJens Wiklander TEE_Result
433*291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused,
434*291e5450SJens Wiklander 				 struct ecc_public_key *public_key __unused,
435*291e5450SJens Wiklander 				 void *secret __unused,
436*291e5450SJens Wiklander 				 unsigned long *secret_len __unused)
437*291e5450SJens Wiklander {
438*291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
439*291e5450SJens Wiklander }
440*291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/
441