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 hitls_errno 18 * @ingroup hitls 19 * @brief error module 20 */ 21 22 #ifndef HITLS_ERROR_H 23 #define HITLS_ERROR_H 24 25 #include <stdint.h> 26 #include "hitls_type.h" 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 33 #define HITLS_SUCCESS 0 34 #define HITLS_X509_V_OK 0 35 36 /** 37 * @ingroup hitls_errno 38 * @brief Indicates that the connection is blocked. You can call HITLS_Connect to continue the connection. 39 * This problem is usually caused by read and write operations. 40 */ 41 #define HITLS_WANT_CONNECT 1 42 43 /** 44 * @ingroup hitls_errno 45 * @brief Indicates that the connection is blocked and the HITLS_Accept can be called to continue the connection. 46 * This problem is usually caused by read and write operations. 47 */ 48 #define HITLS_WANT_ACCEPT 2 49 50 /** 51 * @ingroup hitls_errno 52 * @brief indicates that the receiving buffer is empty and the interface can be 53 * called to continue receiving data. 54 */ 55 #define HITLS_WANT_READ 3 56 57 /** 58 * @ingroup hitls_errno 59 * @brief The sending buffer is full and the interface can be called to continue sending data. 60 */ 61 #define HITLS_WANT_WRITE 4 62 63 /** 64 * @ingroup hitls_errno 65 * @brief An unrecoverable fatal error occurs in the TLS protocol, usually a protocol error. 66 */ 67 #define HITLS_ERR_TLS 5 68 69 /** 70 * @ingroup hitls_errno 71 * @brief An unrecoverable I/O error occurs, 72 * which is usually a low level receiving and receiving exception or an unknown error occurs. 73 */ 74 #define HITLS_ERR_SYSCALL 6 75 76 /** 77 * @ingroup hitls_errno 78 * 79 * Error code returned by the TLS module 80 */ 81 typedef enum { 82 HITLS_NULL_INPUT = 0x02010001, /**< Incorrect null pointer input. */ 83 HITLS_INVALID_INPUT, /**< Invalid input, the parameter value is out of the valid range.*/ 84 HITLS_INTERNAL_EXCEPTION, /**< Unexpected internal error, which is unlikely. */ 85 HITLS_MEMALLOC_FAIL, /**< Failed to apply for memory. */ 86 HITLS_MEMCPY_FAIL, /**< Memory Copy Failure. */ 87 HITLS_UNREGISTERED_CALLBACK, /**< Use unregistered callback. */ 88 89 HITLS_CONFIG_FAIL_START = 0x02020001, /**< config module error code start bit. */ 90 HITLS_CONFIG_NO_SUITABLE_CIPHER_SUITE, /**< No suitable cipher suite is found. */ 91 HITLS_CONFIG_UNSUPPORT_CIPHER_SUITE, /**< Unsupported cipher suites. */ 92 HITLS_CONFIG_INVALID_SET, /**< Invalid setting. */ 93 HITLS_CONFIG_NO_SUITABLE_SIGNATURE_ALGORITHM, /**< The signature algorithm and the cipher suite are nonmatching. */ 94 HITLS_CONFIG_NO_GROUPS, /**< The group is not set. */ 95 HITLS_CONFIG_UNSUPPORT_SIGNATURE_ALGORITHM, /**< Unsupported signature algorithm. */ 96 HITLS_CONFIG_UNSUPPORT_POINT_FORMATS, /**< Unsupported the dot format. */ 97 HITLS_CONFIG_INVALID_VERSION, /**< Unsupported the protocol version. */ 98 HITLS_CONFIG_INVALID_LENGTH, /**< Invalid length. */ 99 HITLS_CONFIG_NO_CERT, /**< Unset the certificate. */ 100 HITLS_CONFIG_NO_PRIVATE_KEY, /**< Unset the certificate private key. */ 101 HITLS_CONFIG_DUP_DH_KEY_FAIL, /**< Duplicate DH key failure. */ 102 HITLS_CFG_ERR_LOAD_CERT_FILE, /**< Failed to load the certificate file. */ 103 HITLS_CFG_ERR_LOAD_CERT_BUFFER, /**< Failed to load the certificate buffer. */ 104 HITLS_CFG_ERR_LOAD_KEY_FILE, /**< Failed to load the key file. */ 105 HITLS_CFG_ERR_LOAD_KEY_BUFFER, /**< Failed to load the key buffer. */ 106 HITLS_CONFIG_ERR_LOAD_GROUP_INFO, /**< Failed to load the group info. */ 107 HITLS_CONFIG_ERR_LOAD_SIGN_SCHEME_INFO, /**< Failed to load the signature scheme info. */ 108 HITLS_CONFIG_DUP_CUSTOM_EXT, /**< Duplicate custom extension type detected. */ 109 110 HITLS_CM_FAIL_START = 0x02030001, /**< Error start bit of the conn module. */ 111 HITLS_CM_LINK_FATAL_ALERTED, /**< link sent fatal alert. */ 112 HITLS_CM_LINK_CLOSED, /**< Link has been closed. */ 113 HITLS_CM_LINK_UNESTABLISHED, /**< The current link is not established. 114 Do not perform other operations, such as read and write. */ 115 HITLS_CM_LINK_UNSUPPORT_SECURE_RENEGOTIATION, /**< The current link Unsupported security renegotiation. */ 116 117 HITLS_MSG_HANDLE_FAIL_START = 0x02040001, /**< Start bit of the error code processed by the state machine. */ 118 HITLS_MSG_HANDLE_UNEXPECTED_MESSAGE, /**< receives unexpected handshake messages. */ 119 HITLS_MSG_HANDLE_RANDOM_SIZE_ERR, /**< Incorrect random number length. */ 120 HITLS_MSG_HANDLE_UNSUPPORT_POINT_FORMAT, /**< Unsupported the point format. */ 121 HITLS_MSG_HANDLE_CIPHER_SUITE_ERR, /**< cannot find the supported cipher suite. */ 122 HITLS_MSG_HANDLE_UNSUPPORT_VERSION, /**< Unsupported version. */ 123 HITLS_MSG_HANDLE_STATE_ILLEGAL, /**< Handshake status error. */ 124 HITLS_MSG_HANDLE_UNSUPPORT_KX_ALG, /**< Unsupported key exchange algorithm. */ 125 HITLS_MSG_HANDLE_UNSUPPORT_CERT, /**< Unsupported certificate. */ 126 HITLS_MSG_HANDLE_UNKNOWN_CURVE_TYPE, /**< Unsupported elliptic curve type. */ 127 HITLS_MSG_HANDLE_VERIFY_FINISHED_FAIL, /**< Failed to verify the finished message. */ 128 HITLS_MSG_HANDLE_VERIFY_SIGN_FAIL, /**< Failed to verify the finished message. */ 129 HITLS_MSG_HANDLE_INCORRECT_DIGEST_LEN, /**< Incorrect length of the digest. */ 130 HITLS_MSG_HANDLE_UNSUPPORT_NAMED_CURVE, /**< Unsupported ECDH elliptic curves. */ 131 HITLS_MSG_HANDLE_UNSUPPORT_EXTENSION_TYPE, /**< Unsupported the extended type. */ 132 HITLS_MSG_HANDLE_UNSUPPORT_CIPHER_SUITE, /**< Unsupported cipher suites. */ 133 HITLS_MSG_HANDLE_COOKIE_ERR, /**< Incorrect cookie. */ 134 HITLS_MSG_VERIFY_COOKIE_ERR, /**< Failed to verify the cookie. */ 135 HITLS_MSG_HANDLE_ERR_ENCODE_ECDH_KEY, /**< Failed to obtain the ECDH public key. */ 136 HITLS_MSG_HANDLE_ERR_ENCODE_DH_KEY, /**< Failed to obtain the DH public key. */ 137 HITLS_MSG_HANDLE_ERR_GET_DH_PARAMETERS, /**< Failed to obtain the DH parameter. */ 138 HITLS_MSG_HANDLE_ERR_GET_DH_KEY, /**< Failed to generate the DH key. */ 139 HITLS_MSG_HANDLE_NO_PEER_CERTIFIACATE, /**< Not receive the peer certificate. */ 140 HITLS_MSG_HANDLE_ERR_NO_SERVER_CERTIFICATE, /**< Server has no certificate to send. */ 141 HITLS_MSG_HANDLE_UNMATCHED_SEQUENCE, /**< Handshake sequence number nonmatch */ 142 HITLS_MSG_HANDLE_ILLEGAL_VERSION, /**< Incorrect version. */ 143 HITLS_MSG_HANDLE_ILLEGAL_CIPHER_SUITE, /**< Incorrect cipher suite. */ 144 HITLS_MSG_HANDLE_ILLEGAL_SELECTED_GROUP, /**< Incorrect selectedGroup. */ 145 HITLS_MSG_HANDLE_ILLEGAL_EXTRENED_MASTER_SECRET, /**< Incorrect extended master key. */ 146 HITLS_MSG_HANDLE_MISSING_EXTENSION, /**< Message missing the extended field that must be sent */ 147 HITLS_MSG_HANDLE_DUPLICATE_HELLO_RETYR_REQUEST, /**< Duplicate Hello Retry Request messages */ 148 HITLS_MSG_HANDLE_ALPN_PROTOCOL_NO_MATCH, /**< No matching alpn */ 149 HITLS_MSG_HANDLE_ILLEGAL_PSK_LEN, /**< Invalid PSK length */ 150 HITLS_MSG_HANDLE_ILLEGAL_IDENTITY_LEN, /**< Invalid identity length */ 151 HITLS_MSG_HANDLE_GET_UNSIGN_DATA_FAIL, /**< Failed to obtain the unsigned data 152 during signature calculation */ 153 HITLS_MSG_HANDLE_ILLEGAL_SESSION_ID, /**< Receives an incorrect session ID */ 154 HITLS_MSG_HANDLE_SNI_UNRECOGNIZED_NAME, /**< Not accept the extended value of server_name */ 155 HITLS_MSG_HANDLE_ALPN_UNRECOGNIZED, /**< Not accept the extended ALPN value */ 156 HITLS_MSG_HANDLE_ILLEGAL_KEY_UPDATE_TYPE, /**< Receives an incorrect key update type */ 157 HITLS_MSG_HANDLE_SYS_TIME_FAIL, /**< System time function returns a failure */ 158 HITLS_MSG_HANDLE_DTLS_CONNECT_TIMEOUT, /**< DTLS connection timeout */ 159 HITLS_MSG_HANDLE_UNSECURE_VERSION, /**< Insecure version. */ 160 HITLS_MSG_HANDLE_UNSECURE_CIPHER_SUITE, /**< Insecure cipher suites. */ 161 HITLS_MSG_HANDLE_RENEGOTIATION_FAIL, /**< Renegotiation failure */ 162 HITLS_MSG_HANDLE_SESSION_ID_CTX_ILLEGAL, /**< Session ID ctx mismatch */ 163 HITLS_MSG_HANDLE_ENCRYPT_THEN_MAC_ERR, /**< Failed to change the EncryptThenMac status */ 164 HITLS_MSG_HANDLE_ILLEGAL_PSK_IDENTITY, /**< psk identity error */ 165 HITLS_MSG_HANDLE_PSK_USE_SESSION_FAIL, /**< The TLS1.3 client fails to process the PSK callback. */ 166 HITLS_MSG_HANDLE_PSK_FIND_SESSION_FAIL, /**< The TLS1.3 server fails to process the PSK callback. */ 167 HITLS_MSG_HANDLE_PSK_SESSION_INVALID_CIPHER_SUITE, /**< TLS1.3 psk session algorithm suite is incorrect. */ 168 HITLS_MSG_HANDLE_PSK_INVALID, /**< TLS1.3 psk check failed. */ 169 HITLS_MSG_HANDLE_INVALID_CERT_REQ_CTX, /**< TLS1.3 invalid certificateReqCtx. */ 170 HITLS_MSG_HANDLE_HANDSHAKE_FAILURE, /**< TLS1.3 handshake parameters cannot be negotiated. */ 171 HITLS_MSG_HANDLE_INVALID_COMPRESSION_METHOD, /**< Receives an incorrect compression algorithm. */ 172 HITLS_MSG_HANDLE_INVALID_EXTENDED_MASTER_SECRET, /**< The peer Unsupported the extended master key. */ 173 HITLS_MSG_HANDLE_ERR_CLIENT_HELLO_FRAGMENT, 174 HITLS_MSG_HANDLE_ERR_INAPPROPRIATE_FALLBACK, /**< The downgrade negotiation failed, and the client supports 175 a higher version. */ 176 177 HITLS_PACK_FAIL_START = 0x02050001, /**< Start bit of the pack error code. */ 178 HITLS_PACK_UNSUPPORT_VERSION, /**< Unsupported version. */ 179 HITLS_PACK_UNSECURE_VERSION, /**< Insecure version. */ 180 HITLS_PACK_UNSUPPORT_HANDSHAKE_MSG, /**< Unsupported handshake messages. */ 181 HITLS_PACK_NOT_ENOUGH_BUF_LENGTH, /**< Insufficient buffer length. */ 182 HITLS_PACK_SESSIONID_ERR, /**< Failed to assemble the sessionId. */ 183 HITLS_PACK_COOKIE_ERR, /**< Failed to assemble the cookie. */ 184 HITLS_PACK_CLIENT_CIPHER_SUITE_ERR, /**< Failed to assemble client_cipher_suite. */ 185 HITLS_PACK_UNSUPPORT_KX_ALG, /**< Unsupported the key negotiation algorithm. */ 186 HITLS_PACK_UNSUPPORT_KX_CURVE_TYPE, /**< Unsupported ECDH key negotiation algorithm curve. */ 187 HITLS_PACK_INVALID_KX_PUBKEY_LENGTH, /**< Invalid length of the public key for key negotiation */ 188 HITLS_PACK_SIGNATURE_ERR, /**< Failed to assemble the server_kx message signature data. */ 189 HITLS_PACK_PRE_SHARED_KEY_ERR, /**< Failed to assemble the PSK. */ 190 191 HITLS_PARSE_FAIL_START = 0x02060001, /**< Start bit of the parse error code. */ 192 HITLS_PARSE_UNSUPPORT_VERSION, /**< Unsupported Version. */ 193 HITLS_PARSE_UNSUPPORT_HANDSHAKE_MSG, /**< Unsupported handshake messages. */ 194 HITLS_PARSE_INVALID_MSG_LEN, /**< Message length error. */ 195 HITLS_PARSE_DUPLICATE_EXTENDED_MSG, /**< Duplicate extended messages. */ 196 HITLS_PARSE_COMPRESSION_METHOD_ERR, /**< Incorrect compression type. */ 197 HITLS_PARSE_SERVER_NAME_ERR, /**< Failed to parse server_name. */ 198 HITLS_PARSE_CERT_ERR, /**< Failed to parse the certificate. */ 199 HITLS_PARSE_ECDH_PUBKEY_ERR, /**< Failed to parse the ecdh public key. */ 200 HITLS_PARSE_ECDH_SIGN_ERR, /**< Failed to parse the ecdh signature. */ 201 HITLS_PARSE_UNSUPPORT_KX_ALG, /**< Unsupported the key exchange algorithm. */ 202 HITLS_PARSE_UNSUPPORT_KX_CURVE_TYPE, /**< Unsupported ECC curve type. */ 203 HITLS_PARSE_GET_SIGN_PARA_ERR, /**< Failed to obtain the signature algorithm and hash algorithm */ 204 HITLS_PARSE_UNSUPPORT_SIGN_ALG, /**< Unsupported the signature algorithm. */ 205 HITLS_PARSE_VERIFY_SIGN_FAIL, /**< Failed to verify the signature. */ 206 HITLS_PARSE_DH_P_ERR, /**< Failed to parse the dh_p. */ 207 HITLS_PARSE_DH_G_ERR, /**< Failed to parse the dh_g. */ 208 HITLS_PARSE_DH_PUBKEY_ERR, /**< Failed to parse the DHE public key. */ 209 HITLS_PARSE_DH_SIGN_ERR, /**< Failed to parse the DHE signature. */ 210 HITLS_PARSE_UNSUPPORTED_EXTENSION, /**< Unsupported extended fields. */ 211 HITLS_PARSE_CA_LIST_ERR, /**< Failed to parse the CA name list. */ 212 HITLS_PARSE_EXCESSIVE_MESSAGE_SIZE, /**< The length of the parsing exceeds the maximum. */ 213 HITLS_PARSE_PRE_SHARED_KEY_FAILED, /**< Failed to parse the PSK extension. */ 214 HITLS_PARSE_DUPLICATED_KEY_SHARE, /**< duplicated key share entry. */ 215 216 HITLS_REASS_FAIL_START = 0x02070001, /**< Reassembly module error code start bit. */ 217 HITLS_REASS_INVALID_FRAGMENT, /**< Receives invalid fragmented messages. */ 218 219 HITLS_CCS_FAIL_START = 0x02080001, /**< ccs module error code start bit. */ 220 HITLS_CCS_INVALID_CMD, /**< Invalid command. */ 221 222 HITLS_ALERT_FAIL_START = 0x02090001, /**< alert module error code start bit. */ 223 HITLS_ALERT_NO_WANT_SEND, /**< No alert messages to be sent. */ 224 225 HITLS_REC_FAIL_START = 0x020A0001, /**< record module error start bit. */ 226 HITLS_REC_PMTU_TOO_SMALL, /**< pmtu is too small to meet the record packet length. */ 227 HITLS_REC_ERR_BUFFER_NOT_ENOUGH, /**< Insufficient buffer. */ 228 HITLS_REC_ERR_TOO_BIG_LENGTH, /**< The length of the plaintext data to be written 229 exceeds the maximum length of a single record. */ 230 HITLS_REC_ERR_NOT_SUPPORT_CIPHER, /**< Unsupported the cipher suites. */ 231 HITLS_REC_ERR_ENCRYPT, /**< Encryption failed. */ 232 HITLS_REC_ERR_AEAD_NONCE_PARAM, /**< AEAD nonce input parameter is incorrect. */ 233 HITLS_REC_ERR_SN_WRAPPING, /**< Sequence number Rewind. */ 234 HITLS_REC_ERR_IO_EXCEPTION, /**< The low level I/O is abnormal. */ 235 HITLS_REC_NORMAL_IO_BUSY, /**< Low level I/O is busy, need wait for the next sending. */ 236 HITLS_REC_NORMAL_RECV_BUF_EMPTY, /**< The receiving buffer is empty. */ 237 HITLS_REC_NORMAL_RECV_UNEXPECT_MSG, /**< If REC receives unexpected messages and the receiver is user, 238 needs to recall the previous function. */ 239 HITLS_REC_NORMAL_RECV_DISORDER_MSG, /**< The REC receives disordered records, 240 to receive disordered finished records. */ 241 HITLS_REC_INVLAID_RECORD, /**< record: invalid record message. */ 242 HITLS_REC_INVALID_PROTOCOL_VERSION, /**< record: Incorrect version. */ 243 HITLS_REC_BAD_RECORD_MAC, /**< record: Invalid MAC. */ 244 HITLS_REC_DECODE_ERROR, /**< Decoding failed. */ 245 HITLS_REC_RECORD_OVERFLOW, /**< Record is too long. */ 246 HITLS_REC_ERR_RECV_UNEXPECTED_MSG, /**< Record: unexpected message */ 247 HITLS_REC_ERR_GENERATE_MAC, /**< Failed to generate the MAC address. */ 248 HITLS_REC_NORMAL_IO_EOF, /**< IO object has reached EOF. */ 249 HITLS_REC_ENCRYPTED_NUMBER_OVERFLOW, /**< The number of AES-GCM encryption times cannot exceed 2^24.5. */ 250 HITLS_REC_ERR_DATA_BETWEEN_CCS_AND_FINISHED, /**< When version is below TLS13, 251 must not have data between ccs and finished. */ 252 253 HITLS_UIO_FAIL_START = 0x020B0001, /**< uio module error code start bit. */ 254 HITLS_UIO_FAIL, /**< UIO internal failure. */ 255 HITLS_UIO_IO_EXCEPTION, /**< Low level I/O exception. */ 256 HITLS_UIO_SCTP_IS_SND_BUF_EMPTY_FAIL, /**< Failed to obtain whether the sending buffer 257 of the UIO object is empty. */ 258 HITLS_UIO_SCTP_ADD_AUTH_KEY_FAIL, /**< Failed to add the auth key for the sctp UIO object. */ 259 HITLS_UIO_SCTP_ACTIVE_AUTH_KEY_FAIL, /**< Failed to activate the auth key for the sctp UIO object. */ 260 HITLS_UIO_SCTP_DEL_AUTH_KEY_FAIL, /**< Failed to delete the auth key for the sctp UIO object. */ 261 262 HITLS_CERT_FAIL_START = 0x020C0001, /**< Certificate module error code start bit. */ 263 HITLS_CERT_STORE_CTRL_ERR_SET_VERIFY_DEPTH, 264 HITLS_CERT_STORE_CTRL_ERR_ADD_CERT_LIST, 265 HITLS_CERT_ERR_X509_DUP, /**< Failed to duplicate the certificate. */ 266 HITLS_CERT_ERR_KEY_DUP, /**< Failed to duplicate the key. */ 267 HITLS_CERT_ERR_STORE_DUP, /**< Failed to duplicate the store. */ 268 HITLS_CERT_ERR_CHAIN_DUP, /**< Failed to duplicate the certificate chain. */ 269 HITLS_CERT_CTRL_ERR_GET_ENCODE_LEN, /**< Failed to obtain the certificate encoding length. */ 270 HITLS_CERT_CTRL_ERR_GET_PUB_KEY, /**< Failed to obtain the certificate public key. */ 271 HITLS_CERT_CTRL_ERR_GET_SIGN_ALGO, /**< Failed to obtain the signature algorithm. */ 272 HITLS_CERT_KEY_CTRL_ERR_GET_SIGN_LEN, /**< Failed to obtain the signature length. */ 273 HITLS_CERT_KEY_CTRL_ERR_GET_TYPE, /**< Failed to obtain the key type. */ 274 HITLS_CERT_KEY_CTRL_ERR_GET_CURVE_NAME, /**< Failed to obtain the elliptic curve ID. */ 275 HITLS_CERT_KEY_CTRL_ERR_GET_POINT_FORMAT, /**< Failed to obtain the point format. */ 276 HITLS_CERT_KEY_CTRL_ERR_GET_SECBITS, /**< Failed to obtain security bits. */ 277 HITLS_CERT_KEY_CTRL_ERR_IS_ENC_USAGE, /**< Determine whether the certificate fails to be encrypted, 278 Applicable to TCLP scenarios. */ 279 HITLS_CERT_KEY_CTRL_ERR_IS_DIGITAL_SIGN_USAGE, /**< Determine whether the certificate fails to be digital sign. */ 280 HITLS_CERT_KEY_CTRL_ERR_IS_KEY_CERT_SIGN_USAGE, /**< Determine whether the certificate fails to be cert sign. */ 281 HITLS_CERT_KEY_CTRL_ERR_IS_KEY_AGREEMENT_USAGE, /**< Determine whether the certificate fails to be agreement. */ 282 HITLS_CERT_KEY_CTRL_ERR_GET_PARAM_ID, /**< Failed to obtain the parameter ID. */ 283 HITLS_CERT_ERR_INVALID_KEY_TYPE, /**< Invalid key type */ 284 HITLS_CERT_ERR_CHECK_CERT_AND_KEY, /**< Certificate and private key nonmatch. */ 285 HITLS_CERT_ERR_NO_CURVE_MATCH, /**< Certificate and elliptic curve ID nonmatch. */ 286 HITLS_CERT_ERR_NO_POINT_FORMAT_MATCH, /**< Certificate and dot format nonmatch. */ 287 HITLS_CERT_ERR_NO_SIGN_SCHEME_MATCH, /**< Certificate and signature algorithm nonmatch. */ 288 HITLS_CERT_ERR_SELECT_CERTIFICATE, /**< Failed to select the certificate. */ 289 HITLS_CERT_ERR_BUILD_CHAIN, /**< Failed to construct the certificate chain. */ 290 HITLS_CERT_ERR_ENCODE_CERT, /**< Certificate encoding failure. */ 291 HITLS_CERT_ERR_PARSE_MSG, /**< Certificate decoding failure. */ 292 HITLS_CERT_ERR_VERIFY_CERT_CHAIN, /**< Certificate chain verification failure. */ 293 HITLS_CERT_ERR_CREATE_SIGN, /**< Failed to sign using the certificate private key. */ 294 HITLS_CERT_ERR_VERIFY_SIGN, /**< Failed to use the certificate public key 295 to verify the signature. */ 296 HITLS_CERT_ERR_ENCRYPT, /**< Failed to encrypt the RSA certificate public key. */ 297 HITLS_CERT_ERR_DECRYPT, /**< Failed to decrypt using the RSA Certificate Private Key */ 298 HITLS_CERT_ERR_ADD_CHAIN_CERT, /**< Failed to add the certificate chain. */ 299 HITLS_CERT_ERR_MGR_DUP, /**< Failed to duplicate the certificate management structure. */ 300 HITLS_CERT_ERR_INSECURE_SIG_ALG, /**< Insecure signature algorithm strength. */ 301 HITLS_CERT_ERR_CA_KEY_WITH_INSECURE_SECBITS, /**< Insecure CA certificate key security bits. */ 302 HITLS_CERT_ERR_EE_KEY_WITH_INSECURE_SECBITS, /**< Insecure EE certificate key security bits. */ 303 HITLS_CERT_ERR_EXP_CERT, /**< No expected certificate included. */ 304 HITLS_CERT_ERR_ENCODE, /**< Failed to encode the certificate. */ 305 HITLS_CERT_ERR_KEYUSAGE, /**< Failed to verify the certificate keyusage. */ 306 HITLS_CERT_ERR_INVALID_STORE_TYPE, /**< Invalid store type */ 307 HITLS_CERT_ERR_X509_REF, /**< Certificate reference counting error. */ 308 HITLS_CERT_ERR_INSERT_CERTPAIR, /**< Certificate insert certPair error. */ 309 HITLS_CERT_ERR_NO_KEYUSAGE, /**< No keyusage. */ 310 HITLS_CERT_KEY_CTRL_ERR_IS_DATA_ENC_USAGE, /**< Determine whether the certificate fails to be data enc. */ 311 HITLS_CERT_KEY_CTRL_ERR_IS_NON_REPUDIATION_USAGE, /**< Determine whether the certificate fails to be 312 non-repudiation. */ 313 314 HITLS_CRYPT_FAIL_START = 0x020D0001, /**< Crypt adaptation module error code start bit. */ 315 HITLS_CRYPT_ERR_GENERATE_RANDOM, /**< Failed to generate a random number. */ 316 HITLS_CRYPT_ERR_HMAC, /**< HMAC operation failure. */ 317 HITLS_CRYPT_ERR_DIGEST, /**< Hash operation failure. */ 318 HITLS_CRYPT_ERR_ENCRYPT, /**< Encryption failure. */ 319 HITLS_CRYPT_ERR_DECRYPT, /**< Decryption failure. */ 320 HITLS_CRYPT_ERR_ENCODE_ECDH_KEY, /**< Failed to obtain the ECDH public key. */ 321 HITLS_CRYPT_ERR_CALC_SHARED_KEY, /**< Failed to calculate the ECDH shared key. */ 322 HITLS_CRYPT_ERR_ENCODE_DH_KEY, /**< Failed to obtain the DH public key. */ 323 HITLS_CRYPT_ERR_HKDF_EXTRACT, /**< HKDF-Extract calculation error. */ 324 HITLS_CRYPT_ERR_HKDF_EXPAND, /**< HKDF-Expand calculation error. */ 325 HITLS_CRYPT_ERR_KEM_ENCAPSULATE, /**< KEM-Encapsulate calculation error. */ 326 HITLS_CRYPT_ERR_KEM_DECAPSULATE, /**< KEM-Decapsulate calculation error. */ 327 HITLS_CRYPT_ERR_DH, /**< DH failure. */ 328 329 HITLS_APP_FAIL_START = 0x020E0001, /**< APP module error code start bit. */ 330 HITLS_APP_ERR_TOO_LONG_TO_WRITE, /**< APP Data written is too long. */ 331 HITLS_APP_ERR_ZERO_READ_BUF_LEN, /**< The buffer size read by the APP cannot be 0. */ 332 HITLS_APP_ERR_WRITE_BAD_RETRY, /**< The addresses of the buffers sent twice are inconsistent. */ 333 334 HITLS_CLIENT_HELLO_CHECK_ERROR, /**< ClientHello callback detection failure. */ 335 336 HITLS_SESS_FAIL_START = 0x02100001, /**< Session feature error code start bit. */ 337 HITLS_SESS_ERR_SESSION_ID_GENRATE, /**< Session id output error. */ 338 HITLS_SESS_ERR_DECODE_TICKET, /**< Error decoding session ticket object. */ 339 HITLS_SESS_ERR_SESSION_TICKET_SIZE_INCORRECT, /**< Session ticket length is incorrect. */ 340 HITLS_SESS_ERR_SESSION_TICKET_HMAC_FAIL, /**< Failed to calculate the session ticket hmac. */ 341 HITLS_SESS_ERR_SESSION_TICKET_KEY_FAIL, /**< Failed to obtain the ticket key, and then link 342 establishment failed, so needs to sent alert. */ 343 HITLS_SESS_ERR_ENC_VERIFY_RESULT_FAIL, /**< Failed to verify the encoding result. */ 344 HITLS_SESS_ERR_ENC_MASTER_SECRET_FAIL, /**< Failed to encode the master secret. */ 345 HITLS_SESS_ERR_ENC_EXT_MASTER_SECRET_FAIL, /**< Failed to encode the extend master secret. */ 346 HITLS_SESS_ERR_ENC_SESSION_ID_FAIL, /**< Failed to encode the session ID. */ 347 HITLS_SESS_ERR_ENC_SESSION_ID_CTX_FAIL, /**< Failed to encode the session ID context. */ 348 HITLS_SESS_ERR_ENC_HOST_NAME_FAIL, /**< Failed to encode the host name. */ 349 HITLS_SESS_ERR_ENC_TIME_OUT_FAIL, /**< Failed to encode the time out. */ 350 HITLS_SESS_ERR_ENC_VERSION_FAIL, /**< Failed to encode the version. */ 351 HITLS_SESS_ERR_ENC_CIPHER_SUITE_FAIL, /**< Failed to encode the ciphersuite. */ 352 HITLS_SESS_ERR_ENC_START_TIME_FAIL, /**< Failed to encode the start time. */ 353 HITLS_SESS_ERR_ENC_PSK_IDENTITY_FAIL, /**< Failed to encode the PSK identity. */ 354 HITLS_SESS_ERR_DEC_VERIFY_RESULT_FAIL, /**< Failed to decode the verify result. */ 355 HITLS_SESS_ERR_DEC_VERSION_FAIL, /**< Failed to decode the version. */ 356 HITLS_SESS_ERR_DEC_CIPHER_SUITE_FAIL, /**< Fails to decode the cipher suite. */ 357 HITLS_SESS_ERR_DEC_MASTER_SECRET_FAIL, /**< Failed to decode the master secret. */ 358 HITLS_SESS_ERR_DEC_PSK_IDENTITY_FAIL, /**< Failed to decode the PSK identity. */ 359 HITLS_SESS_ERR_DEC_START_TIME_FAIL, /**< Failed to decode the start time. */ 360 HITLS_SESS_ERR_DEC_TIME_OUT_FAIL, /**< Failed to decode the time out. */ 361 HITLS_SESS_ERR_DEC_HOST_NAME_FAIL, /**< Failed to decode the host name. */ 362 HITLS_SESS_ERR_DEC_SESSION_ID_CTX_FAIL, /**< Failed to decode the session ID context. */ 363 HITLS_SESS_ERR_DEC_SESSION_ID_FAIL, /**< Failed to decode the session ID. */ 364 HITLS_SESS_ERR_DEC_EXT_MASTER_SECRET_FAIL, /**< Failed to decode the extended master secret. */ 365 HITLS_SESS_ERR_ENC_PEER_CERT_FAIL, /**< Failed to encode the peercert. */ 366 HITLS_SESS_ERR_DEC_PEER_CERT_FAIL, /**< Failed to decode the peercert. */ 367 368 HITLS_X509_FAIL_START = 0x02120001, /**< The X509 feature error code start bit of. */ 369 HITLS_X509_V_ERR_UNSPECIFIED, 370 HITLS_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT, 371 HITLS_X509_V_ERR_UNABLE_TO_GET_CRL, 372 HITLS_X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE, 373 HITLS_X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE, 374 HITLS_X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY, 375 HITLS_X509_V_ERR_CERT_SIGNATURE_FAILURE, 376 HITLS_X509_V_ERR_CRL_SIGNATURE_FAILURE, 377 HITLS_X509_V_ERR_CERT_NOT_YET_VALID, 378 HITLS_X509_V_ERR_CERT_HAS_EXPIRED, 379 HITLS_X509_V_ERR_CRL_NOT_YET_VALID, 380 HITLS_X509_V_ERR_CRL_HAS_EXPIRED, 381 HITLS_X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD, 382 HITLS_X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD, 383 HITLS_X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD, 384 HITLS_X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD, 385 HITLS_X509_V_ERR_OUT_OF_MEM, 386 HITLS_X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT, 387 HITLS_X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN, 388 HITLS_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY, 389 HITLS_X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE, 390 HITLS_X509_V_ERR_CERT_CHAIN_TOO_LONG, 391 HITLS_X509_V_ERR_CERT_REVOKED, 392 HITLS_X509_V_ERR_INVALID_CA, 393 HITLS_X509_V_ERR_PATH_LENGTH_EXCEEDED, 394 HITLS_X509_V_ERR_INVALID_PURPOSE, 395 HITLS_X509_V_ERR_CERT_UNTRUSTED, 396 HITLS_X509_V_ERR_CERT_REJECTED, 397 HITLS_X509_V_ERR_SUBJECT_ISSUER_MISMATCH, 398 HITLS_X509_V_ERR_AKID_SKID_MISMATCH, 399 HITLS_X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH, 400 HITLS_X509_V_ERR_KEYUSAGE_NO_CERTSIGN, 401 HITLS_X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER, 402 HITLS_X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION, 403 HITLS_X509_V_ERR_KEYUSAGE_NO_CRL_SIGN, 404 HITLS_X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION, 405 HITLS_X509_V_ERR_INVALID_NON_CA, 406 HITLS_X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED, 407 HITLS_X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE, 408 HITLS_X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED, 409 HITLS_X509_V_ERR_INVALID_EXTENSION, 410 HITLS_X509_V_ERR_INVALID_POLICY_EXTENSION, 411 HITLS_X509_V_ERR_NO_EXPLICIT_POLICY, 412 HITLS_X509_V_ERR_DIFFERENT_CRL_SCOPE, 413 HITLS_X509_V_ERR_ERROR_IN_CMP_CERT_NOT_AFTER_FIELD, 414 HITLS_X509_V_ERR_ERROR_IN_CMP_CRL_THIS_UPDATE_FIELD, 415 HITLS_X509_V_ERR_ERROR_IN_CMP_CRL_NEXT_UPDATE_FIELD, 416 HITLS_X509_V_ERR_ERROR_IN_CMP_CERT_NOT_BEFORE_FIELD, 417 HITLS_X509_V_ERR_CRL_PATH_VALIDATION_ERROR, 418 419 HITLS_CERT_SELF_ADAPT_ERR = 0x02130001, 420 HITLS_CERT_SELF_ADAPT_INVALID_TIME, 421 HITLS_CERT_SELF_ADAPT_UNSUPPORT_FORMAT, 422 HITLS_CERT_SELF_ADAPT_BUILD_CERT_CHAIN_ERR, 423 } HITLS_ERROR; 424 425 /** 426 * @ingroup hitls_error 427 * @brief Obtain the TLS operation error code. 428 * 429 * @param ctx [IN] TLS context 430 * @param ret [IN] Return value of the TLS interface called 431 * @retval HITLS_SUCCESS, No error. 432 * @retval HITLS_WANT_CONNECT, indicates that the connection is blocked. 433 * You can call HITLS_Connect to continue the connection, This problem is usually caused 434 * by the read and write operation failure. 435 * @retval HITLS_WANT_ACCEPT, indicates that the connection is blocked and the HITLS_Accept 436 * can be called to continue the connection. This problem is usually caused by the read and write operation failure. 437 * @retval HITLS_WANT_READ, indicates that the receiving buffer is empty and the interface 438 * can be called to continue receiving data. 439 * @retval HITLS_WANT_WRITE, indicates that the sending buffer is full and the interface 440 * can be called to continue sending data. 441 * @retval HITLS_ERR_TLS, An unrecoverable fatal error occurs in the TLS protocol, usually a protocol error. 442 * @retval HITLS_ERR_SYSCALL, An unrecoverable I/O error occurs. Generally, the I/O error is caused 443 * by the Low level receiving and receiving exception and an unknown error occurs. 444 */ 445 int32_t HITLS_GetError(const HITLS_Ctx *ctx, int32_t ret); 446 447 #ifdef __cplusplus 448 } 449 #endif /* __cplusplus */ 450 451 #endif /* end HITLS_ERROR_H */ 452