xref: /optee_os/core/arch/arm/crypto/sm4_armv8a_ce.h (revision 2be3770e85826ae69748fc3e68920d7293a98c5d)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) Hisilicon Technologies Co., Ltd. 2023. All rights reserved.
4  */
5 
6 #ifndef __SM4_ARMV8_CE_H
7 #define __SM4_ARMV8_CE_H
8 
9 #include <types_ext.h>
10 
11 /* Prototypes for assembly functions */
12 void ce_sm4_setkey_enc(uint32_t sk[32], uint8_t const key[16]);
13 void ce_sm4_setkey_dec(uint32_t sk[32], uint8_t const key[16]);
14 void ce_sm4_ecb_encrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
15 			size_t len);
16 void ce_sm4_cbc_encrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
17 			size_t len, uint8_t iv[]);
18 void ce_sm4_cbc_decrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
19 			size_t len, uint8_t iv[]);
20 void ce_sm4_ctr_encrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
21 			size_t len, uint8_t iv[]);
22 void ce_sm4_xts_encrypt(uint8_t out[], uint8_t const in[],
23 			uint8_t const rk1[], uint8_t const rk2[], size_t len,
24 			uint8_t iv[]);
25 void ce_sm4_xts_decrypt(uint8_t out[], uint8_t const in[], uint8_t const rk1[],
26 			uint8_t const rk2[], size_t len, uint8_t iv[]);
27 
28 #endif /*__SM4_ARMV8_CE_H*/
29