1 /* 2 * This file is part of the openHiTLS project. 3 * 4 * openHiTLS is licensed under the Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * 8 * http://license.coscl.org.cn/MulanPSL2 9 * 10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13 * See the Mulan PSL v2 for more details. 14 */ 15 16 /** 17 * @defgroup crypt 18 * @brief crypto module 19 */ 20 21 /** 22 * @defgroup crypt_algid 23 * @ingroup crypt 24 * @brief id of algorithms 25 */ 26 27 #ifndef CRYPT_ALGID_H 28 #define CRYPT_ALGID_H 29 30 #include "bsl_obj.h" 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif // __cplusplus 35 36 /** 37 * @ingroup crypt_algid 38 * 39 * RAND algorithm ID 40 */ 41 typedef enum { 42 CRYPT_RAND_SHA1 = BSL_CID_RAND_SHA1, 43 CRYPT_RAND_SHA224 = BSL_CID_RAND_SHA224, 44 CRYPT_RAND_SHA256 = BSL_CID_RAND_SHA256, 45 CRYPT_RAND_SHA384 = BSL_CID_RAND_SHA384, 46 CRYPT_RAND_SHA512 = BSL_CID_RAND_SHA512, 47 CRYPT_RAND_HMAC_SHA1 = BSL_CID_RAND_HMAC_SHA1, 48 CRYPT_RAND_HMAC_SHA224 = BSL_CID_RAND_HMAC_SHA224, 49 CRYPT_RAND_HMAC_SHA256 = BSL_CID_RAND_HMAC_SHA256, 50 CRYPT_RAND_HMAC_SHA384 = BSL_CID_RAND_HMAC_SHA384, 51 CRYPT_RAND_HMAC_SHA512 = BSL_CID_RAND_HMAC_SHA512, 52 CRYPT_RAND_AES128_CTR = BSL_CID_RAND_AES128_CTR, 53 CRYPT_RAND_AES192_CTR = BSL_CID_RAND_AES192_CTR, 54 CRYPT_RAND_AES256_CTR = BSL_CID_RAND_AES256_CTR, 55 CRYPT_RAND_AES128_CTR_DF = BSL_CID_RAND_AES128_CTR_DF, 56 CRYPT_RAND_AES192_CTR_DF = BSL_CID_RAND_AES192_CTR_DF, 57 CRYPT_RAND_AES256_CTR_DF = BSL_CID_RAND_AES256_CTR_DF, 58 CRYPT_RAND_SM3 = BSL_CID_RAND_SM3, 59 CRYPT_RAND_SM4_CTR_DF = BSL_CID_RAND_SM4_CTR_DF, 60 CRYPT_RAND_ALGID_MAX = BSL_CID_UNKNOWN 61 } CRYPT_RAND_AlgId; 62 63 /** 64 * @ingroup crypt_algid 65 * 66 * Hash algorithm ID 67 */ 68 typedef enum { 69 CRYPT_MD_MD5 = BSL_CID_MD5, 70 CRYPT_MD_SHA1 = BSL_CID_SHA1, 71 CRYPT_MD_SHA224 = BSL_CID_SHA224, 72 CRYPT_MD_SHA256 = BSL_CID_SHA256, 73 CRYPT_MD_SHA384 = BSL_CID_SHA384, 74 CRYPT_MD_SHA512 = BSL_CID_SHA512, 75 CRYPT_MD_SHA3_224 = BSL_CID_SHA3_224, 76 CRYPT_MD_SHA3_256 = BSL_CID_SHA3_256, 77 CRYPT_MD_SHA3_384 = BSL_CID_SHA3_384, 78 CRYPT_MD_SHA3_512 = BSL_CID_SHA3_512, 79 CRYPT_MD_SHAKE128 = BSL_CID_SHAKE128, 80 CRYPT_MD_SHAKE256 = BSL_CID_SHAKE256, 81 CRYPT_MD_SM3 = BSL_CID_SM3, 82 CRYPT_MD_MAX = BSL_CID_UNKNOWN 83 } CRYPT_MD_AlgId; 84 85 /** 86 * @ingroup crypt_algid 87 * 88 * MAC algorithm ID 89 */ 90 typedef enum { 91 CRYPT_MAC_HMAC_MD5 = BSL_CID_HMAC_MD5, 92 CRYPT_MAC_HMAC_SHA1 = BSL_CID_HMAC_SHA1, 93 CRYPT_MAC_HMAC_SHA224 = BSL_CID_HMAC_SHA224, 94 CRYPT_MAC_HMAC_SHA256 = BSL_CID_HMAC_SHA256, 95 CRYPT_MAC_HMAC_SHA384 = BSL_CID_HMAC_SHA384, 96 CRYPT_MAC_HMAC_SHA512 = BSL_CID_HMAC_SHA512, 97 CRYPT_MAC_HMAC_SHA3_224 = BSL_CID_HMAC_SHA3_224, 98 CRYPT_MAC_HMAC_SHA3_256 = BSL_CID_HMAC_SHA3_256, 99 CRYPT_MAC_HMAC_SHA3_384 = BSL_CID_HMAC_SHA3_384, 100 CRYPT_MAC_HMAC_SHA3_512 = BSL_CID_HMAC_SHA3_512, 101 CRYPT_MAC_HMAC_SM3 = BSL_CID_HMAC_SM3, 102 CRYPT_MAC_CMAC_AES128 = BSL_CID_CMAC_AES128, 103 CRYPT_MAC_CMAC_AES192 = BSL_CID_CMAC_AES192, 104 CRYPT_MAC_CMAC_AES256 = BSL_CID_CMAC_AES256, 105 CRYPT_MAC_CMAC_SM4 = BSL_CID_CMAC_SM4, 106 CRYPT_MAC_CBC_MAC_SM4 = BSL_CID_CBC_MAC_SM4, 107 CRYPT_MAC_GMAC_AES128 = BSL_CID_GMAC_AES128, 108 CRYPT_MAC_GMAC_AES192 = BSL_CID_GMAC_AES192, 109 CRYPT_MAC_GMAC_AES256 = BSL_CID_GMAC_AES256, 110 CRYPT_MAC_SIPHASH64 = BSL_CID_SIPHASH64, 111 CRYPT_MAC_SIPHASH128 = BSL_CID_SIPHASH128, 112 CRYPT_MAC_MAX = BSL_CID_UNKNOWN 113 } CRYPT_MAC_AlgId; 114 115 /** 116 * @ingroup crypt_algid 117 * 118 * Asymmetric algorithm ID 119 */ 120 typedef enum { 121 CRYPT_PKEY_DSA = BSL_CID_DSA, 122 CRYPT_PKEY_ED25519 = BSL_CID_ED25519, 123 CRYPT_PKEY_X25519 = BSL_CID_X25519, 124 CRYPT_PKEY_RSA = BSL_CID_RSA, 125 CRYPT_PKEY_DH = BSL_CID_DH, 126 CRYPT_PKEY_ECDSA = BSL_CID_ECDSA, 127 CRYPT_PKEY_ECDH = BSL_CID_ECDH, 128 CRYPT_PKEY_SM2 = BSL_CID_SM2DSA, 129 CRYPT_PKEY_PAILLIER = BSL_CID_PAILLIER, 130 CRYPT_PKEY_ELGAMAL = BSL_CID_ELGAMAL, 131 CRYPT_PKEY_SLH_DSA = BSL_CID_SLH_DSA, 132 CRYPT_PKEY_ML_KEM = BSL_CID_ML_KEM, 133 CRYPT_PKEY_ML_DSA = BSL_CID_ML_DSA, 134 CRYPT_PKEY_HYBRID_KEM = BSL_CID_HYBRID_KEM, 135 CRYPT_PKEY_MAX = BSL_CID_UNKNOWN 136 } CRYPT_PKEY_AlgId; 137 138 /** 139 * @ingroup cipher_algid 140 * @brief Symmetric algorithm mode ID 141 * 142 * There is a mapping relationship with the g_ealCipherMethod list. Attention any modification must be synchronized. 143 */ 144 typedef enum { 145 CRYPT_CIPHER_AES128_CBC = BSL_CID_AES128_CBC, 146 CRYPT_CIPHER_AES192_CBC = BSL_CID_AES192_CBC, 147 CRYPT_CIPHER_AES256_CBC = BSL_CID_AES256_CBC, 148 149 CRYPT_CIPHER_AES128_CTR = BSL_CID_AES128_CTR, 150 CRYPT_CIPHER_AES192_CTR = BSL_CID_AES192_CTR, 151 CRYPT_CIPHER_AES256_CTR = BSL_CID_AES256_CTR, 152 153 CRYPT_CIPHER_AES128_ECB = BSL_CID_AES128_ECB, 154 CRYPT_CIPHER_AES192_ECB = BSL_CID_AES192_ECB, 155 CRYPT_CIPHER_AES256_ECB = BSL_CID_AES256_ECB, 156 157 CRYPT_CIPHER_AES128_XTS = BSL_CID_AES128_XTS, 158 CRYPT_CIPHER_AES256_XTS = BSL_CID_AES256_XTS, 159 160 CRYPT_CIPHER_AES128_CCM = BSL_CID_AES128_CCM, 161 CRYPT_CIPHER_AES192_CCM = BSL_CID_AES192_CCM, 162 CRYPT_CIPHER_AES256_CCM = BSL_CID_AES256_CCM, 163 164 CRYPT_CIPHER_AES128_GCM = BSL_CID_AES128_GCM, 165 CRYPT_CIPHER_AES192_GCM = BSL_CID_AES192_GCM, 166 CRYPT_CIPHER_AES256_GCM = BSL_CID_AES256_GCM, 167 168 CRYPT_CIPHER_CHACHA20_POLY1305 = BSL_CID_CHACHA20_POLY1305, 169 170 CRYPT_CIPHER_SM4_XTS = BSL_CID_SM4_XTS, 171 CRYPT_CIPHER_SM4_CBC = BSL_CID_SM4_CBC, 172 CRYPT_CIPHER_SM4_ECB = BSL_CID_SM4_ECB, 173 CRYPT_CIPHER_SM4_CTR = BSL_CID_SM4_CTR, 174 CRYPT_CIPHER_SM4_GCM = BSL_CID_SM4_GCM, 175 CRYPT_CIPHER_SM4_CFB = BSL_CID_SM4_CFB, 176 CRYPT_CIPHER_SM4_OFB = BSL_CID_SM4_OFB, 177 178 CRYPT_CIPHER_AES128_CFB = BSL_CID_AES128_CFB, 179 CRYPT_CIPHER_AES192_CFB = BSL_CID_AES192_CFB, 180 CRYPT_CIPHER_AES256_CFB = BSL_CID_AES256_CFB, 181 CRYPT_CIPHER_AES128_OFB = BSL_CID_AES128_OFB, 182 CRYPT_CIPHER_AES192_OFB = BSL_CID_AES192_OFB, 183 CRYPT_CIPHER_AES256_OFB = BSL_CID_AES256_OFB, 184 185 CRYPT_CIPHER_MAX = BSL_CID_UNKNOWN, 186 } CRYPT_CIPHER_AlgId; 187 188 /** 189 * @ingroup crypt_algid 190 * 191 * Parameter ID of an asymmetric algorithm. The most significant 16 bits indicate the algorithm ID, 192 * and the least significant 16 bits map the ID definition of the algorithm LowLevel. 193 */ 194 typedef enum { 195 CRYPT_DH_RFC2409_768 = BSL_CID_DH_RFC2409_768, 196 CRYPT_DH_RFC2409_1024 = BSL_CID_DH_RFC2409_1024, 197 CRYPT_DH_RFC3526_1536 = BSL_CID_DH_RFC3526_1536, 198 CRYPT_DH_RFC3526_2048 = BSL_CID_DH_RFC3526_2048, 199 CRYPT_DH_RFC3526_3072 = BSL_CID_DH_RFC3526_3072, 200 CRYPT_DH_RFC3526_4096 = BSL_CID_DH_RFC3526_4096, 201 CRYPT_DH_RFC3526_6144 = BSL_CID_DH_RFC3526_6144, 202 CRYPT_DH_RFC3526_8192 = BSL_CID_DH_RFC3526_8192, 203 CRYPT_DH_RFC7919_2048 = BSL_CID_DH_RFC7919_2048, 204 CRYPT_DH_RFC7919_3072 = BSL_CID_DH_RFC7919_3072, 205 CRYPT_DH_RFC7919_4096 = BSL_CID_DH_RFC7919_4096, 206 CRYPT_DH_RFC7919_6144 = BSL_CID_DH_RFC7919_6144, 207 CRYPT_DH_RFC7919_8192 = BSL_CID_DH_RFC7919_8192, 208 CRYPT_ECC_NISTP224 = BSL_CID_NIST_PRIME224, 209 CRYPT_ECC_NISTP256 = BSL_CID_PRIME256V1, 210 CRYPT_ECC_NISTP384 = BSL_CID_SECP384R1, 211 CRYPT_ECC_NISTP521 = BSL_CID_SECP521R1, 212 CRYPT_ECC_BRAINPOOLP256R1 = BSL_CID_ECC_BRAINPOOLP256R1, 213 CRYPT_ECC_BRAINPOOLP384R1 = BSL_CID_ECC_BRAINPOOLP384R1, 214 CRYPT_ECC_BRAINPOOLP512R1 = BSL_CID_ECC_BRAINPOOLP512R1, 215 CRYPT_ECC_SM2 = BSL_CID_SM2PRIME256, 216 CRYPT_HYBRID_X25519_MLKEM512 = BSL_CID_X25519_MLKEM512, 217 CRYPT_HYBRID_X25519_MLKEM768 = BSL_CID_X25519_MLKEM768, 218 CRYPT_HYBRID_X25519_MLKEM1024 = BSL_CID_X25519_MLKEM1024, 219 CRYPT_HYBRID_ECDH_NISTP256_MLKEM512 = BSL_CID_ECDH_NISTP256_MLKEM512, 220 CRYPT_HYBRID_ECDH_NISTP256_MLKEM768 = BSL_CID_ECDH_NISTP256_MLKEM768, 221 CRYPT_HYBRID_ECDH_NISTP256_MLKEM1024 = BSL_CID_ECDH_NISTP256_MLKEM1024, 222 CRYPT_HYBRID_ECDH_NISTP384_MLKEM512 = BSL_CID_ECDH_NISTP384_MLKEM512, 223 CRYPT_HYBRID_ECDH_NISTP384_MLKEM768 = BSL_CID_ECDH_NISTP384_MLKEM768, 224 CRYPT_HYBRID_ECDH_NISTP384_MLKEM1024 = BSL_CID_ECDH_NISTP384_MLKEM1024, 225 CRYPT_HYBRID_ECDH_NISTP521_MLKEM512 = BSL_CID_ECDH_NISTP521_MLKEM512, 226 CRYPT_HYBRID_ECDH_NISTP521_MLKEM768 = BSL_CID_ECDH_NISTP521_MLKEM768, 227 CRYPT_HYBRID_ECDH_NISTP521_MLKEM1024 = BSL_CID_ECDH_NISTP521_MLKEM1024, 228 CRYPT_PKEY_PARAID_MAX = BSL_CID_UNKNOWN 229 } CRYPT_PKEY_ParaId; 230 231 /** 232 * @ingroup crypt_algid 233 * 234 * Elliptic Curve Point Encoding Format 235 */ 236 typedef enum { 237 CRYPT_POINT_COMPRESSED, 238 CRYPT_POINT_UNCOMPRESSED, /**< default format. */ 239 CRYPT_POINT_HYBRID, 240 CRYPT_POINT_MAX 241 } CRYPT_PKEY_PointFormat; 242 243 /** 244 * @ingroup crypt_algid 245 * 246 * KDF algorithm ID 247 */ 248 typedef enum { 249 CRYPT_KDF_SCRYPT = BSL_CID_SCRYPT, 250 CRYPT_KDF_PBKDF2 = BSL_CID_PBKDF2, 251 CRYPT_KDF_KDFTLS12 = BSL_CID_KDFTLS12, 252 CRYPT_KDF_HKDF = BSL_CID_HKDF, 253 CRYPT_KDF_MAX = BSL_CID_UNKNOWN 254 } CRYPT_KDF_AlgId; 255 256 #ifdef __cplusplus 257 } 258 #endif // __cplusplus 259 260 #endif // CRYPT_ALGID_H 261