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