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
|
#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 40960
#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
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,
MSG_UNKNOWN = 255,
}emHelloMsgType_m;
UCHAR ssl_analyseStream(struct streaminfo *a_tcp, void** pme, int thread_seq, void *a_packet);
#endif
|