xref: /optee_os/core/include/crypto/crypto_accel.h (revision bfedef0ce2d8851799a8b4075cf6a344ac159d27)
106d2e416SJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
206d2e416SJens Wiklander /*
3*bfedef0cSJens Wiklander  * Copyright (c) 2020-2023, Linaro Limited
406d2e416SJens Wiklander  */
506d2e416SJens Wiklander 
606d2e416SJens Wiklander #ifndef __CRYPTO_CRYPTO_ACCEL_H
706d2e416SJens Wiklander #define __CRYPTO_CRYPTO_ACCEL_H
806d2e416SJens Wiklander 
906d2e416SJens Wiklander #include <tee_api_types.h>
1006d2e416SJens Wiklander 
1106d2e416SJens Wiklander TEE_Result crypto_accel_aes_expand_keys(const void *key, size_t key_len,
1206d2e416SJens Wiklander 					void *enc_key, void *dec_key,
1306d2e416SJens Wiklander 					size_t expanded_key_len,
1406d2e416SJens Wiklander 					unsigned int *round_count);
1506d2e416SJens Wiklander 
1606d2e416SJens Wiklander void crypto_accel_aes_ecb_enc(void *out, const void *in, const void *key,
1706d2e416SJens Wiklander 			      unsigned int round_count,
1806d2e416SJens Wiklander 			      unsigned int block_count);
1906d2e416SJens Wiklander void crypto_accel_aes_ecb_dec(void *out, const void *in, const void *key,
2006d2e416SJens Wiklander 			      unsigned int round_count,
2106d2e416SJens Wiklander 			      unsigned int block_count);
2206d2e416SJens Wiklander 
2306d2e416SJens Wiklander void crypto_accel_aes_cbc_enc(void *out, const void *in, const void *key,
2406d2e416SJens Wiklander 			      unsigned int round_count,
2506d2e416SJens Wiklander 			      unsigned int block_count, void *iv);
2606d2e416SJens Wiklander void crypto_accel_aes_cbc_dec(void *out, const void *in, const void *key,
2706d2e416SJens Wiklander 			      unsigned int round_count,
2806d2e416SJens Wiklander 			      unsigned int block_count, void *iv);
2906d2e416SJens Wiklander 
3006d2e416SJens Wiklander void crypto_accel_aes_ctr_be_enc(void *out, const void *in, const void *key,
3106d2e416SJens Wiklander 				 unsigned int round_count,
3206d2e416SJens Wiklander 				 unsigned int block_count, void *iv);
3306d2e416SJens Wiklander 
3406d2e416SJens Wiklander void crypto_accel_aes_xts_enc(void *out, const void *in, const void *key1,
3506d2e416SJens Wiklander 			      unsigned int round_count,
3606d2e416SJens Wiklander 			      unsigned int block_count, const void *key2,
3706d2e416SJens Wiklander 			      void *tweak);
3806d2e416SJens Wiklander void crypto_accel_aes_xts_dec(void *out, const void *in, const void *key1,
3906d2e416SJens Wiklander 			      unsigned int round_count,
4006d2e416SJens Wiklander 			      unsigned int block_count, const void *key2,
4106d2e416SJens Wiklander 			      void *tweak);
4206d2e416SJens Wiklander 
43858d5279SJens Wiklander void crypto_accel_sha1_compress(uint32_t state[5], const void *src,
44858d5279SJens Wiklander 				unsigned int block_count);
4575fea8a9SJens Wiklander void crypto_accel_sha256_compress(uint32_t state[8], const void *src,
4675fea8a9SJens Wiklander 				  unsigned int block_count);
477d81121eSJens Wiklander void crypto_accel_sha512_compress(uint64_t state[8], const void *src,
487d81121eSJens Wiklander 				  unsigned int block_count);
49*bfedef0cSJens Wiklander void crypto_accel_sha3_compress(uint64_t state[25], const void *src,
50*bfedef0cSJens Wiklander 				unsigned int block_count,
51*bfedef0cSJens Wiklander 				unsigned int digest_size);
5299264db3SJens Wiklander void crypto_accel_sm3_compress(uint32_t state[8], const void *src,
5399264db3SJens Wiklander 			       unsigned int block_count);
548b5fb12eSXu Yizhou 
558b5fb12eSXu Yizhou void crypto_accel_sm4_setkey_enc(uint32_t sk[32], const uint8_t key[16]);
568b5fb12eSXu Yizhou void crypto_accel_sm4_setkey_dec(uint32_t sk[32], const uint8_t key[16]);
578b5fb12eSXu Yizhou void crypto_accel_sm4_ecb_enc(void *out, const void *in, const void *key,
588b5fb12eSXu Yizhou 			      unsigned int len);
598b5fb12eSXu Yizhou void crypto_accel_sm4_cbc_enc(void *out, const void *in, const void *key,
608b5fb12eSXu Yizhou 			      unsigned int len, void *iv);
618b5fb12eSXu Yizhou void crypto_accel_sm4_cbc_dec(void *out, const void *in, const void *key,
628b5fb12eSXu Yizhou 			      unsigned int len, void *iv);
638b5fb12eSXu Yizhou void crypto_accel_sm4_ctr_enc(void *out, const void *in, const void *key,
648b5fb12eSXu Yizhou 			      unsigned int len, void *iv);
658b5fb12eSXu Yizhou void crypto_accel_sm4_xts_enc(void *out, const void *in, const void *key1,
668b5fb12eSXu Yizhou 			      const void *key2, unsigned int len, void *iv);
678b5fb12eSXu Yizhou void crypto_accel_sm4_xts_dec(void *out, const void *in, const void *key1,
688b5fb12eSXu Yizhou 			      const void *key2, unsigned int len, void *iv);
698b5fb12eSXu Yizhou 
7006d2e416SJens Wiklander #endif /*__CRYPTO_CRYPTO_ACCEL_H*/
71