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