xref: /optee_os/core/crypto/crypto.c (revision d0620b018892548461078a167c3b7e8770386794)
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*d0620b01SJens Wiklander #include <crypto/aes-ccm.h>
10*d0620b01SJens Wiklander #include <crypto/aes-gcm.h>
11e1770e71SJens Wiklander #include <crypto/crypto.h>
1233790cc1SJens Wiklander #include <kernel/panic.h>
13b887bd8fSJens Wiklander 
14b887bd8fSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_HASH)
15b887bd8fSJens Wiklander TEE_Result crypto_hash_get_ctx_size(uint32_t algo __unused,
16b887bd8fSJens Wiklander 				    size_t *size __unused)
17b887bd8fSJens Wiklander {
18b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
19b887bd8fSJens Wiklander }
20b887bd8fSJens Wiklander 
21b887bd8fSJens Wiklander TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused)
22b887bd8fSJens Wiklander {
23b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
24b887bd8fSJens Wiklander }
25b887bd8fSJens Wiklander TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused,
26b887bd8fSJens Wiklander 			      const uint8_t *data __unused, size_t len __unused)
27b887bd8fSJens Wiklander {
28b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
29b887bd8fSJens Wiklander }
30b887bd8fSJens Wiklander TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused,
31b887bd8fSJens Wiklander 			     uint8_t *digest __unused, size_t len __unused)
32b887bd8fSJens Wiklander {
33b887bd8fSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
34b887bd8fSJens Wiklander }
35b887bd8fSJens Wiklander #endif /*_CFG_CRYPTO_WITH_HASH*/
3682d91db1SJens Wiklander 
3782d91db1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_CIPHER)
3882d91db1SJens Wiklander TEE_Result crypto_cipher_get_ctx_size(uint32_t algo, size_t *size)
3982d91db1SJens Wiklander {
4082d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
4182d91db1SJens Wiklander }
4282d91db1SJens Wiklander 
4382d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused,
4482d91db1SJens Wiklander 			      TEE_OperationMode mode __unused,
4582d91db1SJens Wiklander 			      const uint8_t *key1 __unused,
4682d91db1SJens Wiklander 			      size_t key1_len __unused,
4782d91db1SJens Wiklander 			      const uint8_t *key2 __unused,
4882d91db1SJens Wiklander 			      size_t key2_len __unused,
4982d91db1SJens Wiklander 			      const uint8_t *iv __unused,
5082d91db1SJens Wiklander 			      size_t iv_len __unused)
5182d91db1SJens Wiklander {
5282d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
5382d91db1SJens Wiklander }
5482d91db1SJens Wiklander 
5582d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused,
5682d91db1SJens Wiklander 				TEE_OperationMode mode __unused,
5782d91db1SJens Wiklander 				bool last_block __unused,
5882d91db1SJens Wiklander 				const uint8_t *data __unused,
5982d91db1SJens Wiklander 				size_t len __unused, uint8_t *dst __unused)
6082d91db1SJens Wiklander {
6182d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
6282d91db1SJens Wiklander }
6382d91db1SJens Wiklander 
6482d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused)
6582d91db1SJens Wiklander {
6682d91db1SJens Wiklander }
6782d91db1SJens Wiklander 
6882d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused,
6982d91db1SJens Wiklander 					size_t *size __unused)
7082d91db1SJens Wiklander {
7182d91db1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED
7282d91db1SJens Wiklander }
7382d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/
74e9eaba5cSJens Wiklander 
75e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC)
76e9eaba5cSJens Wiklander TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused,
77e9eaba5cSJens Wiklander 				   size_t *size __unused)
78e9eaba5cSJens Wiklander {
79e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
80e9eaba5cSJens Wiklander }
81e9eaba5cSJens Wiklander 
82e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused,
83e9eaba5cSJens Wiklander 			   const uint8_t *key __unused, size_t len __unused)
84e9eaba5cSJens Wiklander {
85e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
86e9eaba5cSJens Wiklander }
87e9eaba5cSJens Wiklander 
88e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused,
89e9eaba5cSJens Wiklander 			     const uint8_t *data __unused, size_t len __unused)
90e9eaba5cSJens Wiklander {
91e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
92e9eaba5cSJens Wiklander }
93e9eaba5cSJens Wiklander 
94e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused,
95e9eaba5cSJens Wiklander 			    uint8_t *digest __unused,
96e9eaba5cSJens Wiklander 			    size_t digest_len __unused)
97e9eaba5cSJens Wiklander {
98e9eaba5cSJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
99e9eaba5cSJens Wiklander }
100e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/
101e9eaba5cSJens Wiklander 
102*d0620b01SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __maybe_unused,
103*d0620b01SJens Wiklander 				       size_t *size __maybe_unused)
1048875ce46SJens Wiklander {
105*d0620b01SJens Wiklander 	switch (algo) {
106*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
107*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
108*d0620b01SJens Wiklander 		*size = crypto_aes_ccm_get_ctx_size();
109*d0620b01SJens Wiklander 		return TEE_SUCCESS;
110*d0620b01SJens Wiklander #endif
111*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
112*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
113*d0620b01SJens Wiklander 		*size = crypto_aes_gcm_get_ctx_size();
114*d0620b01SJens Wiklander 		return TEE_SUCCESS;
115*d0620b01SJens Wiklander #endif
116*d0620b01SJens Wiklander 	default:
1178875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
1188875ce46SJens Wiklander 	}
119*d0620b01SJens Wiklander }
1208875ce46SJens Wiklander 
121*d0620b01SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __maybe_unused,
122*d0620b01SJens Wiklander 			       uint32_t algo __maybe_unused,
123*d0620b01SJens Wiklander 			       TEE_OperationMode mode __maybe_unused,
124*d0620b01SJens Wiklander 			       const uint8_t *key __maybe_unused,
125*d0620b01SJens Wiklander 			       size_t key_len __maybe_unused,
126*d0620b01SJens Wiklander 			       const uint8_t *nonce __maybe_unused,
127*d0620b01SJens Wiklander 			       size_t nonce_len __maybe_unused,
128*d0620b01SJens Wiklander 			       size_t tag_len __maybe_unused,
129*d0620b01SJens Wiklander 			       size_t aad_len __maybe_unused,
130*d0620b01SJens Wiklander 			       size_t payload_len __maybe_unused)
131*d0620b01SJens Wiklander {
132*d0620b01SJens Wiklander 	switch (algo) {
133*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
134*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
135*d0620b01SJens Wiklander 		return crypto_aes_ccm_init(ctx, mode, key, key_len, nonce,
136*d0620b01SJens Wiklander 					   nonce_len, tag_len, aad_len,
137*d0620b01SJens Wiklander 					   payload_len);
138*d0620b01SJens Wiklander #endif
139*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
140*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
141*d0620b01SJens Wiklander 		return crypto_aes_gcm_init(ctx, mode, key, key_len, nonce,
142*d0620b01SJens Wiklander 					   nonce_len, tag_len);
143*d0620b01SJens Wiklander #endif
144*d0620b01SJens Wiklander 	default:
145*d0620b01SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
146*d0620b01SJens Wiklander 	}
147*d0620b01SJens Wiklander }
148*d0620b01SJens Wiklander 
149*d0620b01SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __maybe_unused,
150*d0620b01SJens Wiklander 				     uint32_t algo __maybe_unused,
1518875ce46SJens Wiklander 				     TEE_OperationMode mode __unused,
152*d0620b01SJens Wiklander 				     const uint8_t *data __maybe_unused,
153*d0620b01SJens Wiklander 				     size_t len __maybe_unused)
1548875ce46SJens Wiklander {
155*d0620b01SJens Wiklander 	switch (algo) {
156*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
157*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
158*d0620b01SJens Wiklander 		return crypto_aes_ccm_update_aad(ctx, data, len);
159*d0620b01SJens Wiklander #endif
160*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
161*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
162*d0620b01SJens Wiklander 		return crypto_aes_gcm_update_aad(ctx, data, len);
163*d0620b01SJens Wiklander #endif
164*d0620b01SJens Wiklander 	default:
1658875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
1668875ce46SJens Wiklander 	}
167*d0620b01SJens Wiklander }
1688875ce46SJens Wiklander 
169*d0620b01SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __maybe_unused,
170*d0620b01SJens Wiklander 					 uint32_t algo __maybe_unused,
171*d0620b01SJens Wiklander 					 TEE_OperationMode mode __maybe_unused,
172*d0620b01SJens Wiklander 					 const uint8_t *src_data __maybe_unused,
173*d0620b01SJens Wiklander 					 size_t src_len __maybe_unused,
174*d0620b01SJens Wiklander 					 uint8_t *dst_data __maybe_unused,
175*d0620b01SJens Wiklander 					 size_t *dst_len __maybe_unused)
1768875ce46SJens Wiklander {
177*d0620b01SJens Wiklander 	size_t dl = *dst_len;
178*d0620b01SJens Wiklander 
179*d0620b01SJens Wiklander 	*dst_len = src_len;
180*d0620b01SJens Wiklander 	if (dl < src_len)
181*d0620b01SJens Wiklander 		return TEE_ERROR_SHORT_BUFFER;
182*d0620b01SJens Wiklander 
183*d0620b01SJens Wiklander 	switch (algo) {
184*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
185*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
186*d0620b01SJens Wiklander 		return crypto_aes_ccm_update_payload(ctx, mode, src_data,
187*d0620b01SJens Wiklander 						     src_len, dst_data);
188*d0620b01SJens Wiklander #endif
189*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
190*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
191*d0620b01SJens Wiklander 		return crypto_aes_gcm_update_payload(ctx, mode, src_data,
192*d0620b01SJens Wiklander 						     src_len, dst_data);
193*d0620b01SJens Wiklander #endif
194*d0620b01SJens Wiklander 	default:
1958875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
1968875ce46SJens Wiklander 	}
197*d0620b01SJens Wiklander }
1988875ce46SJens Wiklander 
199*d0620b01SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __maybe_unused,
200*d0620b01SJens Wiklander 				    uint32_t algo __maybe_unused,
201*d0620b01SJens Wiklander 				    const uint8_t *src_data __maybe_unused,
202*d0620b01SJens Wiklander 				    size_t src_len __maybe_unused,
203*d0620b01SJens Wiklander 				    uint8_t *dst_data __maybe_unused,
204*d0620b01SJens Wiklander 				    size_t *dst_len __maybe_unused,
205*d0620b01SJens Wiklander 				    uint8_t *dst_tag __maybe_unused,
206*d0620b01SJens Wiklander 				    size_t *dst_tag_len __maybe_unused)
2078875ce46SJens Wiklander {
208*d0620b01SJens Wiklander 	size_t dl = *dst_len;
209*d0620b01SJens Wiklander 
210*d0620b01SJens Wiklander 	*dst_len = src_len;
211*d0620b01SJens Wiklander 	if (dl < src_len)
212*d0620b01SJens Wiklander 		return TEE_ERROR_SHORT_BUFFER;
213*d0620b01SJens Wiklander 
214*d0620b01SJens Wiklander 	switch (algo) {
215*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
216*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
217*d0620b01SJens Wiklander 		return crypto_aes_ccm_enc_final(ctx, src_data, src_len,
218*d0620b01SJens Wiklander 						dst_data, dst_tag, dst_tag_len);
219*d0620b01SJens Wiklander #endif
220*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
221*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
222*d0620b01SJens Wiklander 		return crypto_aes_gcm_enc_final(ctx, src_data, src_len,
223*d0620b01SJens Wiklander 						dst_data, dst_tag, dst_tag_len);
224*d0620b01SJens Wiklander #endif
225*d0620b01SJens Wiklander 	default:
2268875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
2278875ce46SJens Wiklander 	}
228*d0620b01SJens Wiklander }
2298875ce46SJens Wiklander 
230*d0620b01SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __maybe_unused,
231*d0620b01SJens Wiklander 				    uint32_t algo __maybe_unused,
232*d0620b01SJens Wiklander 				    const uint8_t *src_data __maybe_unused,
233*d0620b01SJens Wiklander 				    size_t src_len __maybe_unused,
234*d0620b01SJens Wiklander 				    uint8_t *dst_data __maybe_unused,
235*d0620b01SJens Wiklander 				    size_t *dst_len __maybe_unused,
236*d0620b01SJens Wiklander 				    const uint8_t *tag __maybe_unused,
237*d0620b01SJens Wiklander 				    size_t tag_len __maybe_unused)
2388875ce46SJens Wiklander {
239*d0620b01SJens Wiklander 	size_t dl = *dst_len;
240*d0620b01SJens Wiklander 
241*d0620b01SJens Wiklander 	*dst_len = src_len;
242*d0620b01SJens Wiklander 	if (dl < src_len)
243*d0620b01SJens Wiklander 		return TEE_ERROR_SHORT_BUFFER;
244*d0620b01SJens Wiklander 
245*d0620b01SJens Wiklander 	switch (algo) {
246*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
247*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
248*d0620b01SJens Wiklander 		return crypto_aes_ccm_dec_final(ctx, src_data, src_len,
249*d0620b01SJens Wiklander 						dst_data, tag, tag_len);
250*d0620b01SJens Wiklander #endif
251*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
252*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
253*d0620b01SJens Wiklander 		return crypto_aes_gcm_dec_final(ctx, src_data, src_len,
254*d0620b01SJens Wiklander 						dst_data, tag, tag_len);
255*d0620b01SJens Wiklander #endif
256*d0620b01SJens Wiklander 	default:
2578875ce46SJens Wiklander 		return TEE_ERROR_NOT_IMPLEMENTED;
2588875ce46SJens Wiklander 	}
2598875ce46SJens Wiklander }
2608875ce46SJens Wiklander 
261*d0620b01SJens Wiklander void crypto_authenc_final(void *ctx __maybe_unused,
262*d0620b01SJens Wiklander 			  uint32_t algo __maybe_unused)
2638875ce46SJens Wiklander {
264*d0620b01SJens Wiklander 	switch (algo) {
265*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM)
266*d0620b01SJens Wiklander 	case TEE_ALG_AES_CCM:
267*d0620b01SJens Wiklander 		crypto_aes_ccm_final(ctx);
268*d0620b01SJens Wiklander 		break;
269*d0620b01SJens Wiklander #endif
270*d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM)
271*d0620b01SJens Wiklander 	case TEE_ALG_AES_GCM:
272*d0620b01SJens Wiklander 		crypto_aes_gcm_final(ctx);
273*d0620b01SJens Wiklander 		break;
274*d0620b01SJens Wiklander #endif
275*d0620b01SJens Wiklander 	default:
276*d0620b01SJens Wiklander 		break;
2778875ce46SJens Wiklander 	}
278*d0620b01SJens Wiklander }
27933790cc1SJens Wiklander 
28033790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER)
28133790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused)
28233790cc1SJens Wiklander {
28333790cc1SJens Wiklander 	return NULL;
28433790cc1SJens Wiklander }
28533790cc1SJens Wiklander 
28633790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused,
28733790cc1SJens Wiklander 				size_t fromsize __unused,
28833790cc1SJens Wiklander 				struct bignum *to __unused)
28933790cc1SJens Wiklander {
29033790cc1SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
29133790cc1SJens Wiklander }
29233790cc1SJens Wiklander 
29333790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused)
29433790cc1SJens Wiklander {
29533790cc1SJens Wiklander 	return 0;
29633790cc1SJens Wiklander }
29733790cc1SJens Wiklander 
29833790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused)
29933790cc1SJens Wiklander {
30033790cc1SJens Wiklander 	return 0;
30133790cc1SJens Wiklander }
30233790cc1SJens Wiklander 
30333790cc1SJens Wiklander /*
30433790cc1SJens Wiklander  * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be
30533790cc1SJens Wiklander  * enough to guarantee that the functions calling this function aren't
30633790cc1SJens Wiklander  * called, but just in case add a panic() here to avoid unexpected
30733790cc1SJens Wiklander  * behavoir.
30833790cc1SJens Wiklander  */
30933790cc1SJens Wiklander static void bignum_cant_happen(void)
31033790cc1SJens Wiklander {
31133790cc1SJens Wiklander 	volatile bool b = true;
31233790cc1SJens Wiklander 
31333790cc1SJens Wiklander 	/* Avoid warning about function does not return */
31433790cc1SJens Wiklander 	if (b)
31533790cc1SJens Wiklander 		panic();
31633790cc1SJens Wiklander }
31733790cc1SJens Wiklander 
31833790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused,
31933790cc1SJens Wiklander 			  uint8_t *to __unused)
32033790cc1SJens Wiklander {
32133790cc1SJens Wiklander 	bignum_cant_happen();
32233790cc1SJens Wiklander }
32333790cc1SJens Wiklander 
32433790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused,
32533790cc1SJens Wiklander 			const struct bignum *from __unused)
32633790cc1SJens Wiklander {
32733790cc1SJens Wiklander 	bignum_cant_happen();
32833790cc1SJens Wiklander }
32933790cc1SJens Wiklander 
33033790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a)
33133790cc1SJens Wiklander {
33233790cc1SJens Wiklander 	if (a)
33333790cc1SJens Wiklander 		panic();
33433790cc1SJens Wiklander }
33533790cc1SJens Wiklander 
33633790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused)
33733790cc1SJens Wiklander {
33833790cc1SJens Wiklander 	bignum_cant_happen();
33933790cc1SJens Wiklander }
34033790cc1SJens Wiklander 
34133790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */
34233790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused,
34333790cc1SJens Wiklander 			      struct bignum *b __unused)
34433790cc1SJens Wiklander {
34533790cc1SJens Wiklander 	bignum_cant_happen();
34633790cc1SJens Wiklander 	return -1;
34733790cc1SJens Wiklander }
34833790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/
349291e5450SJens Wiklander 
350291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
351291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused,
352291e5450SJens Wiklander 					    size_t key_size_bits __unused)
353291e5450SJens Wiklander {
354291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
355291e5450SJens Wiklander }
356291e5450SJens Wiklander 
357291e5450SJens Wiklander TEE_Result
358291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused,
359291e5450SJens Wiklander 				    size_t key_size_bits __unused)
360291e5450SJens Wiklander {
361291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
362291e5450SJens Wiklander }
363291e5450SJens Wiklander 
364291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused)
365291e5450SJens Wiklander {
366291e5450SJens Wiklander }
367291e5450SJens Wiklander 
368291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused,
369291e5450SJens Wiklander 				      size_t key_size __unused)
370291e5450SJens Wiklander {
371291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
372291e5450SJens Wiklander }
373291e5450SJens Wiklander 
374291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused,
375291e5450SJens Wiklander 					   const uint8_t *src __unused,
376291e5450SJens Wiklander 					   size_t src_len __unused,
377291e5450SJens Wiklander 					   uint8_t *dst __unused,
378291e5450SJens Wiklander 					   size_t *dst_len __unused)
379291e5450SJens Wiklander {
380291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
381291e5450SJens Wiklander }
382291e5450SJens Wiklander 
383291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *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_rsaes_decrypt(uint32_t algo __unused,
393291e5450SJens Wiklander 					struct rsa_keypair *key __unused,
394291e5450SJens Wiklander 					const uint8_t *label __unused,
395291e5450SJens Wiklander 					size_t label_len __unused,
396291e5450SJens Wiklander 					const uint8_t *src __unused,
397291e5450SJens Wiklander 					size_t src_len __unused,
398291e5450SJens Wiklander 					uint8_t *dst __unused,
399291e5450SJens Wiklander 					size_t *dst_len __unused)
400291e5450SJens Wiklander {
401291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
402291e5450SJens Wiklander }
403291e5450SJens Wiklander 
404291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused,
405291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
406291e5450SJens Wiklander 					const uint8_t *label __unused,
407291e5450SJens Wiklander 					size_t label_len __unused,
408291e5450SJens Wiklander 					const uint8_t *src __unused,
409291e5450SJens Wiklander 					size_t src_len __unused,
410291e5450SJens Wiklander 					uint8_t *dst __unused,
411291e5450SJens Wiklander 					size_t *dst_len __unused)
412291e5450SJens Wiklander {
413291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
414291e5450SJens Wiklander }
415291e5450SJens Wiklander 
416291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused,
417291e5450SJens Wiklander 				      struct rsa_keypair *key __unused,
418291e5450SJens Wiklander 				      int salt_len __unused,
419291e5450SJens Wiklander 				      const uint8_t *msg __unused,
420291e5450SJens Wiklander 				      size_t msg_len __unused,
421291e5450SJens Wiklander 				      uint8_t *sig __unused,
422291e5450SJens Wiklander 				      size_t *sig_len __unused)
423291e5450SJens Wiklander {
424291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
425291e5450SJens Wiklander }
426291e5450SJens Wiklander 
427291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused,
428291e5450SJens Wiklander 					struct rsa_public_key *key __unused,
429291e5450SJens Wiklander 					int salt_len __unused,
430291e5450SJens Wiklander 					const uint8_t *msg __unused,
431291e5450SJens Wiklander 					size_t msg_len __unused,
432291e5450SJens Wiklander 					const uint8_t *sig __unused,
433291e5450SJens Wiklander 					size_t sig_len __unused)
434291e5450SJens Wiklander {
435291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
436291e5450SJens Wiklander }
437291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/
438291e5450SJens Wiklander 
439291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
440291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused,
441291e5450SJens Wiklander 					    size_t key_size_bits __unused)
442291e5450SJens Wiklander {
443291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
444291e5450SJens Wiklander }
445291e5450SJens Wiklander 
446291e5450SJens Wiklander TEE_Result
447291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused,
448291e5450SJens Wiklander 				    size_t key_size_bits __unused)
449291e5450SJens Wiklander {
450291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
451291e5450SJens Wiklander }
452291e5450SJens Wiklander 
453291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused,
454291e5450SJens Wiklander 				      size_t key_size __unused)
455291e5450SJens Wiklander {
456291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
457291e5450SJens Wiklander }
458291e5450SJens Wiklander 
459291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused,
460291e5450SJens Wiklander 				   struct dsa_keypair *key __unused,
461291e5450SJens Wiklander 				   const uint8_t *msg __unused,
462291e5450SJens Wiklander 				   size_t msg_len __unused,
463291e5450SJens Wiklander 				   uint8_t *sig __unused,
464291e5450SJens Wiklander 				   size_t *sig_len __unused)
465291e5450SJens Wiklander {
466291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
467291e5450SJens Wiklander }
468291e5450SJens Wiklander 
469291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused,
470291e5450SJens Wiklander 				     struct dsa_public_key *key __unused,
471291e5450SJens Wiklander 				     const uint8_t *msg __unused,
472291e5450SJens Wiklander 				     size_t msg_len __unused,
473291e5450SJens Wiklander 				     const uint8_t *sig __unused,
474291e5450SJens Wiklander 				     size_t sig_len __unused)
475291e5450SJens Wiklander {
476291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
477291e5450SJens Wiklander }
478291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/
479291e5450SJens Wiklander 
480291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
481291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused,
482291e5450SJens Wiklander 					   size_t key_size_bits __unused)
483291e5450SJens Wiklander {
484291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
485291e5450SJens Wiklander }
486291e5450SJens Wiklander 
487291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused,
488291e5450SJens Wiklander 				     struct bignum *q __unused,
489291e5450SJens Wiklander 				     size_t xbits __unused)
490291e5450SJens Wiklander {
491291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
492291e5450SJens Wiklander }
493291e5450SJens Wiklander 
494291e5450SJens Wiklander TEE_Result
495291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused,
496291e5450SJens Wiklander 				struct bignum *public_key __unused,
497291e5450SJens Wiklander 				struct bignum *secret __unused)
498291e5450SJens Wiklander {
499291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
500291e5450SJens Wiklander }
501291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/
502291e5450SJens Wiklander 
503291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER)
504291e5450SJens Wiklander TEE_Result
505291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused,
506291e5450SJens Wiklander 				    size_t key_size_bits __unused)
507291e5450SJens Wiklander {
508291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
509291e5450SJens Wiklander }
510291e5450SJens Wiklander 
511291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused,
512291e5450SJens Wiklander 					    size_t key_size_bits __unused)
513291e5450SJens Wiklander {
514291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
515291e5450SJens Wiklander }
516291e5450SJens Wiklander 
517291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused)
518291e5450SJens Wiklander {
519291e5450SJens Wiklander }
520291e5450SJens Wiklander 
521291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused)
522291e5450SJens Wiklander {
523291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
524291e5450SJens Wiklander }
525291e5450SJens Wiklander 
526291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused,
527291e5450SJens Wiklander 				   struct ecc_keypair *key __unused,
528291e5450SJens Wiklander 				   const uint8_t *msg __unused,
529291e5450SJens Wiklander 				   size_t msg_len __unused,
530291e5450SJens Wiklander 				   uint8_t *sig __unused,
531291e5450SJens Wiklander 				   size_t *sig_len __unused)
532291e5450SJens Wiklander {
533291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
534291e5450SJens Wiklander }
535291e5450SJens Wiklander 
536291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_verify(uint32_t algo __unused,
537291e5450SJens Wiklander 				     struct ecc_public_key *key __unused,
538291e5450SJens Wiklander 				     const uint8_t *msg __unused,
539291e5450SJens Wiklander 				     size_t msg_len __unused,
540291e5450SJens Wiklander 				     const uint8_t *sig __unused,
541291e5450SJens Wiklander 				     size_t sig_len __unused)
542291e5450SJens Wiklander {
543291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
544291e5450SJens Wiklander }
545291e5450SJens Wiklander 
546291e5450SJens Wiklander TEE_Result
547291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused,
548291e5450SJens Wiklander 				 struct ecc_public_key *public_key __unused,
549291e5450SJens Wiklander 				 void *secret __unused,
550291e5450SJens Wiklander 				 unsigned long *secret_len __unused)
551291e5450SJens Wiklander {
552291e5450SJens Wiklander 	return TEE_ERROR_NOT_IMPLEMENTED;
553291e5450SJens Wiklander }
554291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/
555