crypto: rockchip: v2: modify the algos supported by each platform

1. add sha224/sha384 support.
2. XTS mode was removed due to panic on some platforms(RV1126 kernel 4.19).

Signed-off-by: Lin Jinhan <troy.lin@rock-chips.com>
Change-Id: I339cb21c6abefa684f9d36e8faaa04d6ab43d3b1
This commit is contained in:
Lin Jinhan
2022-02-24 10:53:47 +08:00
parent 1ffb2a2a6b
commit 004c428031
5 changed files with 39 additions and 10 deletions

View File

@@ -658,6 +658,7 @@ config CRYPTO_DEV_ROCKCHIP
select CRYPTO_SM3
select CRYPTO_SM4
select CRYPTO_SHA256
select CRTPTO_SHA512
select CRYPTO_HASH
select CRYPTO_SKCIPHER
select CRYPTO_RSA

View File

@@ -569,7 +569,9 @@ static struct rk_crypto_algt *crypto_v2_algs[] = {
&rk_v2_ofb_des3_ede_alg, /* ofb(des3_ede) */
&rk_v2_ahash_sha1, /* sha1 */
&rk_v2_ahash_sha224, /* sha224 */
&rk_v2_ahash_sha256, /* sha256 */
&rk_v2_ahash_sha384, /* sha384 */
&rk_v2_ahash_sha512, /* sha512 */
&rk_v2_ahash_md5, /* md5 */
&rk_v2_ahash_sm3, /* sm3 */
@@ -583,16 +585,18 @@ static struct rk_crypto_algt *crypto_v2_algs[] = {
&rk_v2_asym_rsa, /* rsa */
};
static char *px30_algs_name[] = {
"ecb(aes)", "cbc(aes)", "xts(aes)",
"ecb(des)", "cbc(des)",
"ecb(des3_ede)", "cbc(des3_ede)",
"sha1", "sha256", "sha512", "md5",
static char *crypto_no_sm_algs_name[] = {
"ecb(aes)", "cbc(aes)", "cfb(aes)", "ofb(aes)", "ctr(aes)",
"ecb(des)", "cbc(des)", "cfb(des)", "ofb(des)",
"ecb(des3_ede)", "cbc(des3_ede)", "cfb(des3_ede)", "ofb(des3_ede)",
"sha1", "sha224", "sha256", "sha384", "sha512", "md5",
"hmac(sha1)", "hmac(sha256)", "hmac(sha512)", "hmac(md5)",
"rsa"
};
static char *crypto_full_algs_name[] = {
"ecb(sm4)", "cbc(sm4)", "cfb(sm4)", "ofb(sm4)", "ctr(sm4)", "xts(sm4)",
"ecb(aes)", "cbc(aes)", "cfb(aes)", "ofb(aes)", "ctr(aes)", "xts(aes)",
static char *crypto_rv1126_algs_name[] = {
"ecb(sm4)", "cbc(sm4)", "cfb(sm4)", "ofb(sm4)", "ctr(sm4)",
"ecb(aes)", "cbc(aes)", "cfb(aes)", "ofb(aes)", "ctr(aes)",
"ecb(des)", "cbc(des)", "cfb(des)", "ofb(des)",
"ecb(des3_ede)", "cbc(des3_ede)", "cfb(des3_ede)", "ofb(des3_ede)",
"sha1", "sha256", "sha512", "md5", "sm3",
@@ -600,11 +604,21 @@ static char *crypto_full_algs_name[] = {
"rsa"
};
static char *crypto_full_algs_name[] = {
"ecb(sm4)", "cbc(sm4)", "cfb(sm4)", "ofb(sm4)", "ctr(sm4)",
"ecb(aes)", "cbc(aes)", "cfb(aes)", "ofb(aes)", "ctr(aes)",
"ecb(des)", "cbc(des)", "cfb(des)", "ofb(des)",
"ecb(des3_ede)", "cbc(des3_ede)", "cfb(des3_ede)", "ofb(des3_ede)",
"sha1", "sha224", "sha256", "sha384", "sha512", "md5", "sm3",
"hmac(sha1)", "hmac(sha256)", "hmac(sha512)", "hmac(md5)", "hmac(sm3)",
"rsa"
};
static const struct rk_crypto_soc_data px30_soc_data =
RK_CRYPTO_V2_SOC_DATA_INIT(px30_algs_name, false);
RK_CRYPTO_V2_SOC_DATA_INIT(crypto_no_sm_algs_name, false);
static const struct rk_crypto_soc_data rv1126_soc_data =
RK_CRYPTO_V2_SOC_DATA_INIT(crypto_full_algs_name, true);
RK_CRYPTO_V2_SOC_DATA_INIT(crypto_rv1126_algs_name, true);
static const struct rk_crypto_soc_data full_soc_data =
RK_CRYPTO_V2_SOC_DATA_INIT(crypto_full_algs_name, false);

View File

@@ -44,6 +44,10 @@
#define RK_BUFFER_ORDER 3
#define RK_BUFFER_SIZE (PAGE_SIZE << RK_BUFFER_ORDER)
#define RK_DMA_ALIGNMENT 64
#define sha384_state sha512_state
#define sha224_state sha256_state
struct rk_crypto_soc_data {
char **valid_algs_name;
int valid_algs_num;
@@ -189,7 +193,9 @@ struct rk_crypto_algt {
enum rk_hash_algo {
HASH_ALGO_MD5,
HASH_ALGO_SHA1,
HASH_ALGO_SHA224,
HASH_ALGO_SHA256,
HASH_ALGO_SHA384,
HASH_ALGO_SHA512,
HASH_ALGO_SM3,
};

View File

@@ -48,7 +48,9 @@ extern struct rk_crypto_algt rk_v2_cfb_des3_ede_alg;
extern struct rk_crypto_algt rk_v2_ofb_des3_ede_alg;
extern struct rk_crypto_algt rk_v2_ahash_sha1;
extern struct rk_crypto_algt rk_v2_ahash_sha224;
extern struct rk_crypto_algt rk_v2_ahash_sha256;
extern struct rk_crypto_algt rk_v2_ahash_sha384;
extern struct rk_crypto_algt rk_v2_ahash_sha512;
extern struct rk_crypto_algt rk_v2_ahash_md5;
extern struct rk_crypto_algt rk_v2_ahash_sm3;

View File

@@ -23,7 +23,9 @@
static const u32 hash_algo2bc[] = {
[HASH_ALGO_MD5] = CRYPTO_MD5,
[HASH_ALGO_SHA1] = CRYPTO_SHA1,
[HASH_ALGO_SHA224] = CRYPTO_SHA224,
[HASH_ALGO_SHA256] = CRYPTO_SHA256,
[HASH_ALGO_SHA384] = CRYPTO_SHA384,
[HASH_ALGO_SHA512] = CRYPTO_SHA512,
[HASH_ALGO_SM3] = CRYPTO_SM3,
};
@@ -31,7 +33,9 @@ static const u32 hash_algo2bc[] = {
const char *hash_algo2name[] = {
[HASH_ALGO_MD5] = "md5",
[HASH_ALGO_SHA1] = "sha1",
[HASH_ALGO_SHA224] = "sha224",
[HASH_ALGO_SHA256] = "sha256",
[HASH_ALGO_SHA384] = "sha384",
[HASH_ALGO_SHA512] = "sha512",
[HASH_ALGO_SM3] = "sm3",
};
@@ -563,7 +567,9 @@ static void rk_cra_hash_exit(struct crypto_tfm *tfm)
struct rk_crypto_algt rk_v2_ahash_md5 = RK_HASH_ALGO_INIT(MD5, md5);
struct rk_crypto_algt rk_v2_ahash_sha1 = RK_HASH_ALGO_INIT(SHA1, sha1);
struct rk_crypto_algt rk_v2_ahash_sha224 = RK_HASH_ALGO_INIT(SHA224, sha224);
struct rk_crypto_algt rk_v2_ahash_sha256 = RK_HASH_ALGO_INIT(SHA256, sha256);
struct rk_crypto_algt rk_v2_ahash_sha384 = RK_HASH_ALGO_INIT(SHA384, sha384);
struct rk_crypto_algt rk_v2_ahash_sha512 = RK_HASH_ALGO_INIT(SHA512, sha512);
struct rk_crypto_algt rk_v2_ahash_sm3 = RK_HASH_ALGO_INIT(SM3, sm3);