hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// SPDX-License-Identifier: GPL-2.0
/*
 * Crypto acceleration support for Rockchip Crypto V2
 *
 * Copyright (c) 2022, Rockchip Electronics Co., Ltd
 *
 * Author: Lin Jinhan <troy.lin@rock-chips.com>
 *
 */
 
#include "rk_crypto_core.h"
#include "rk_crypto_v2.h"
 
static const char * const crypto_v2_rsts[] = {
   "crypto-rst",
};
 
static struct rk_crypto_algt *crypto_v2_algs[] = {
   &rk_v2_ecb_sm4_alg,        /* ecb(sm4) */
   &rk_v2_cbc_sm4_alg,        /* cbc(sm4) */
   &rk_v2_xts_sm4_alg,        /* xts(sm4) */
   &rk_v2_cfb_sm4_alg,        /* cfb(sm4) */
   &rk_v2_ofb_sm4_alg,        /* ofb(sm4) */
   &rk_v2_ctr_sm4_alg,        /* ctr(sm4) */
   &rk_v2_gcm_sm4_alg,        /* gcm(sm4) */
 
   &rk_v2_ecb_aes_alg,        /* ecb(aes) */
   &rk_v2_cbc_aes_alg,        /* cbc(aes) */
   &rk_v2_xts_aes_alg,        /* xts(aes) */
   &rk_v2_cfb_aes_alg,        /* cfb(aes) */
   &rk_v2_ofb_aes_alg,        /* ofb(aes) */
   &rk_v2_ctr_aes_alg,        /* ctr(aes) */
   &rk_v2_gcm_aes_alg,        /* gcm(aes) */
 
   &rk_v2_ecb_des_alg,        /* ecb(des) */
   &rk_v2_cbc_des_alg,        /* cbc(des) */
   &rk_v2_cfb_des_alg,        /* cfb(des) */
   &rk_v2_ofb_des_alg,        /* ofb(des) */
 
   &rk_v2_ecb_des3_ede_alg,    /* ecb(des3_ede) */
   &rk_v2_cbc_des3_ede_alg,    /* cbc(des3_ede) */
   &rk_v2_cfb_des3_ede_alg,    /* cfb(des3_ede) */
   &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 */
 
   &rk_v2_hmac_sha1,        /* hmac(sha1) */
   &rk_v2_hmac_sha256,        /* hmac(sha256) */
   &rk_v2_hmac_sha512,        /* hmac(sha512) */
   &rk_v2_hmac_md5,        /* hmac(md5) */
   &rk_v2_hmac_sm3,        /* hmac(sm3) */
 
   &rk_v2_asym_rsa,        /* rsa */
};
 
int rk_hw_crypto_v2_init(struct device *dev, void *hw_info)
{
   struct rk_hw_crypto_v2_info *info =
       (struct rk_hw_crypto_v2_info *)hw_info;
 
   if (!dev || !hw_info)
       return -EINVAL;
 
   memset(info, 0x00, sizeof(*info));
 
   return rk_crypto_hw_desc_alloc(dev, &info->hw_desc);
}
 
void rk_hw_crypto_v2_deinit(struct device *dev, void *hw_info)
{
   struct rk_hw_crypto_v2_info *info =
       (struct rk_hw_crypto_v2_info *)hw_info;
 
   if (!dev || !hw_info)
       return;
 
   rk_crypto_hw_desc_free(&info->hw_desc);
}
 
const char * const *rk_hw_crypto_v2_get_rsts(uint32_t *num)
{
   *num = ARRAY_SIZE(crypto_v2_rsts);
 
   return crypto_v2_rsts;
}
 
struct rk_crypto_algt **rk_hw_crypto_v2_get_algts(uint32_t *num)
{
   *num = ARRAY_SIZE(crypto_v2_algs);
 
   return crypto_v2_algs;
}
 
bool rk_hw_crypto_v2_algo_valid(struct rk_crypto_dev *rk_dev, struct rk_crypto_algt *aglt)
{
   return true;
}