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