xref: /linux/include/crypto/sm4.h (revision ca64d84e93762f4e587e040a44ad9f6089afc777)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 
3 /*
4  * Common values for the SM4 algorithm
5  * Copyright (C) 2018 ARM Limited or its affiliates.
6  */
7 
8 #ifndef _CRYPTO_SM4_H
9 #define _CRYPTO_SM4_H
10 
11 #include <linux/types.h>
12 #include <linux/crypto.h>
13 
14 #define SM4_KEY_SIZE	16
15 #define SM4_BLOCK_SIZE	16
16 #define SM4_RKEY_WORDS	32
17 
18 struct crypto_sm4_ctx {
19 	u32 rkey_enc[SM4_RKEY_WORDS];
20 	u32 rkey_dec[SM4_RKEY_WORDS];
21 };
22 
23 int crypto_sm4_set_key(struct crypto_tfm *tfm, const u8 *in_key,
24 		       unsigned int key_len);
25 int crypto_sm4_expand_key(struct crypto_sm4_ctx *ctx, const u8 *in_key,
26 			  unsigned int key_len);
27 
28 void crypto_sm4_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in);
29 void crypto_sm4_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in);
30 
31 #endif
32