28 #ifndef M2M_M2MB_SSL_H
29 #define M2M_M2MB_SSL_H
34 #define M2MB_SSL_SUCCESS 0
35 #define M2MB_SSL_FAILURE -1
36 #define M2MB_SSL_ARG_FAIL -6
37 #define M2MB_SSL_PLATFORM_FAIL -7
38 #define M2MB_SSL_MEM_FAIL -8
39 #define M2MB_SSL_LIMIT_FAIL -9
40 #define M2MB_SSL_UNSUPPORTED_FAIL -10
41 #define M2MB_SSL_PROTOCOL_FAIL -12
42 #define M2MB_SSL_TIMEOUT_FAIL -13
43 #define M2MB_SSL_INTERRUPT_FAIL -14
44 #define M2MB_SSL_WRITE_ERROR -15
45 #define M2MB_SSL_READ_ERROR -16
46 #define M2MB_SSL_END_OF_FILE -17
47 #define M2MB_SSL_CLOSE_NOTIFY -18
48 #define M2MB_SSL_CERT_AUTH_FAIL -35
49 #define M2MB_SSL_FULL -50
50 #define M2MB_SSL_ALERT -54
51 #define M2MB_SSL_FILE_NOT_FOUND -55
53 #define M2MB_SSL_MAX_CA_LIST 10
54 #define M2MB_SSL_MAX_CIPHERSUITES 8
58 typedef HANDLE M2MB_SSL_CTXT_HANDLE;
59 typedef HANDLE M2MB_SSL_CONFIG_HANDLE;
60 typedef uiHANDLE M2MB_SSL_CONNECTION_HANDLE;
63 typedef enum M2MB_SSL_PROTOCOL_VERSION_E
65 M2MB_SSL_PROTOCOL_TLS_1_0,
66 M2MB_SSL_PROTOCOL_TLS_1_1,
67 M2MB_SSL_PROTOCOL_TLS_1_2,
68 M2MB_SSL_PROTOCOL_TLS_1_3,
69 M2MB_SSL_PROTOCOL_DTLS_1_0,
70 M2MB_SSL_PROTOCOL_DTLS_1_2,
72 } M2MB_SSL_PROTOCOL_VERSION_E;
75 typedef enum M2MB_SSL_CIPHER_SUITE_E
77 M2MB_TLS_PSK_WITH_RC4_128_SHA,
78 M2MB_TLS_PSK_WITH_3DES_EDE_CBC_SHA,
79 M2MB_TLS_PSK_WITH_AES_128_CBC_SHA,
80 M2MB_TLS_PSK_WITH_AES_256_CBC_SHA,
81 M2MB_TLS_PSK_WITH_AES_128_GCM_SHA256,
82 M2MB_TLS_PSK_WITH_AES_256_GCM_SHA384,
83 M2MB_TLS_PSK_WITH_AES_128_CBC_SHA256,
84 M2MB_TLS_PSK_WITH_AES_256_CBC_SHA384,
85 M2MB_TLS_RSA_WITH_AES_128_CBC_SHA,
86 M2MB_TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
87 M2MB_TLS_RSA_WITH_AES_256_CBC_SHA,
88 M2MB_TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
89 M2MB_TLS_RSA_WITH_AES_128_CBC_SHA256,
90 M2MB_TLS_RSA_WITH_AES_256_CBC_SHA256,
91 M2MB_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
92 M2MB_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
93 M2MB_TLS_RSA_WITH_AES_128_GCM_SHA256,
94 M2MB_TLS_RSA_WITH_AES_256_GCM_SHA384,
95 M2MB_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
96 M2MB_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
97 M2MB_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
98 M2MB_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
99 M2MB_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
100 M2MB_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
101 M2MB_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
102 M2MB_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
103 M2MB_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
104 M2MB_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
105 M2MB_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
106 M2MB_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
107 M2MB_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
108 M2MB_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
109 M2MB_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
110 M2MB_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
111 M2MB_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
112 M2MB_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
113 M2MB_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
114 M2MB_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
115 M2MB_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
116 M2MB_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
117 M2MB_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
118 M2MB_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
119 M2MB_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
120 M2MB_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
121 M2MB_TLS_RSA_WITH_AES_128_CCM_8,
122 M2MB_TLS_RSA_WITH_AES_256_CCM_8,
123 M2MB_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
124 M2MB_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
125 M2MB_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
128 M2MB_TLS_AES_128_GCM_SHA256,
129 M2MB_TLS_AES_256_GCM_SHA384,
130 M2MB_TLS_CHACHA20_POLY1305_SHA256,
131 M2MB_TLS_AES_128_CCM_SHA256,
132 M2MB_TLS_AES_128_CCM_8_SHA256,
135 M2MB_TLS_PSK_WITH_AES_128_CCM_8,
136 M2MB_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
137 M2MB_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,
138 } M2MB_SSL_CIPHER_SUITE_E;
140 typedef enum M2MB_SSL_CERT_TYPE_E
145 } M2MB_SSL_CERT_TYPE_E;
192 typedef enum M2MB_SSL_AUTH_TYPE_E
195 M2MB_SSL_SERVER_AUTH,
196 M2MB_SSL_SERVER_CLIENT_AUTH
197 } M2MB_SSL_AUTH_TYPE_E;
201 M2MB_SSL_PROTOCOL_VERSION_E ProtVers;
202 M2MB_SSL_AUTH_TYPE_E AuthType;
203 M2MB_SSL_CIPHER_SUITE_E *CipherSuites;
204 UINT8 CipherSuitesNum;
209 M2MB_SSL_NAME_CHECK = 0,
210 M2MB_SSL_NAME_SNI = 1,
211 M2MB_SSL_DTLS_SET_SOCKET_NAME = 2,
212 M2MB_SSL_CONNECT_TIMEOUT = 3,
213 ENUM_TO_INT( M2MB_SSL_CONF_REQUEST_E )
214 } M2MB_SSL_CONF_REQUEST_E;
498 M2MB_SSL_CONNECTION_HANDLE
m2mb_ssl_secure_socket( M2MB_SSL_CONFIG_HANDLE sslConfigHndl, M2MB_SSL_CTXT_HANDLE sslCtxtHndl, M2MB_SOCKET_BSD_SOCKET socket_fd, INT32 *result );
584 INT32
m2mb_ssl_write( M2MB_SSL_CONNECTION_HANDLE sslConnectionHandle,
void *buf, UINT32 len );
629 INT32
m2mb_ssl_read( M2MB_SSL_CONNECTION_HANDLE sslConnectionHandle,
void *buf, UINT32 len );
791 INT32
m2mb_ssl_cert_load( M2MB_SSL_CTXT_HANDLE sslCtxtHndl, M2MB_SSL_CERT_TYPE_E sslCertType, CHAR *name );
917 INT32
m2mb_ssl_config( M2MB_SSL_CONFIG_HANDLE sslConfigHndl, INT32 cmd,
void *argp );