summaryrefslogtreecommitdiffstats
path: root/arch/x86/crypto/sm4-avx.h
diff options
context:
space:
mode:
authorTianjia Zhang <tianjia.zhang@linux.alibaba.com>2021-08-18 11:31:16 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2021-08-27 16:30:18 +0800
commitde79d9aae493a29d02926f396a4fd1a1309436fc (patch)
treea1fcb1cc56b05f9009af85bab50babb859ef0834 /arch/x86/crypto/sm4-avx.h
parentff1469a21df5a2e981dd2f78e96e412fecb3ba59 (diff)
downloadlinux-stable-de79d9aae493a29d02926f396a4fd1a1309436fc.tar.gz
linux-stable-de79d9aae493a29d02926f396a4fd1a1309436fc.tar.bz2
linux-stable-de79d9aae493a29d02926f396a4fd1a1309436fc.zip
crypto: x86/sm4 - export reusable AESNI/AVX functions
Export the reusable functions in the SM4 AESNI/AVX implementation, mainly public functions, which are used to develop the SM4 AESNI/AVX2 implementation, and eliminate unnecessary duplication of code. At the same time, in order to make the public function universal, minor fixes was added. Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'arch/x86/crypto/sm4-avx.h')
-rw-r--r--arch/x86/crypto/sm4-avx.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/x86/crypto/sm4-avx.h b/arch/x86/crypto/sm4-avx.h
new file mode 100644
index 000000000000..1bceab7516aa
--- /dev/null
+++ b/arch/x86/crypto/sm4-avx.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#ifndef ASM_X86_SM4_AVX_H
+#define ASM_X86_SM4_AVX_H
+
+#include <linux/types.h>
+#include <crypto/sm4.h>
+
+typedef void (*sm4_crypt_func)(const u32 *rk, u8 *dst, const u8 *src, u8 *iv);
+
+int sm4_avx_ecb_encrypt(struct skcipher_request *req);
+int sm4_avx_ecb_decrypt(struct skcipher_request *req);
+
+int sm4_cbc_encrypt(struct skcipher_request *req);
+int sm4_avx_cbc_decrypt(struct skcipher_request *req,
+ unsigned int bsize, sm4_crypt_func func);
+
+int sm4_cfb_encrypt(struct skcipher_request *req);
+int sm4_avx_cfb_decrypt(struct skcipher_request *req,
+ unsigned int bsize, sm4_crypt_func func);
+
+int sm4_avx_ctr_crypt(struct skcipher_request *req,
+ unsigned int bsize, sm4_crypt_func func);
+
+#endif