1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef HKS_CONFIG_H 17 #define HKS_CONFIG_H 18 19 #define HKS_SUPPORT_POSIX 20 21 #define HKS_SUPPORT_THREAD 22 23 #define HKS_LOG_ENGINE_LOG_CORE 24 #define HKS_ENABLE_LOG_PUBLIC 25 26 #define HKS_SUPPORT_API_ATTEST_KEY 27 28 #define HKS_SUPPORT_ACCESS_TOKEN 29 30 /* AES */ 31 #define HKS_SUPPORT_AES_C 32 #define HKS_SUPPORT_AES_GENERATE_KEY 33 #define HKS_SUPPORT_AES_CBC_NOPADDING 34 #define HKS_SUPPORT_AES_CBC_PKCS7 35 #define HKS_SUPPORT_AES_GCM 36 #define HKS_SUPPORT_AES_CTR_NOPADDING 37 #define HKS_SUPPORT_AES_ECB_NOPADDING 38 #define HKS_SUPPORT_AES_ECB_PKCS7PADDING 39 40 /* BN */ 41 #define HKS_SUPPORT_BN_C 42 43 /* ECC */ 44 #define HKS_SUPPORT_ECC_C 45 #define HKS_SUPPORT_ECC_GENERATE_KEY 46 #define HKS_SUPPORT_ECC_GET_PUBLIC_KEY 47 48 #define HKS_SUPPORT_ECDH_C 49 #define HKS_SUPPORT_ECDH_AGREE_KEY 50 51 #define HKS_SUPPORT_ECDSA_C 52 #define HKS_SUPPORT_ECDSA_SIGN_VERIFY 53 54 /* ED25519 */ 55 #define HKS_SUPPORT_ED25519_C 56 #define HKS_SUPPORT_ED25519_GENERATE_KEY 57 #define HKS_SUPPORT_ED25519_SIGN_VERIFY 58 #define HKS_SUPPORT_ED2519_GET_PUBLIC_KEY 59 60 /* HASH */ 61 #define HKS_SUPPORT_HASH_C 62 #define HKS_SUPPORT_HASH_SHA1 63 #define HKS_SUPPORT_HASH_SHA224 64 #define HKS_SUPPORT_HASH_SHA256 65 #define HKS_SUPPORT_HASH_SHA384 66 #define HKS_SUPPORT_HASH_SHA512 67 #define HKS_SUPPORT_HASH_MD5 68 69 /* HMAC */ 70 #define HKS_SUPPORT_HMAC_C 71 #define HKS_SUPPORT_HMAC_GENERATE_KEY 72 #define HKS_SUPPORT_HMAC_SHA1 73 #define HKS_SUPPORT_HMAC_SHA224 74 #define HKS_SUPPORT_HMAC_SHA256 75 #define HKS_SUPPORT_HMAC_SHA384 76 #define HKS_SUPPORT_HMAC_SHA512 77 78 /* KDF */ 79 #define HKS_SUPPORT_KDF_C 80 #define HKS_SUPPORT_KDF_PBKDF2 81 #define HKS_SUPPORT_KDF_HKDF 82 83 /* RSA */ 84 #define HKS_SUPPORT_RSA_C 85 #define HKS_SUPPORT_RSA_GENERATE_KEY 86 #define HKS_SUPPORT_RSA_CRYPT 87 #define HKS_SUPPORT_RSA_SIGN_VERIFY 88 #define HKS_SUPPORT_RSA_GET_PUBLIC_KEY 89 #define HKS_SUPPORT_RSA_ECB_NOPADDING 90 #define HKS_SUPPORT_RSA_ECB_PKCS1PADDING 91 #define HKS_SUPPORT_RSA_ECB_OAEPPADDING_SHA1MGF1 92 #define HKS_SUPPORT_RSA_ECB_OAEPPADDING_SHA224MGF1 93 #define HKS_SUPPORT_RSA_ECB_OAEPPADDING_SHA256MGF1 94 #define HKS_SUPPORT_RSA_ECB_OAEPPADDING_SHA384MGF1 95 #define HKS_SUPPORT_RSA_ECB_OAEPPADDING_SHA512MGF1 96 #define HKS_SUPPORT_RSA_ECB_OEAPPADDING 97 #define HKS_SUPPORT_RSA_PSS 98 99 /* DH */ 100 #define HKS_SUPPORT_DH_C 101 #define HKS_SUPPORT_DH_GENERATE_KEY 102 #define HKS_SUPPORT_DH_AGREE_KEY 103 #define HKS_SUPPORT_DH_GET_PUBLIC_KEY 104 105 /* DSA */ 106 #define HKS_SUPPORT_DSA_C 107 #define HKS_SUPPORT_DSA_GENERATE_KEY 108 #define HKS_SUPPORT_DSA_SIGN_VERIFY 109 #define HKS_SUPPORT_DSA_GET_PUBLIC_KEY 110 111 /* X25519 */ 112 #define HKS_SUPPORT_X25519_C 113 #define HKS_SUPPORT_X25519_GENERATE_KEY 114 #define HKS_SUPPORT_X25519_AGREE_KEY 115 #define HKS_SUPPORT_X25519_GET_PUBLIC_KEY 116 117 #define HKS_SUPPORT_ED25519_TO_X25519 118 119 /* SM2 */ 120 #ifdef HKS_SUPPORT_ECC_C 121 #define HKS_SUPPORT_SM2_C 122 #define HKS_SUPPORT_SM2_SIGN_VERIFY 123 #ifdef HKS_SUPPORT_ECC_GENERATE_KEY 124 #define HKS_SUPPORT_SM2_GENERATE_KEY 125 #endif 126 #ifdef HKS_SUPPORT_ECC_GET_PUBLIC_KEY 127 #define HKS_SUPPORT_SM2_GET_PUBLIC_KEY 128 #endif 129 #endif 130 131 /* SM3 */ 132 #define HKS_SUPPORT_SM3_C 133 #define HKS_SUPPORT_SM3_GENERATE_KEY 134 #if defined(HKS_SUPPORT_SM3_C) && defined(HKS_SUPPORT_HMAC_C) 135 #define HKS_SUPPORT_HMAC_SM3 136 #endif 137 #if defined(HKS_SUPPORT_SM3_C) && defined(HKS_SUPPORT_HASH_C) 138 #define HKS_SUPPORT_HASH_SM3 139 #endif 140 141 /* SM4 */ 142 #define HKS_SUPPORT_SM4_C 143 #define HKS_SUPPORT_SM4_GENERATE_KEY 144 #define HKS_SUPPORT_SM4_CBC_NOPADDING 145 #define HKS_SUPPORT_SM4_CBC_PKCS7 146 #define HKS_SUPPORT_SM4_CTR_NOPADDING 147 #define HKS_SUPPORT_SM4_ECB_NOPADDING 148 #define HKS_SUPPORT_SM4_ECB_PKCS7 149 150 /* enable cfi */ 151 #define HKS_SUPPORT_CFI 152 153 #if defined(_SUPPORT_HKS_TEE_) && defined(HKS_SUPPORT_HMAC_GENERATE_KEY) 154 #define HKS_SUPPORT_GET_AT_KEY 155 #endif 156 157 #if defined(HKS_SUPPORT_AES_GENERATE_KEY) || defined(HKS_SUPPORT_DH_GENERATE_KEY) || \ 158 defined(HKS_SUPPORT_DSA_GENERATE_KEY) || defined(HKS_SUPPORT_ECC_GENERATE_KEY) || \ 159 defined(HKS_SUPPORT_ED25519_GENERATE_KEY) || defined(HKS_SUPPORT_HMAC_GENERATE_KEY) || \ 160 defined(HKS_SUPPORT_RSA_GENERATE_KEY) || defined(HKS_SUPPORT_X25519_GENERATE_KEY) || \ 161 defined(HKS_SUPPORT_SM2_GENERATE_KEY) || defined(HKS_SUPPORT_SM3_GENERATE_KEY) || \ 162 defined(HKS_SUPPORT_SM4_GENERATE_KEY) 163 #define HKS_SUPPORT_API_GENERATE_KEY 164 #define HKS_SUPPORT_API_DELETE_KEY 165 #define HKS_SUPPORT_API_GET_KEY_PARAM_SET 166 #define HKS_SUPPORT_API_KEY_EXIST 167 #endif 168 169 #if defined(HKS_SUPPORT_ECC_C) || defined(HKS_SUPPORT_RSA_C) || defined(HKS_SUPPORT_ED25519_C) || \ 170 defined(HKS_SUPPORT_X25519_C) || defined(HKS_SUPPORT_AES_C) || defined(HKS_SUPPORT_DSA_C) || \ 171 defined(HKS_SUPPORT_DH_C) || defined(HKS_SUPPORT_SM2_C) 172 #define HKS_SUPPORT_API_IMPORT 173 #endif 174 175 #if defined(HKS_SUPPORT_ECC_C) || defined(HKS_SUPPORT_RSA_C) || defined(HKS_SUPPORT_ED25519_C) || \ 176 defined(HKS_SUPPORT_X25519_C) || defined(HKS_SUPPORT_AES_C) || defined(HKS_SUPPORT_DSA_C) || \ 177 defined(HKS_SUPPORT_DH_C) || defined(HKS_SUPPORT_SM2_C) 178 #define HKS_SUPPORT_API_EXPORT 179 #endif 180 181 #if defined(HKS_SUPPORT_ECC_C) || defined(HKS_SUPPORT_RSA_C) || defined(HKS_SUPPORT_ED25519_C) || \ 182 defined(HKS_SUPPORT_X25519_C) || defined(HKS_SUPPORT_AES_C) || defined(HKS_SUPPORT_DSA_C) || \ 183 defined(HKS_SUPPORT_DH_C) || defined(HKS_SUPPORT_SM2_C) 184 #define HKS_SUPPORT_API_IMPORT_WRAPPED_KEY 185 #endif 186 187 #define HKS_SUPPORT_API_GENERATE_RANDOM 188 189 #if defined(HKS_SUPPORT_ECDSA_SIGN_VERIFY) || defined(HKS_SUPPORT_ED25519_SIGN_VERIFY) || \ 190 defined(HKS_SUPPORT_RSA_SIGN_VERIFY) || defined(HKS_SUPPORT_DSA_SIGN_VERIFY) 191 #define HKS_SUPPORT_API_SIGN_VERIFY 192 #endif 193 194 #if defined(HKS_SUPPORT_AES_C) || defined(HKS_SUPPORT_RSA_CRYPT) 195 #define HKS_SUPPORT_API_CIPHER 196 #endif 197 198 #if defined(HKS_SUPPORT_X25519_AGREE_KEY) || defined(HKS_SUPPORT_ECDH_AGREE_KEY) || defined(HKS_SUPPORT_DH_AGREE_KEY) 199 #define HKS_SUPPORT_API_AGREE_KEY 200 #endif 201 202 #ifdef HKS_SUPPORT_KDF_C 203 #define HKS_SUPPORT_API_DERIVE_KEY 204 #endif 205 206 #ifdef HKS_SUPPORT_HMAC_C 207 #define HKS_SUPPORT_API_MAC 208 #endif 209 210 #ifdef HKS_SUPPORT_HASH_C 211 #define HKS_SUPPORT_API_HASH 212 #endif 213 214 #ifdef HKS_SUPPORT_BN_C 215 #define HKS_SUPPORT_API_BN_EXP_MOD 216 #endif 217 218 #ifndef HKS_SUPPORT_LITE_HEAP 219 #define HKS_SUPPORT_API_GET_KEY_INFO_LIST 220 #endif 221 222 /* Key user auth access control */ 223 #if defined(HKS_SUPPORT_HMAC_C) && defined(HKS_SUPPORT_API_GENERATE_KEY) && (defined(HKS_SUPPORT_API_IMPORT) || \ 224 defined(HKS_SUPPORT_API_GENERATE_KEY) || defined(HKS_SUPPORT_API_IMPORT_WRAPPED_KEY)) 225 #define HKS_SUPPORT_USER_AUTH_ACCESS_CONTROL 226 #endif 227 228 #endif /* HKS_CONFIG_H */ 229