1 /* $OpenBSD: ssl2.h,v 1.12 2014/12/14 15:30:50 jsing Exp $ */ 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 * All rights reserved. 4 * 5 * This package is an SSL implementation written 6 * by Eric Young (eay@cryptsoft.com). 7 * The implementation was written so as to conform with Netscapes SSL. 8 * 9 * This library is free for commercial and non-commercial use as core.stdc.config.c_long as 10 * the following conditions are aheared to. The following conditions 11 * apply to all code found in this distribution, be it the RC4, RSA, 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13 * included with this distribution is covered by the same copyright terms 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15 * 16 * Copyright remains Eric Young's, and as such any Copyright notices in 17 * the code are not to be removed. 18 * If this package is used in a product, Eric Young should be given attribution 19 * as the author of the parts of the library used. 20 * This can be in the form of a textual message at program startup or 21 * in documentation (online or textual) provided with the package. 22 * 23 * Redistribution and use in source and binary forms, with or without 24 * modification, are permitted provided that the following conditions 25 * are met: 26 * 1. Redistributions of source code must retain the copyright 27 * notice, this list of conditions and the following disclaimer. 28 * 2. Redistributions in binary form must reproduce the above copyright 29 * notice, this list of conditions and the following disclaimer in the 30 * documentation and/or other materials provided with the distribution. 31 * 3. All advertising materials mentioning features or use of this software 32 * must display the following acknowledgement: 33 * "This product includes cryptographic software written by 34 * Eric Young (eay@cryptsoft.com)" 35 * The word 'cryptographic' can be left out if the rouines from the library 36 * being used are not cryptographic related :-). 37 * 4. If you include any Windows specific code (or a derivative thereof) from 38 * the apps directory (application code) you must include an acknowledgement: 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40 * 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51 * SUCH DAMAGE. 52 * 53 * The licence and distribution terms for any publically available version or 54 * derivative of this code cannot be changed. i.e. this code cannot simply be 55 * copied and put under another distribution licence 56 * [including the GNU Public Licence.] 57 */ 58 module libressl_d.openssl.ssl2; 59 60 61 private static import core.stdc.config; 62 63 extern (C): 64 nothrow @nogc: 65 66 /* Protocol Version Codes */ 67 enum SSL2_VERSION = 0x0002; 68 enum SSL2_VERSION_MAJOR = 0x00; 69 enum SSL2_VERSION_MINOR = 0x02; 70 /* enum SSL2_CLIENT_VERSION = 0x0002; */ 71 /* enum SSL2_SERVER_VERSION = 0x0002; */ 72 73 /* Protocol Message Codes */ 74 enum SSL2_MT_ERROR = 0; 75 enum SSL2_MT_CLIENT_HELLO = 1; 76 enum SSL2_MT_CLIENT_MASTER_KEY = 2; 77 enum SSL2_MT_CLIENT_FINISHED = 3; 78 enum SSL2_MT_SERVER_HELLO = 4; 79 enum SSL2_MT_SERVER_VERIFY = 5; 80 enum SSL2_MT_SERVER_FINISHED = 6; 81 enum SSL2_MT_REQUEST_CERTIFICATE = 7; 82 enum SSL2_MT_CLIENT_CERTIFICATE = 8; 83 84 /* Error Message Codes */ 85 enum SSL2_PE_UNDEFINED_ERROR = 0x0000; 86 enum SSL2_PE_NO_CIPHER = 0x0001; 87 enum SSL2_PE_NO_CERTIFICATE = 0x0002; 88 enum SSL2_PE_BAD_CERTIFICATE = 0x0004; 89 enum SSL2_PE_UNSUPPORTED_CERTIFICATE_TYPE = 0x0006; 90 91 /* Cipher Kind Values */ 92 93 /** 94 * v3 95 */ 96 enum SSL2_CK_NULL_WITH_MD5 = 0x02000000; 97 98 enum SSL2_CK_RC4_128_WITH_MD5 = 0x02010080; 99 enum SSL2_CK_RC4_128_EXPORT40_WITH_MD5 = 0x02020080; 100 enum SSL2_CK_RC2_128_CBC_WITH_MD5 = 0x02030080; 101 enum SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5 = 0x02040080; 102 enum SSL2_CK_IDEA_128_CBC_WITH_MD5 = 0x02050080; 103 enum SSL2_CK_DES_64_CBC_WITH_MD5 = 0x02060040; 104 105 /** 106 * v3 107 */ 108 enum SSL2_CK_DES_64_CBC_WITH_SHA = 0x02060140; 109 110 enum SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 = 0x020700C0; 111 112 /** 113 * v3 114 */ 115 enum SSL2_CK_DES_192_EDE3_CBC_WITH_SHA = 0x020701C0; 116 117 /** 118 * MS hack 119 */ 120 enum SSL2_CK_RC4_64_WITH_MD5 = 0x02080080; 121 122 /** 123 * SSLeay 124 */ 125 enum SSL2_CK_DES_64_CFB64_WITH_MD5_1 = 0x02FF0800; 126 127 ///Ditto 128 enum SSL2_CK_NULL = 0x02FF0810; 129 130 enum SSL2_TXT_DES_64_CFB64_WITH_MD5_1 = "DES-CFB-M1"; 131 enum SSL2_TXT_NULL_WITH_MD5 = "null-MD5"; 132 enum SSL2_TXT_RC4_128_WITH_MD5 = "RC4-MD5"; 133 enum SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 = "EXP-RC4-MD5"; 134 enum SSL2_TXT_RC2_128_CBC_WITH_MD5 = "RC2-CBC-MD5"; 135 enum SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 = "EXP-RC2-CBC-MD5"; 136 enum SSL2_TXT_IDEA_128_CBC_WITH_MD5 = "IDEA-CBC-MD5"; 137 enum SSL2_TXT_DES_64_CBC_WITH_MD5 = "DES-CBC-MD5"; 138 enum SSL2_TXT_DES_64_CBC_WITH_SHA = "DES-CBC-SHA"; 139 enum SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 = "DES-CBC3-MD5"; 140 enum SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA = "DES-CBC3-SHA"; 141 enum SSL2_TXT_RC4_64_WITH_MD5 = "RC4-64-MD5"; 142 143 enum SSL2_TXT_NULL = "null"; 144 145 /* Flags for the SSL_CIPHER.algorithm2 field */ 146 enum SSL2_CF_5_BYTE_ENC = 0x01; 147 enum SSL2_CF_8_BYTE_ENC = 0x02; 148 149 /* Certificate Type Codes */ 150 enum SSL2_CT_X509_CERTIFICATE = 0x01; 151 152 /* Authentication Type Code */ 153 enum SSL2_AT_MD5_WITH_RSA_ENCRYPTION = 0x01; 154 155 enum SSL2_MAX_SSL_SESSION_ID_LENGTH = 32; 156 157 /* Upper/Lower Bounds */ 158 enum SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS = 256; 159 160 /** 161 * 2^15-1 162 */ 163 enum SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER = 32767u; 164 165 /** 166 * 2^14-1 167 */ 168 enum SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER = 16383; 169 170 enum SSL2_CHALLENGE_LENGTH = 16; 171 /*enum SSL2_CHALLENGE_LENGTH = 32; */ 172 enum SSL2_MIN_CHALLENGE_LENGTH = 16; 173 enum SSL2_MAX_CHALLENGE_LENGTH = 32; 174 enum SSL2_CONNECTION_ID_LENGTH = 16; 175 enum SSL2_MAX_CONNECTION_ID_LENGTH = 16; 176 enum SSL2_SSL_SESSION_ID_LENGTH = 16; 177 enum SSL2_MAX_CERT_CHALLENGE_LENGTH = 32; 178 enum SSL2_MIN_CERT_CHALLENGE_LENGTH = 16; 179 enum SSL2_MAX_KEY_MATERIAL_LENGTH = 24;