diff options
author | Gilad Ben-Yossef <gilad@benyossef.com> | 2018-03-06 09:44:42 +0000 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-03-16 23:35:48 +0800 |
commit | 747c8ce4e710cf2d72d115f84b2d0d6f4aa504b4 (patch) | |
tree | 5982ec8882440954bdbe3a602ef967c1291d5581 /include/crypto/sm4.h | |
parent | 5110e65536f35e854f5d520b913505dbdbe22787 (diff) | |
download | linux-stable-747c8ce4e710cf2d72d115f84b2d0d6f4aa504b4.tar.gz linux-stable-747c8ce4e710cf2d72d115f84b2d0d6f4aa504b4.tar.bz2 linux-stable-747c8ce4e710cf2d72d115f84b2d0d6f4aa504b4.zip |
crypto: sm4 - introduce SM4 symmetric cipher algorithm
Introduce the SM4 cipher algorithms (OSCCA GB/T 32907-2016).
SM4 (GBT.32907-2016) is a cryptographic standard issued by the
Organization of State Commercial Administration of China (OSCCA)
as an authorized cryptographic algorithms for the use within China.
SMS4 was originally created for use in protecting wireless
networks, and is mandated in the Chinese National Standard for
Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
(GB.15629.11-2003).
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'include/crypto/sm4.h')
-rw-r--r-- | include/crypto/sm4.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/crypto/sm4.h b/include/crypto/sm4.h new file mode 100644 index 000000000000..b64e64d20b28 --- /dev/null +++ b/include/crypto/sm4.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Common values for the SM4 algorithm + * Copyright (C) 2018 ARM Limited or its affiliates. + */ + +#ifndef _CRYPTO_SM4_H +#define _CRYPTO_SM4_H + +#include <linux/types.h> +#include <linux/crypto.h> + +#define SM4_KEY_SIZE 16 +#define SM4_BLOCK_SIZE 16 +#define SM4_RKEY_WORDS 32 + +struct crypto_sm4_ctx { + u32 rkey_enc[SM4_RKEY_WORDS]; + u32 rkey_dec[SM4_RKEY_WORDS]; +}; + +int crypto_sm4_set_key(struct crypto_tfm *tfm, const u8 *in_key, + unsigned int key_len); +int crypto_sm4_expand_key(struct crypto_sm4_ctx *ctx, const u8 *in_key, + unsigned int key_len); + +#endif |