1 /* 2 * Enumeration of all SSL-specific error codes. 3 * 4 * This Source Code Form is subject to the terms of the Mozilla Public 5 * License, v. 2.0. If a copy of the MPL was not distributed with this 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 7 #ifndef __SSL_ERR_H_ 8 #define __SSL_ERR_H_ 9 10 /* clang-format off */ 11 12 #define SSL_ERROR_BASE (-0x3000) 13 #define SSL_ERROR_LIMIT (SSL_ERROR_BASE + 1000) 14 15 #define IS_SSL_ERROR(code) \ 16 (((code) >= SSL_ERROR_BASE) && ((code) < SSL_ERROR_LIMIT)) 17 18 #ifndef NO_SECURITY_ERROR_ENUM 19 typedef enum { 20 SSL_ERROR_EXPORT_ONLY_SERVER = (SSL_ERROR_BASE + 0), 21 /* error 0 is obsolete */ 22 SSL_ERROR_US_ONLY_SERVER = (SSL_ERROR_BASE + 1), 23 /* error 1 is obsolete */ 24 SSL_ERROR_NO_CYPHER_OVERLAP = (SSL_ERROR_BASE + 2), 25 /* 26 * Received an alert reporting what we did wrong. (more alerts below) 27 */ 28 SSL_ERROR_NO_CERTIFICATE /*_ALERT */ = (SSL_ERROR_BASE + 3), 29 SSL_ERROR_BAD_CERTIFICATE = (SSL_ERROR_BASE + 4), 30 /* error 4 is obsolete */ 31 SSL_ERROR_UNUSED_5 = (SSL_ERROR_BASE + 5), 32 /* error 5 is obsolete */ 33 SSL_ERROR_BAD_CLIENT = (SSL_ERROR_BASE + 6), 34 SSL_ERROR_BAD_SERVER = (SSL_ERROR_BASE + 7), 35 SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE = (SSL_ERROR_BASE + 8), 36 /* error 8 is obsolete */ 37 SSL_ERROR_UNSUPPORTED_VERSION = (SSL_ERROR_BASE + 9), 38 SSL_ERROR_UNUSED_10 = (SSL_ERROR_BASE + 10), 39 /* error 10 is obsolete */ 40 SSL_ERROR_WRONG_CERTIFICATE = (SSL_ERROR_BASE + 11), 41 /* error 11 is obsolete */ 42 SSL_ERROR_BAD_CERT_DOMAIN = (SSL_ERROR_BASE + 12), 43 SSL_ERROR_POST_WARNING = (SSL_ERROR_BASE + 13), 44 /* error 13 is obsolete */ 45 SSL_ERROR_SSL2_DISABLED = (SSL_ERROR_BASE + 14), 46 /* error 14 is obsolete */ 47 SSL_ERROR_BAD_MAC_READ = (SSL_ERROR_BASE + 15), 48 /* 49 * Received an alert reporting what we did wrong. 50 * (two more alerts above, and many more below) 51 */ 52 SSL_ERROR_BAD_MAC_ALERT = (SSL_ERROR_BASE + 16), 53 SSL_ERROR_BAD_CERT_ALERT = (SSL_ERROR_BASE + 17), 54 SSL_ERROR_REVOKED_CERT_ALERT = (SSL_ERROR_BASE + 18), 55 SSL_ERROR_EXPIRED_CERT_ALERT = (SSL_ERROR_BASE + 19), 56 57 SSL_ERROR_SSL_DISABLED = (SSL_ERROR_BASE + 20), 58 SSL_ERROR_FORTEZZA_PQG = (SSL_ERROR_BASE + 21), 59 /* error 21 is obsolete */ 60 SSL_ERROR_UNKNOWN_CIPHER_SUITE = (SSL_ERROR_BASE + 22), 61 SSL_ERROR_NO_CIPHERS_SUPPORTED = (SSL_ERROR_BASE + 23), 62 SSL_ERROR_BAD_BLOCK_PADDING = (SSL_ERROR_BASE + 24), 63 SSL_ERROR_RX_RECORD_TOO_LONG = (SSL_ERROR_BASE + 25), 64 SSL_ERROR_TX_RECORD_TOO_LONG = (SSL_ERROR_BASE + 26), 65 /* 66 * Received a malformed (too long or short) SSL handshake. 67 */ 68 SSL_ERROR_RX_MALFORMED_HELLO_REQUEST = (SSL_ERROR_BASE + 27), 69 SSL_ERROR_RX_MALFORMED_CLIENT_HELLO = (SSL_ERROR_BASE + 28), 70 SSL_ERROR_RX_MALFORMED_SERVER_HELLO = (SSL_ERROR_BASE + 29), 71 SSL_ERROR_RX_MALFORMED_CERTIFICATE = (SSL_ERROR_BASE + 30), 72 SSL_ERROR_RX_MALFORMED_SERVER_KEY_EXCH = (SSL_ERROR_BASE + 31), 73 SSL_ERROR_RX_MALFORMED_CERT_REQUEST = (SSL_ERROR_BASE + 32), 74 SSL_ERROR_RX_MALFORMED_HELLO_DONE = (SSL_ERROR_BASE + 33), 75 SSL_ERROR_RX_MALFORMED_CERT_VERIFY = (SSL_ERROR_BASE + 34), 76 SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH = (SSL_ERROR_BASE + 35), 77 SSL_ERROR_RX_MALFORMED_FINISHED = (SSL_ERROR_BASE + 36), 78 /* 79 * Received a malformed (too long or short) SSL record. 80 */ 81 SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER = (SSL_ERROR_BASE + 37), 82 SSL_ERROR_RX_MALFORMED_ALERT = (SSL_ERROR_BASE + 38), 83 SSL_ERROR_RX_MALFORMED_HANDSHAKE = (SSL_ERROR_BASE + 39), 84 SSL_ERROR_RX_MALFORMED_APPLICATION_DATA = (SSL_ERROR_BASE + 40), 85 /* 86 * Received an SSL handshake that was inappropriate for the state we're in. 87 * E.g. Server received message from server, or wrong state in state machine. 88 */ 89 SSL_ERROR_RX_UNEXPECTED_HELLO_REQUEST = (SSL_ERROR_BASE + 41), 90 SSL_ERROR_RX_UNEXPECTED_CLIENT_HELLO = (SSL_ERROR_BASE + 42), 91 SSL_ERROR_RX_UNEXPECTED_SERVER_HELLO = (SSL_ERROR_BASE + 43), 92 SSL_ERROR_RX_UNEXPECTED_CERTIFICATE = (SSL_ERROR_BASE + 44), 93 SSL_ERROR_RX_UNEXPECTED_SERVER_KEY_EXCH = (SSL_ERROR_BASE + 45), 94 SSL_ERROR_RX_UNEXPECTED_CERT_REQUEST = (SSL_ERROR_BASE + 46), 95 SSL_ERROR_RX_UNEXPECTED_HELLO_DONE = (SSL_ERROR_BASE + 47), 96 SSL_ERROR_RX_UNEXPECTED_CERT_VERIFY = (SSL_ERROR_BASE + 48), 97 SSL_ERROR_RX_UNEXPECTED_CLIENT_KEY_EXCH = (SSL_ERROR_BASE + 49), 98 SSL_ERROR_RX_UNEXPECTED_FINISHED = (SSL_ERROR_BASE + 50), 99 /* 100 * Received an SSL record that was inappropriate for the state we're in. 101 */ 102 SSL_ERROR_RX_UNEXPECTED_CHANGE_CIPHER = (SSL_ERROR_BASE + 51), 103 SSL_ERROR_RX_UNEXPECTED_ALERT = (SSL_ERROR_BASE + 52), 104 SSL_ERROR_RX_UNEXPECTED_HANDSHAKE = (SSL_ERROR_BASE + 53), 105 SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA = (SSL_ERROR_BASE + 54), 106 /* 107 * Received record/message with unknown discriminant. 108 */ 109 SSL_ERROR_RX_UNKNOWN_RECORD_TYPE = (SSL_ERROR_BASE + 55), 110 SSL_ERROR_RX_UNKNOWN_HANDSHAKE = (SSL_ERROR_BASE + 56), 111 SSL_ERROR_RX_UNKNOWN_ALERT = (SSL_ERROR_BASE + 57), 112 /* 113 * Received an alert reporting what we did wrong. (more alerts above) 114 */ 115 SSL_ERROR_CLOSE_NOTIFY_ALERT = (SSL_ERROR_BASE + 58), 116 SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT = (SSL_ERROR_BASE + 59), 117 SSL_ERROR_DECOMPRESSION_FAILURE_ALERT = (SSL_ERROR_BASE + 60), 118 SSL_ERROR_HANDSHAKE_FAILURE_ALERT = (SSL_ERROR_BASE + 61), 119 SSL_ERROR_ILLEGAL_PARAMETER_ALERT = (SSL_ERROR_BASE + 62), 120 SSL_ERROR_UNSUPPORTED_CERT_ALERT = (SSL_ERROR_BASE + 63), 121 SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT = (SSL_ERROR_BASE + 64), 122 123 SSL_ERROR_GENERATE_RANDOM_FAILURE = (SSL_ERROR_BASE + 65), 124 SSL_ERROR_SIGN_HASHES_FAILURE = (SSL_ERROR_BASE + 66), 125 SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE = (SSL_ERROR_BASE + 67), 126 SSL_ERROR_SERVER_KEY_EXCHANGE_FAILURE = (SSL_ERROR_BASE + 68), 127 SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE = (SSL_ERROR_BASE + 69), 128 129 SSL_ERROR_ENCRYPTION_FAILURE = (SSL_ERROR_BASE + 70), 130 SSL_ERROR_DECRYPTION_FAILURE = (SSL_ERROR_BASE + 71), 131 /* error 71 is obsolete */ 132 SSL_ERROR_SOCKET_WRITE_FAILURE = (SSL_ERROR_BASE + 72), 133 134 SSL_ERROR_MD5_DIGEST_FAILURE = (SSL_ERROR_BASE + 73), 135 SSL_ERROR_SHA_DIGEST_FAILURE = (SSL_ERROR_BASE + 74), 136 SSL_ERROR_MAC_COMPUTATION_FAILURE = (SSL_ERROR_BASE + 75), 137 SSL_ERROR_SYM_KEY_CONTEXT_FAILURE = (SSL_ERROR_BASE + 76), 138 SSL_ERROR_SYM_KEY_UNWRAP_FAILURE = (SSL_ERROR_BASE + 77), 139 SSL_ERROR_PUB_KEY_SIZE_LIMIT_EXCEEDED = (SSL_ERROR_BASE + 78), 140 /* error 78 is obsolete */ 141 SSL_ERROR_IV_PARAM_FAILURE = (SSL_ERROR_BASE + 79), 142 SSL_ERROR_INIT_CIPHER_SUITE_FAILURE = (SSL_ERROR_BASE + 80), 143 SSL_ERROR_SESSION_KEY_GEN_FAILURE = (SSL_ERROR_BASE + 81), 144 SSL_ERROR_NO_SERVER_KEY_FOR_ALG = (SSL_ERROR_BASE + 82), 145 SSL_ERROR_TOKEN_INSERTION_REMOVAL = (SSL_ERROR_BASE + 83), 146 SSL_ERROR_TOKEN_SLOT_NOT_FOUND = (SSL_ERROR_BASE + 84), 147 SSL_ERROR_NO_COMPRESSION_OVERLAP = (SSL_ERROR_BASE + 85), 148 SSL_ERROR_HANDSHAKE_NOT_COMPLETED = (SSL_ERROR_BASE + 86), 149 SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE = (SSL_ERROR_BASE + 87), 150 SSL_ERROR_CERT_KEA_MISMATCH = (SSL_ERROR_BASE + 88), 151 SSL_ERROR_NO_TRUSTED_SSL_CLIENT_CA = (SSL_ERROR_BASE + 89), 152 /* error 89 is obsolete */ 153 SSL_ERROR_SESSION_NOT_FOUND = (SSL_ERROR_BASE + 90), 154 155 SSL_ERROR_DECRYPTION_FAILED_ALERT = (SSL_ERROR_BASE + 91), 156 SSL_ERROR_RECORD_OVERFLOW_ALERT = (SSL_ERROR_BASE + 92), 157 SSL_ERROR_UNKNOWN_CA_ALERT = (SSL_ERROR_BASE + 93), 158 SSL_ERROR_ACCESS_DENIED_ALERT = (SSL_ERROR_BASE + 94), 159 SSL_ERROR_DECODE_ERROR_ALERT = (SSL_ERROR_BASE + 95), 160 SSL_ERROR_DECRYPT_ERROR_ALERT = (SSL_ERROR_BASE + 96), 161 SSL_ERROR_EXPORT_RESTRICTION_ALERT = (SSL_ERROR_BASE + 97), 162 SSL_ERROR_PROTOCOL_VERSION_ALERT = (SSL_ERROR_BASE + 98), 163 SSL_ERROR_INSUFFICIENT_SECURITY_ALERT = (SSL_ERROR_BASE + 99), 164 SSL_ERROR_INTERNAL_ERROR_ALERT = (SSL_ERROR_BASE + 100), 165 SSL_ERROR_USER_CANCELED_ALERT = (SSL_ERROR_BASE + 101), 166 SSL_ERROR_NO_RENEGOTIATION_ALERT = (SSL_ERROR_BASE + 102), 167 168 SSL_ERROR_SERVER_CACHE_NOT_CONFIGURED = (SSL_ERROR_BASE + 103), 169 170 SSL_ERROR_UNSUPPORTED_EXTENSION_ALERT = (SSL_ERROR_BASE + 104), 171 SSL_ERROR_CERTIFICATE_UNOBTAINABLE_ALERT = (SSL_ERROR_BASE + 105), 172 SSL_ERROR_UNRECOGNIZED_NAME_ALERT = (SSL_ERROR_BASE + 106), 173 SSL_ERROR_BAD_CERT_STATUS_RESPONSE_ALERT = (SSL_ERROR_BASE + 107), 174 SSL_ERROR_BAD_CERT_HASH_VALUE_ALERT = (SSL_ERROR_BASE + 108), 175 176 SSL_ERROR_RX_UNEXPECTED_NEW_SESSION_TICKET = (SSL_ERROR_BASE + 109), 177 SSL_ERROR_RX_MALFORMED_NEW_SESSION_TICKET = (SSL_ERROR_BASE + 110), 178 179 SSL_ERROR_DECOMPRESSION_FAILURE = (SSL_ERROR_BASE + 111), 180 SSL_ERROR_RENEGOTIATION_NOT_ALLOWED = (SSL_ERROR_BASE + 112), 181 SSL_ERROR_UNSAFE_NEGOTIATION = (SSL_ERROR_BASE + 113), 182 183 SSL_ERROR_RX_UNEXPECTED_UNCOMPRESSED_RECORD = (SSL_ERROR_BASE + 114), 184 185 SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY = (SSL_ERROR_BASE + 115), 186 187 SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID = (SSL_ERROR_BASE + 116), 188 189 SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_SSL2 = (SSL_ERROR_BASE + 117), 190 /* error 117 is obsolete */ 191 SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_SERVERS = (SSL_ERROR_BASE + 118), 192 SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_CLIENTS = (SSL_ERROR_BASE + 119), 193 194 SSL_ERROR_INVALID_VERSION_RANGE = (SSL_ERROR_BASE + 120), 195 SSL_ERROR_CIPHER_DISALLOWED_FOR_VERSION = (SSL_ERROR_BASE + 121), 196 197 SSL_ERROR_RX_MALFORMED_HELLO_VERIFY_REQUEST = (SSL_ERROR_BASE + 122), 198 SSL_ERROR_RX_UNEXPECTED_HELLO_VERIFY_REQUEST = (SSL_ERROR_BASE + 123), 199 200 SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_VERSION = (SSL_ERROR_BASE + 124), 201 202 SSL_ERROR_RX_UNEXPECTED_CERT_STATUS = (SSL_ERROR_BASE + 125), 203 204 SSL_ERROR_UNSUPPORTED_HASH_ALGORITHM = (SSL_ERROR_BASE + 126), 205 SSL_ERROR_DIGEST_FAILURE = (SSL_ERROR_BASE + 127), 206 SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM = (SSL_ERROR_BASE + 128), 207 208 SSL_ERROR_NEXT_PROTOCOL_NO_CALLBACK = (SSL_ERROR_BASE + 129), 209 SSL_ERROR_NEXT_PROTOCOL_NO_PROTOCOL = (SSL_ERROR_BASE + 130), 210 211 SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT = (SSL_ERROR_BASE + 131), 212 213 SSL_ERROR_WEAK_SERVER_CERT_KEY = (SSL_ERROR_BASE + 132), 214 215 SSL_ERROR_RX_SHORT_DTLS_READ = (SSL_ERROR_BASE + 133), 216 217 SSL_ERROR_NO_SUPPORTED_SIGNATURE_ALGORITHM = (SSL_ERROR_BASE + 134), 218 SSL_ERROR_UNSUPPORTED_SIGNATURE_ALGORITHM = (SSL_ERROR_BASE + 135), 219 220 SSL_ERROR_MISSING_EXTENDED_MASTER_SECRET = (SSL_ERROR_BASE + 136), 221 SSL_ERROR_UNEXPECTED_EXTENDED_MASTER_SECRET = (SSL_ERROR_BASE + 137), 222 223 SSL_ERROR_RX_MALFORMED_KEY_SHARE = (SSL_ERROR_BASE + 138), 224 SSL_ERROR_MISSING_KEY_SHARE = (SSL_ERROR_BASE + 139), 225 SSL_ERROR_RX_MALFORMED_ECDHE_KEY_SHARE = (SSL_ERROR_BASE + 140), 226 SSL_ERROR_RX_MALFORMED_DHE_KEY_SHARE = (SSL_ERROR_BASE + 141), 227 228 SSL_ERROR_RX_UNEXPECTED_ENCRYPTED_EXTENSIONS = (SSL_ERROR_BASE + 142), 229 SSL_ERROR_MISSING_EXTENSION_ALERT = (SSL_ERROR_BASE + 143), 230 231 SSL_ERROR_KEY_EXCHANGE_FAILURE = (SSL_ERROR_BASE + 144), 232 SSL_ERROR_EXTENSION_DISALLOWED_FOR_VERSION = (SSL_ERROR_BASE + 145), 233 SSL_ERROR_RX_MALFORMED_ENCRYPTED_EXTENSIONS = (SSL_ERROR_BASE + 146), 234 SSL_ERROR_MALFORMED_PRE_SHARED_KEY = (SSL_ERROR_BASE + 147), 235 SSL_ERROR_MALFORMED_EARLY_DATA = (SSL_ERROR_BASE + 148), 236 SSL_ERROR_END_OF_EARLY_DATA_ALERT = (SSL_ERROR_BASE + 149), 237 /* error 149 is obsolete */ 238 SSL_ERROR_MISSING_ALPN_EXTENSION = (SSL_ERROR_BASE + 150), 239 SSL_ERROR_RX_UNEXPECTED_EXTENSION = (SSL_ERROR_BASE + 151), 240 SSL_ERROR_MISSING_SUPPORTED_GROUPS_EXTENSION = (SSL_ERROR_BASE + 152), 241 SSL_ERROR_TOO_MANY_RECORDS = (SSL_ERROR_BASE + 153), 242 SSL_ERROR_RX_UNEXPECTED_HELLO_RETRY_REQUEST = (SSL_ERROR_BASE + 154), 243 SSL_ERROR_RX_MALFORMED_HELLO_RETRY_REQUEST = (SSL_ERROR_BASE + 155), 244 SSL_ERROR_BAD_2ND_CLIENT_HELLO = (SSL_ERROR_BASE + 156), 245 SSL_ERROR_MISSING_SIGNATURE_ALGORITHMS_EXTENSION = (SSL_ERROR_BASE + 157), 246 SSL_ERROR_MALFORMED_PSK_KEY_EXCHANGE_MODES = (SSL_ERROR_BASE + 158), 247 SSL_ERROR_MISSING_PSK_KEY_EXCHANGE_MODES = (SSL_ERROR_BASE + 159), 248 SSL_ERROR_DOWNGRADE_WITH_EARLY_DATA = (SSL_ERROR_BASE + 160), 249 SSL_ERROR_TOO_MUCH_EARLY_DATA = (SSL_ERROR_BASE + 161), 250 SSL_ERROR_RX_UNEXPECTED_END_OF_EARLY_DATA = (SSL_ERROR_BASE + 162), 251 SSL_ERROR_RX_MALFORMED_END_OF_EARLY_DATA = (SSL_ERROR_BASE + 163), 252 253 SSL_ERROR_UNSUPPORTED_EXPERIMENTAL_API = (SSL_ERROR_BASE + 164), 254 255 SSL_ERROR_APPLICATION_ABORT = (SSL_ERROR_BASE + 165), 256 SSL_ERROR_APP_CALLBACK_ERROR = (SSL_ERROR_BASE + 166), 257 SSL_ERROR_NO_TIMERS_FOUND = (SSL_ERROR_BASE + 167), 258 SSL_ERROR_MISSING_COOKIE_EXTENSION = (SSL_ERROR_BASE + 168), 259 260 SSL_ERROR_RX_UNEXPECTED_KEY_UPDATE = (SSL_ERROR_BASE + 169), 261 SSL_ERROR_RX_MALFORMED_KEY_UPDATE = (SSL_ERROR_BASE + 170), 262 SSL_ERROR_TOO_MANY_KEY_UPDATES = (SSL_ERROR_BASE + 171), 263 SSL_ERROR_HANDSHAKE_FAILED = (SSL_ERROR_BASE + 172), 264 SSL_ERROR_BAD_RESUMPTION_TOKEN_ERROR = (SSL_ERROR_BASE + 173), 265 SSL_ERROR_RX_MALFORMED_DTLS_ACK = (SSL_ERROR_BASE + 174), 266 SSL_ERROR_DH_KEY_TOO_LONG = (SSL_ERROR_BASE + 175), 267 SSL_ERROR_RX_MALFORMED_ESNI_KEYS = (SSL_ERROR_BASE + 176), 268 SSL_ERROR_RX_MALFORMED_ESNI_EXTENSION = (SSL_ERROR_BASE + 177), 269 SSL_ERROR_MISSING_ESNI_EXTENSION = (SSL_ERROR_BASE + 178), 270 SSL_ERROR_RX_UNEXPECTED_RECORD_TYPE = (SSL_ERROR_BASE + 179), 271 SSL_ERROR_MISSING_POST_HANDSHAKE_AUTH_EXTENSION = (SSL_ERROR_BASE + 180), 272 SSL_ERROR_RX_CERTIFICATE_REQUIRED_ALERT = (SSL_ERROR_BASE + 181), 273 SSL_ERROR_DC_CERT_VERIFY_ALG_MISMATCH = (SSL_ERROR_BASE + 182), 274 SSL_ERROR_DC_BAD_SIGNATURE = (SSL_ERROR_BASE + 183), 275 SSL_ERROR_DC_INVALID_KEY_USAGE = (SSL_ERROR_BASE + 184), 276 SSL_ERROR_DC_EXPIRED = (SSL_ERROR_BASE + 185), 277 SSL_ERROR_DC_INAPPROPRIATE_VALIDITY_PERIOD = (SSL_ERROR_BASE + 186), 278 SSL_ERROR_END_OF_LIST /* let the c compiler determine the value of this. */ 279 } SSLErrorCodes; 280 #endif /* NO_SECURITY_ERROR_ENUM */ 281 282 /* clang-format on */ 283 284 #endif /* __SSL_ERR_H_ */ 285