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_NEON_H
7 #define __SM4_ARMV8_NEON_H
8 
9 #include <types_ext.h>
10 
11 /* Prototypes for assembly functions */
12 void neon_sm4_setkey_enc(uint32_t sk[32], uint8_t const key[16]);
13 void neon_sm4_setkey_dec(uint32_t sk[32], uint8_t const key[16]);
14 void neon_sm4_ecb_encrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
15 			  size_t len);
16 void neon_sm4_cbc_encrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
17 			  size_t len, uint8_t iv[]);
18 void neon_sm4_cbc_decrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
19 			  size_t len, uint8_t iv[]);
20 void neon_sm4_ctr_encrypt(uint8_t out[], uint8_t const in[], uint8_t const rk[],
21 			  size_t len, uint8_t iv[]);
22 void neon_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 neon_sm4_xts_decrypt(uint8_t out[], uint8_t const in[],
26 			  uint8_t const rk1[], uint8_t const rk2[], size_t len,
27 			  uint8_t iv[]);
28 
29 #endif /*__SM4_ARMV8_NEON_H*/
30