• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Technologies Co., Ltd.
3  * Licensed under the Mulan PSL v2.
4  * You can use this software according to the terms and conditions of the Mulan PSL v2.
5  * You may obtain a copy of Mulan PSL v2 at:
6  *     http://license.coscl.org.cn/MulanPSL2
7  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8  * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9  * PURPOSE.
10  * See the Mulan PSL v2 for more details.
11  */
12 #ifndef _AE_COMMON_H
13 #define _AE_COMMON_H
14 
15 #include <openssl/evp.h>
16 #include <crypto_driver_adaptor.h>
17 
18 typedef const EVP_CIPHER *(*evp_cipher_func)(void);
19 struct aes_init_oper {
20     uint32_t algorithm;
21     uint32_t key_size;
22     evp_cipher_func aes_cipher;
23 };
24 
25 static struct aes_init_oper g_aes_des_init_oeration[] = {
26     { CRYPTO_TYPE_AES_ECB_NOPAD, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_ecb },
27     { CRYPTO_TYPE_AES_ECB_NOPAD, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_ecb },
28     { CRYPTO_TYPE_AES_ECB_NOPAD, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_ecb },
29     { CRYPTO_TYPE_AES_CBC_NOPAD, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_cbc },
30     { CRYPTO_TYPE_AES_CBC_NOPAD, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_cbc },
31     { CRYPTO_TYPE_AES_CBC_NOPAD, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_cbc },
32     { CRYPTO_TYPE_AES_CTR, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_ctr },
33     { CRYPTO_TYPE_AES_CTR, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_ctr },
34     { CRYPTO_TYPE_AES_CTR, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_ctr },
35     { CRYPTO_TYPE_AES_CBC_MAC_NOPAD, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_cbc },
36     { CRYPTO_TYPE_AES_CBC_MAC_NOPAD, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_cbc },
37     { CRYPTO_TYPE_AES_CBC_MAC_NOPAD, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_cbc },
38     { CRYPTO_TYPE_AES_CCM, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_ccm },
39     { CRYPTO_TYPE_AES_CCM, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_ccm },
40     { CRYPTO_TYPE_AES_CCM, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_ccm },
41     { CRYPTO_TYPE_AES_GCM, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_gcm },
42     { CRYPTO_TYPE_AES_GCM, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_gcm },
43     { CRYPTO_TYPE_AES_GCM, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_gcm },
44     { CRYPTO_TYPE_AES_XTS, AES_MAX_KEY_SIZE, EVP_aes_256_xts },
45     { CRYPTO_TYPE_AES_ECB_PKCS5, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_ecb },
46     { CRYPTO_TYPE_AES_ECB_PKCS5, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_ecb },
47     { CRYPTO_TYPE_AES_ECB_PKCS5, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_ecb },
48     { CRYPTO_TYPE_AES_CBC_PKCS5, AES_TEN_ROUNDS_KEY_SIZE, EVP_aes_128_cbc },
49     { CRYPTO_TYPE_AES_CBC_PKCS5, AES_TWELVE_ROUNDS_KEY_SIZE, EVP_aes_192_cbc },
50     { CRYPTO_TYPE_AES_CBC_PKCS5, AES_FOURTEEN_ROUNDS_KEY_SIZE, EVP_aes_256_cbc },
51 };
52 #endif
53