Home | History | Annotate | Download | only in ssl
      1 /*
      2  * Enumeration of all SSL-specific error codes.
      3  *
      4  * ***** BEGIN LICENSE BLOCK *****
      5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
      6  *
      7  * The contents of this file are subject to the Mozilla Public License Version
      8  * 1.1 (the "License"); you may not use this file except in compliance with
      9  * the License. You may obtain a copy of the License at
     10  * http://www.mozilla.org/MPL/
     11  *
     12  * Software distributed under the License is distributed on an "AS IS" basis,
     13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     14  * for the specific language governing rights and limitations under the
     15  * License.
     16  *
     17  * The Original Code is the Netscape security libraries.
     18  *
     19  * The Initial Developer of the Original Code is
     20  * Netscape Communications Corporation.
     21  * Portions created by the Initial Developer are Copyright (C) 1994-2000
     22  * the Initial Developer. All Rights Reserved.
     23  *
     24  * Contributor(s):
     25  *
     26  * Alternatively, the contents of this file may be used under the terms of
     27  * either the GNU General Public License Version 2 or later (the "GPL"), or
     28  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     29  * in which case the provisions of the GPL or the LGPL are applicable instead
     30  * of those above. If you wish to allow use of your version of this file only
     31  * under the terms of either the GPL or the LGPL, and not to allow others to
     32  * use your version of this file under the terms of the MPL, indicate your
     33  * decision by deleting the provisions above and replace them with the notice
     34  * and other provisions required by the GPL or the LGPL. If you do not delete
     35  * the provisions above, a recipient may use your version of this file under
     36  * the terms of any one of the MPL, the GPL or the LGPL.
     37  *
     38  * ***** END LICENSE BLOCK ***** */
     39 /* $Id: sslerr.h,v 1.8 2009/11/06 20:11:28 nelson%bolyard.com Exp $ */
     40 #ifndef __SSL_ERR_H_
     41 #define __SSL_ERR_H_
     42 
     43 
     44 #define SSL_ERROR_BASE				(-0x3000)
     45 #define SSL_ERROR_LIMIT				(SSL_ERROR_BASE + 1000)
     46 
     47 #define IS_SSL_ERROR(code) \
     48     (((code) >= SSL_ERROR_BASE) && ((code) < SSL_ERROR_LIMIT))
     49 
     50 #ifndef NO_SECURITY_ERROR_ENUM
     51 typedef enum {
     52 SSL_ERROR_EXPORT_ONLY_SERVER 		= (SSL_ERROR_BASE +  0),
     53 SSL_ERROR_US_ONLY_SERVER 		= (SSL_ERROR_BASE +  1),
     54 SSL_ERROR_NO_CYPHER_OVERLAP 		= (SSL_ERROR_BASE +  2),
     55 /*
     56  * Received an alert reporting what we did wrong.  (more alerts below)
     57  */
     58 SSL_ERROR_NO_CERTIFICATE /*_ALERT */	= (SSL_ERROR_BASE +  3),
     59 SSL_ERROR_BAD_CERTIFICATE            	= (SSL_ERROR_BASE +  4),
     60 					/* error 5 is obsolete */
     61 SSL_ERROR_BAD_CLIENT 			= (SSL_ERROR_BASE +  6),
     62 SSL_ERROR_BAD_SERVER 			= (SSL_ERROR_BASE +  7),
     63 SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE	= (SSL_ERROR_BASE +  8),
     64 SSL_ERROR_UNSUPPORTED_VERSION 		= (SSL_ERROR_BASE +  9),
     65 					/* error 10 is obsolete */
     66 SSL_ERROR_WRONG_CERTIFICATE		= (SSL_ERROR_BASE + 11),
     67 SSL_ERROR_BAD_CERT_DOMAIN 		= (SSL_ERROR_BASE + 12),
     68 SSL_ERROR_POST_WARNING 			= (SSL_ERROR_BASE + 13),
     69 SSL_ERROR_SSL2_DISABLED 		= (SSL_ERROR_BASE + 14),
     70 SSL_ERROR_BAD_MAC_READ 			= (SSL_ERROR_BASE + 15),
     71 /*
     72  * Received an alert reporting what we did wrong.
     73  * (two more alerts above, and many more below)
     74  */
     75 SSL_ERROR_BAD_MAC_ALERT 		= (SSL_ERROR_BASE + 16),
     76 SSL_ERROR_BAD_CERT_ALERT                = (SSL_ERROR_BASE + 17),
     77 SSL_ERROR_REVOKED_CERT_ALERT 		= (SSL_ERROR_BASE + 18),
     78 SSL_ERROR_EXPIRED_CERT_ALERT 		= (SSL_ERROR_BASE + 19),
     79 
     80 SSL_ERROR_SSL_DISABLED 			= (SSL_ERROR_BASE + 20),
     81 SSL_ERROR_FORTEZZA_PQG 			= (SSL_ERROR_BASE + 21),
     82 SSL_ERROR_UNKNOWN_CIPHER_SUITE		= (SSL_ERROR_BASE + 22),
     83 SSL_ERROR_NO_CIPHERS_SUPPORTED		= (SSL_ERROR_BASE + 23),
     84 SSL_ERROR_BAD_BLOCK_PADDING		= (SSL_ERROR_BASE + 24),
     85 SSL_ERROR_RX_RECORD_TOO_LONG		= (SSL_ERROR_BASE + 25),
     86 SSL_ERROR_TX_RECORD_TOO_LONG		= (SSL_ERROR_BASE + 26),
     87 /*
     88  * Received a malformed (too long or short) SSL handshake.
     89  */
     90 SSL_ERROR_RX_MALFORMED_HELLO_REQUEST	= (SSL_ERROR_BASE + 27),
     91 SSL_ERROR_RX_MALFORMED_CLIENT_HELLO	= (SSL_ERROR_BASE + 28),
     92 SSL_ERROR_RX_MALFORMED_SERVER_HELLO	= (SSL_ERROR_BASE + 29),
     93 SSL_ERROR_RX_MALFORMED_CERTIFICATE	= (SSL_ERROR_BASE + 30),
     94 SSL_ERROR_RX_MALFORMED_SERVER_KEY_EXCH	= (SSL_ERROR_BASE + 31),
     95 SSL_ERROR_RX_MALFORMED_CERT_REQUEST	= (SSL_ERROR_BASE + 32),
     96 SSL_ERROR_RX_MALFORMED_HELLO_DONE	= (SSL_ERROR_BASE + 33),
     97 SSL_ERROR_RX_MALFORMED_CERT_VERIFY	= (SSL_ERROR_BASE + 34),
     98 SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH	= (SSL_ERROR_BASE + 35),
     99 SSL_ERROR_RX_MALFORMED_FINISHED 	= (SSL_ERROR_BASE + 36),
    100 /*
    101  * Received a malformed (too long or short) SSL record.
    102  */
    103 SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER 	= (SSL_ERROR_BASE + 37),
    104 SSL_ERROR_RX_MALFORMED_ALERT	 	= (SSL_ERROR_BASE + 38),
    105 SSL_ERROR_RX_MALFORMED_HANDSHAKE 	= (SSL_ERROR_BASE + 39),
    106 SSL_ERROR_RX_MALFORMED_APPLICATION_DATA	= (SSL_ERROR_BASE + 40),
    107 /*
    108  * Received an SSL handshake that was inappropriate for the state we're in.
    109  * E.g. Server received message from server, or wrong state in state machine.
    110  */
    111 SSL_ERROR_RX_UNEXPECTED_HELLO_REQUEST	= (SSL_ERROR_BASE + 41),
    112 SSL_ERROR_RX_UNEXPECTED_CLIENT_HELLO	= (SSL_ERROR_BASE + 42),
    113 SSL_ERROR_RX_UNEXPECTED_SERVER_HELLO	= (SSL_ERROR_BASE + 43),
    114 SSL_ERROR_RX_UNEXPECTED_CERTIFICATE	= (SSL_ERROR_BASE + 44),
    115 SSL_ERROR_RX_UNEXPECTED_SERVER_KEY_EXCH	= (SSL_ERROR_BASE + 45),
    116 SSL_ERROR_RX_UNEXPECTED_CERT_REQUEST	= (SSL_ERROR_BASE + 46),
    117 SSL_ERROR_RX_UNEXPECTED_HELLO_DONE	= (SSL_ERROR_BASE + 47),
    118 SSL_ERROR_RX_UNEXPECTED_CERT_VERIFY	= (SSL_ERROR_BASE + 48),
    119 SSL_ERROR_RX_UNEXPECTED_CLIENT_KEY_EXCH	= (SSL_ERROR_BASE + 49),
    120 SSL_ERROR_RX_UNEXPECTED_FINISHED 	= (SSL_ERROR_BASE + 50),
    121 /*
    122  * Received an SSL record that was inappropriate for the state we're in.
    123  */
    124 SSL_ERROR_RX_UNEXPECTED_CHANGE_CIPHER 	= (SSL_ERROR_BASE + 51),
    125 SSL_ERROR_RX_UNEXPECTED_ALERT	 	= (SSL_ERROR_BASE + 52),
    126 SSL_ERROR_RX_UNEXPECTED_HANDSHAKE 	= (SSL_ERROR_BASE + 53),
    127 SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA= (SSL_ERROR_BASE + 54),
    128 /*
    129  * Received record/message with unknown discriminant.
    130  */
    131 SSL_ERROR_RX_UNKNOWN_RECORD_TYPE	= (SSL_ERROR_BASE + 55),
    132 SSL_ERROR_RX_UNKNOWN_HANDSHAKE 		= (SSL_ERROR_BASE + 56),
    133 SSL_ERROR_RX_UNKNOWN_ALERT 		= (SSL_ERROR_BASE + 57),
    134 /*
    135  * Received an alert reporting what we did wrong.  (more alerts above)
    136  */
    137 SSL_ERROR_CLOSE_NOTIFY_ALERT 		= (SSL_ERROR_BASE + 58),
    138 SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT 	= (SSL_ERROR_BASE + 59),
    139 SSL_ERROR_DECOMPRESSION_FAILURE_ALERT 	= (SSL_ERROR_BASE + 60),
    140 SSL_ERROR_HANDSHAKE_FAILURE_ALERT 	= (SSL_ERROR_BASE + 61),
    141 SSL_ERROR_ILLEGAL_PARAMETER_ALERT 	= (SSL_ERROR_BASE + 62),
    142 SSL_ERROR_UNSUPPORTED_CERT_ALERT 	= (SSL_ERROR_BASE + 63),
    143 SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT 	= (SSL_ERROR_BASE + 64),
    144 
    145 SSL_ERROR_GENERATE_RANDOM_FAILURE	= (SSL_ERROR_BASE + 65),
    146 SSL_ERROR_SIGN_HASHES_FAILURE		= (SSL_ERROR_BASE + 66),
    147 SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE	= (SSL_ERROR_BASE + 67),
    148 SSL_ERROR_SERVER_KEY_EXCHANGE_FAILURE	= (SSL_ERROR_BASE + 68),
    149 SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE	= (SSL_ERROR_BASE + 69),
    150 
    151 SSL_ERROR_ENCRYPTION_FAILURE		= (SSL_ERROR_BASE + 70),
    152 SSL_ERROR_DECRYPTION_FAILURE		= (SSL_ERROR_BASE + 71),
    153 SSL_ERROR_SOCKET_WRITE_FAILURE		= (SSL_ERROR_BASE + 72),
    154 
    155 SSL_ERROR_MD5_DIGEST_FAILURE		= (SSL_ERROR_BASE + 73),
    156 SSL_ERROR_SHA_DIGEST_FAILURE		= (SSL_ERROR_BASE + 74),
    157 SSL_ERROR_MAC_COMPUTATION_FAILURE	= (SSL_ERROR_BASE + 75),
    158 SSL_ERROR_SYM_KEY_CONTEXT_FAILURE	= (SSL_ERROR_BASE + 76),
    159 SSL_ERROR_SYM_KEY_UNWRAP_FAILURE	= (SSL_ERROR_BASE + 77),
    160 SSL_ERROR_PUB_KEY_SIZE_LIMIT_EXCEEDED	= (SSL_ERROR_BASE + 78),
    161 SSL_ERROR_IV_PARAM_FAILURE		= (SSL_ERROR_BASE + 79),
    162 SSL_ERROR_INIT_CIPHER_SUITE_FAILURE	= (SSL_ERROR_BASE + 80),
    163 SSL_ERROR_SESSION_KEY_GEN_FAILURE	= (SSL_ERROR_BASE + 81),
    164 SSL_ERROR_NO_SERVER_KEY_FOR_ALG		= (SSL_ERROR_BASE + 82),
    165 SSL_ERROR_TOKEN_INSERTION_REMOVAL	= (SSL_ERROR_BASE + 83),
    166 SSL_ERROR_TOKEN_SLOT_NOT_FOUND		= (SSL_ERROR_BASE + 84),
    167 SSL_ERROR_NO_COMPRESSION_OVERLAP	= (SSL_ERROR_BASE + 85),
    168 SSL_ERROR_HANDSHAKE_NOT_COMPLETED	= (SSL_ERROR_BASE + 86),
    169 SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE	= (SSL_ERROR_BASE + 87),
    170 SSL_ERROR_CERT_KEA_MISMATCH		= (SSL_ERROR_BASE + 88),
    171 SSL_ERROR_NO_TRUSTED_SSL_CLIENT_CA	= (SSL_ERROR_BASE + 89),
    172 SSL_ERROR_SESSION_NOT_FOUND		= (SSL_ERROR_BASE + 90),
    173 
    174 SSL_ERROR_DECRYPTION_FAILED_ALERT	= (SSL_ERROR_BASE + 91),
    175 SSL_ERROR_RECORD_OVERFLOW_ALERT		= (SSL_ERROR_BASE + 92),
    176 SSL_ERROR_UNKNOWN_CA_ALERT		= (SSL_ERROR_BASE + 93),
    177 SSL_ERROR_ACCESS_DENIED_ALERT		= (SSL_ERROR_BASE + 94),
    178 SSL_ERROR_DECODE_ERROR_ALERT		= (SSL_ERROR_BASE + 95),
    179 SSL_ERROR_DECRYPT_ERROR_ALERT		= (SSL_ERROR_BASE + 96),
    180 SSL_ERROR_EXPORT_RESTRICTION_ALERT	= (SSL_ERROR_BASE + 97),
    181 SSL_ERROR_PROTOCOL_VERSION_ALERT	= (SSL_ERROR_BASE + 98),
    182 SSL_ERROR_INSUFFICIENT_SECURITY_ALERT	= (SSL_ERROR_BASE + 99),
    183 SSL_ERROR_INTERNAL_ERROR_ALERT		= (SSL_ERROR_BASE + 100),
    184 SSL_ERROR_USER_CANCELED_ALERT		= (SSL_ERROR_BASE + 101),
    185 SSL_ERROR_NO_RENEGOTIATION_ALERT	= (SSL_ERROR_BASE + 102),
    186 
    187 SSL_ERROR_SERVER_CACHE_NOT_CONFIGURED	= (SSL_ERROR_BASE + 103),
    188 
    189 SSL_ERROR_UNSUPPORTED_EXTENSION_ALERT		= (SSL_ERROR_BASE + 104),
    190 SSL_ERROR_CERTIFICATE_UNOBTAINABLE_ALERT	= (SSL_ERROR_BASE + 105),
    191 SSL_ERROR_UNRECOGNIZED_NAME_ALERT		= (SSL_ERROR_BASE + 106),
    192 SSL_ERROR_BAD_CERT_STATUS_RESPONSE_ALERT	= (SSL_ERROR_BASE + 107),
    193 SSL_ERROR_BAD_CERT_HASH_VALUE_ALERT		= (SSL_ERROR_BASE + 108),
    194 
    195 SSL_ERROR_RX_UNEXPECTED_NEW_SESSION_TICKET = (SSL_ERROR_BASE + 109),
    196 SSL_ERROR_RX_MALFORMED_NEW_SESSION_TICKET  = (SSL_ERROR_BASE + 110),
    197 
    198 SSL_ERROR_DECOMPRESSION_FAILURE		= (SSL_ERROR_BASE + 111),
    199 SSL_ERROR_RENEGOTIATION_NOT_ALLOWED     = (SSL_ERROR_BASE + 112),
    200 
    201 SSL_ERROR_END_OF_LIST	/* let the c compiler determine the value of this. */
    202 } SSLErrorCodes;
    203 #endif /* NO_SECURITY_ERROR_ENUM */
    204 
    205 #endif /* __SSL_ERR_H_ */
    206