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