1
1
#ifndef _ma_ssl_h_
2
2
#define _ma_ssl_h_
3
3
4
- struct st_ma_cio_ssl_methods ;
5
- typedef struct st_ma_cio_ssl_methods CIO_SSL_METHODS ;
6
- extern int ssl_default_plugin ;
7
-
8
4
enum enum_cio_ssl_type {
9
5
SSL_TYPE_DEFAULT = 0 ,
10
6
#ifdef _WIN32
@@ -16,23 +12,117 @@ enum enum_cio_ssl_type {
16
12
17
13
typedef struct st_ma_cio_ssl {
18
14
void * data ;
19
- enum enum_cio_ssl_type type ;
20
15
MARIADB_CIO * cio ;
21
- CIO_SSL_METHODS * methods ;
22
16
void * ssl ;
23
17
} MARIADB_SSL ;
24
18
25
- struct st_ma_cio_ssl_methods
26
- {
27
- void * (* init )(MARIADB_SSL * cssl , MYSQL * mysql );
28
- my_bool (* connect )(MARIADB_SSL * cssl );
29
- size_t (* read )(MARIADB_SSL * cssl , const uchar * buffer , size_t length );
30
- size_t (* write )(MARIADB_SSL * cssl , const uchar * buffer , size_t length );
31
- my_bool (* close )(MARIADB_SSL * cssl );
32
- int (* verify_server_cert )(MARIADB_SSL * ssl );
33
- const char * (* cipher )(MARIADB_SSL * ssl );
34
- my_bool (* check_fp )(MARIADB_SSL * cssl , const char * fp );
35
- };
19
+ /* Function prototypes */
20
+
21
+ /* ma_ssl_start
22
+ initializes the ssl library
23
+ Parameter:
24
+ errmsg pointer to error message buffer
25
+ errmsg_len length of error message buffer
26
+ Returns:
27
+ 0 success
28
+ 1 if an error occured
29
+ Notes:
30
+ On success the global variable ma_ssl_initialized will be set to 1
31
+ */
32
+ int ma_ssl_start (char * errmsg , size_t errmsg_len );
33
+
34
+ /* ma_ssl_end
35
+ unloads/deinitializes ssl library and unsets global variable
36
+ ma_ssl_initialized
37
+ */
38
+ void ma_ssl_end (void );
39
+
40
+ /* ma_ssl_init
41
+ creates a new SSL structure for a SSL connection and loads
42
+ client certificates
43
+
44
+ Parameters:
45
+ MYSQL a mysql structure
46
+ Returns:
47
+ void * a pointer to internal SSL structure
48
+ */
49
+ void * ma_ssl_init (MYSQL * mysql );
50
+
51
+ /* ma_ssl_connect
52
+ performs SSL handshake
53
+ Parameters:
54
+ MARIADB_SSL MariaDB SSL container
55
+ Returns:
56
+ 0 success
57
+ 1 error
58
+ */
59
+ my_bool ma_ssl_connect (MARIADB_SSL * cssl );
60
+
61
+ /* ma_ssl_read
62
+ reads up to length bytes from socket
63
+ Parameters:
64
+ cssl MariaDB SSL container
65
+ buffer read buffer
66
+ length buffer length
67
+ Returns:
68
+ 0-n bytes read
69
+ -1 if an error occured
70
+ */
71
+ size_t ma_ssl_read (MARIADB_SSL * cssl , const uchar * buffer , size_t length );
72
+
73
+ /* ma_ssl_write
74
+ write buffer to socket
75
+ Parameters:
76
+ cssl MariaDB SSL container
77
+ buffer write buffer
78
+ length buffer length
79
+ Returns:
80
+ 0-n bytes written
81
+ -1 if an error occured
82
+ */
83
+ size_t ma_ssl_write (MARIADB_SSL * cssl , const uchar * buffer , size_t length );
84
+
85
+ /* ma_ssl_close
86
+ closes SSL connection and frees SSL structure which was previously
87
+ created by ma_ssl_init call
88
+ Parameters:
89
+ MARIADB_SSL MariaDB SSL container
90
+ Returns:
91
+ 0 success
92
+ 1 error
93
+ */
94
+ my_bool ma_ssl_close (MARIADB_SSL * cssl );
95
+
96
+ /* ma_ssl_verify_server_cert
97
+ validation check of server certificate
98
+ Parameter:
99
+ MARIADB_SSL MariaDB SSL container
100
+ Returns:
101
+ ß success
102
+ 1 error
103
+ */
104
+ int ma_ssl_verify_server_cert (MARIADB_SSL * cssl );
105
+
106
+ /* ma_ssl_get_cipher
107
+ returns cipher for current ssl connection
108
+ Parameter:
109
+ MARIADB_SSL MariaDB SSL container
110
+ Returns:
111
+ cipher in use or
112
+ NULL on error
113
+ */
114
+ const char * ma_ssl_get_cipher (MARIADB_SSL * ssl );
115
+
116
+ /* ma_ssl_get_finger_print
117
+ returns SHA1 finger print of server certificate
118
+ Parameter:
119
+ MARIADB_SSL MariaDB SSL container
120
+ fp buffer for fingerprint
121
+ fp_len buffer length
122
+ Returns:
123
+ actual size of finger print
124
+ */
125
+ unsigned int ma_ssl_get_finger_print (MARIADB_SSL * cssl , unsigned char * fp , unsigned int fp_len );
36
126
37
127
/* Function prototypes */
38
128
MARIADB_SSL * ma_cio_ssl_init (MYSQL * mysql );
@@ -42,6 +132,6 @@ size_t ma_cio_ssl_write(MARIADB_SSL *cssl, const uchar *buffer, size_t length);
42
132
my_bool ma_cio_ssl_close (MARIADB_SSL * cssl );
43
133
int ma_cio_ssl_verify_server_cert (MARIADB_SSL * cssl );
44
134
const char * ma_cio_ssl_cipher (MARIADB_SSL * cssl );
45
- my_bool ma_cio_ssl_check_fp (MARIADB_SSL * cssl , const char * fp , size_t length );
135
+ my_bool ma_cio_ssl_check_fp (MARIADB_SSL * cssl , const char * fp , const char * fp_list );
46
136
47
137
#endif /* _ma_ssl_h_ */
0 commit comments