summaryrefslogtreecommitdiff
path: root/src/SSL_Message.h
blob: 4f525c9f1ab0bca693bd7315fb4314b0d140d48e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

#ifndef H_SSL_MESSAGE_H
#define H_SSL_MESSAGE_H

#include <stdio.h>
#include <string.h>

#define MIN(a, b)                    ((a) <= (b) ? (a):(b))

#define MAX_DATA_BUFFER  			10240


#define SSL_HEADER_LEN	5+1	//use the hand_shake first bytes

#define SSL_KEY 					3
#define SSL_TRUE 					1
#define SSL_FLASE 					0


#define RANDOM_TIME_LEN 			4
#define SSL_RANDOM_SIZE 			28

/**SSL versions**/
#define UNKNOWN_VERSION        		0x0000
#define SSLV3_VERSION          		0x0300
#define SSLV2_VERSION          		0x0002
#define TLSV1_VERSION          		0x0301
#define TLSV1_2_VERSION          	0x0303
#define TLSV1DOT1_VERSION      		0x0302
#define DTLSV1DOT0_VERSION     		0xfeff
#define DTLSV1DOT0_VERSION_NOT 		0x0100

#define SSL_HANDSHAKE_MSG_HDRLEN    4
#define SSL_RECORD_HDRLEN  			5
#define SSL_HELLO_PROTO_HDRLEN  	6

#define SSL_HANDSHAKE_NOTRUNK       0
#define SSL_HANDSHAKE_PROTO_TRUNKED 1
#define SSL_HANDSHAKE_MSG_TRUNKED   2

#define CHANGE_CIPHER_SEP 			0x14
#define ALERT			 			0x15
#define HANDSHAKE 					0x16
#define APPLICATION_DATA 			0x17

#define CERT_MAXNUM			 		8


//#############################################client hello
#define CLIENT_HELLO_HDRLEN 		4

typedef struct _st_client_server_name_t
{
	short 					server_name_list_len;
	unsigned short 			server_name_type;
	unsigned char 			server_name_len;
	unsigned char* 			server_name_data;
}__attribute__((packed))st_client_server_name_t;

//#############################################server hello
#define  SERVER_HELLO_HDRLEN 		4

//#############################################certificate
#define CERTIFICATE_HDRLEN			7
#define SSL_CERTIFICATE_HDRLEN  	3


typedef struct _stValueString_t
{
    unsigned int 			uiValue;
    const char 				*pcString;
}stValueString_t;

typedef struct _stSerialString_t
{
    unsigned char 			aucSerial[16];
    const char 				*pcString;
}stSerialString_t;

typedef struct _stSSLRecordHdr_t
{
    unsigned char 			ucContType;
    unsigned short 			usVersion;
    unsigned short 			usTotalLen;

}__attribute__((packed))stSSLRecordHdr_t;


typedef struct _stHandShakeTypeHdr_t
{
    unsigned char 			ucContType;
}__attribute__((packed))stHandShakeTypeHdr_t;

typedef struct _stHSkCertificateHdr_t
{
    //unsigned char pacCertLen[3];
}stHSkCertificateHdr_t;

typedef enum _emHelloMsgType_m
{
//    HELLO_REQUEST = 0,
    CLIENT_HELLO = 1,
    SERVER_HELLO = 2,
    CERTIFICATE = 11,
 //   SERVER_KEY_EXCHANGE = 12,
//    CERTIFICATE_REQUEST = 13,
//    SERVER_HELLO_DONE = 14,
//    CERTIFICATE_VERIFY = 15,
//    CLIENT_KEY_EXCHANGE = 16,
//    FINISHED = 20,
	NEW_SESSION_TICKET=4,
    MSG_UNKNOWN = 255,
}emHelloMsgType_m;

UCHAR ssl_analyseStream(struct streaminfo *a_tcp, void** pme, int thread_seq, void *a_packet);

#endif