1 /* 2 * SSL/TLS Protocol Constants 3 * (C) 2004-2010 Jack Lloyd 4 * 5 * Botan is released under the Simplified BSD License (see license.txt) 6 */ 7 8 #ifndef BOTAN_TLS_PROTOCOL_MAGIC_H_ 9 #define BOTAN_TLS_PROTOCOL_MAGIC_H_ 10 11 #include <botan/types.h> 12 13 //BOTAN_FUTURE_INTERNAL_HEADER(tls_magic.h) 14 15 namespace Botan { 16 17 namespace TLS { 18 19 /** 20 * Protocol Constants for SSL/TLS 21 */ 22 enum Size_Limits { 23 TLS_HEADER_SIZE = 5, 24 DTLS_HEADER_SIZE = TLS_HEADER_SIZE + 8, 25 26 MAX_PLAINTEXT_SIZE = 16*1024, 27 MAX_COMPRESSED_SIZE = MAX_PLAINTEXT_SIZE + 1024, 28 MAX_CIPHERTEXT_SIZE = MAX_COMPRESSED_SIZE + 1024, 29 }; 30 31 // This will become an enum class in a future major release 32 enum Connection_Side { CLIENT = 1, SERVER = 2 }; 33 34 // This will become an enum class in a future major release 35 enum Record_Type { 36 CHANGE_CIPHER_SPEC = 20, 37 ALERT = 21, 38 HANDSHAKE = 22, 39 APPLICATION_DATA = 23, 40 41 NO_RECORD = 256 42 }; 43 44 // This will become an enum class in a future major release 45 enum Handshake_Type { 46 HELLO_REQUEST = 0, 47 CLIENT_HELLO = 1, 48 SERVER_HELLO = 2, 49 HELLO_VERIFY_REQUEST = 3, 50 NEW_SESSION_TICKET = 4, // RFC 5077 51 CERTIFICATE = 11, 52 SERVER_KEX = 12, 53 CERTIFICATE_REQUEST = 13, 54 SERVER_HELLO_DONE = 14, 55 CERTIFICATE_VERIFY = 15, 56 CLIENT_KEX = 16, 57 FINISHED = 20, 58 59 CERTIFICATE_URL = 21, 60 CERTIFICATE_STATUS = 22, 61 62 HANDSHAKE_CCS = 254, // Not a wire value 63 HANDSHAKE_NONE = 255 // Null value 64 }; 65 66 const char* handshake_type_to_string(Handshake_Type t); 67 68 } 69 70 } 71 72 #endif 73