@@ -46,9 +46,57 @@ AsyncTCP_TLS_Context::AsyncTCP_TLS_Context(void)
46
46
handshake_timeout = 120000 ;
47
47
}
48
48
49
- int AsyncTCP_TLS_Context::startSSLClient (int sck, const char * host_or_ip, const char *rootCABuff,
50
- const char *cli_cert, const char *cli_key, const char *pskIdent,
51
- const char *psKey, bool insecure)
49
+ int AsyncTCP_TLS_Context::startSSLClientInsecure (int sck, const char * host_or_ip)
50
+ {
51
+ return _startSSLClient (sck, host_or_ip,
52
+ NULL , 0 ,
53
+ NULL , 0 ,
54
+ NULL , 0 ,
55
+ NULL , NULL ,
56
+ true );
57
+ }
58
+
59
+ int AsyncTCP_TLS_Context::startSSLClient (int sck, const char * host_or_ip,
60
+ const char *pskIdent, const char *psKey)
61
+ {
62
+ return _startSSLClient (sck, host_or_ip,
63
+ NULL , 0 ,
64
+ NULL , 0 ,
65
+ NULL , 0 ,
66
+ pskIdent, psKey,
67
+ false );
68
+ }
69
+
70
+ int AsyncTCP_TLS_Context::startSSLClient (int sck, const char * host_or_ip,
71
+ const char *rootCABuff,
72
+ const char *cli_cert,
73
+ const char *cli_key)
74
+ {
75
+ return startSSLClient (sck, host_or_ip,
76
+ (const unsigned char *)rootCABuff, (rootCABuff != NULL ) ? strlen (rootCABuff) + 1 : 0 ,
77
+ (const unsigned char *)cli_cert, (cli_cert != NULL ) ? strlen (cli_cert) + 1 : 0 ,
78
+ (const unsigned char *)cli_key, (cli_key != NULL ) ? strlen (cli_key) + 1 : 0 );
79
+ }
80
+
81
+ int AsyncTCP_TLS_Context::startSSLClient (int sck, const char * host_or_ip,
82
+ const unsigned char *rootCABuff, const size_t rootCABuff_len,
83
+ const unsigned char *cli_cert, const size_t cli_cert_len,
84
+ const unsigned char *cli_key, const size_t cli_key_len)
85
+ {
86
+ return _startSSLClient (sck, host_or_ip,
87
+ rootCABuff, rootCABuff_len,
88
+ cli_cert, cli_cert_len,
89
+ cli_key, cli_key_len,
90
+ NULL , NULL ,
91
+ false );
92
+ }
93
+
94
+ int AsyncTCP_TLS_Context::_startSSLClient (int sck, const char * host_or_ip,
95
+ const unsigned char *rootCABuff, const size_t rootCABuff_len,
96
+ const unsigned char *cli_cert, const size_t cli_cert_len,
97
+ const unsigned char *cli_key, const size_t cli_key_len,
98
+ const char *pskIdent, const char *psKey,
99
+ bool insecure)
52
100
{
53
101
int ret;
54
102
int enable = 1 ;
@@ -91,7 +139,7 @@ int AsyncTCP_TLS_Context::startSSLClient(int sck, const char * host_or_ip, const
91
139
log_v (" Loading CA cert" );
92
140
mbedtls_x509_crt_init (&ca_cert);
93
141
mbedtls_ssl_conf_authmode (&ssl_conf, MBEDTLS_SSL_VERIFY_REQUIRED);
94
- ret = mbedtls_x509_crt_parse (&ca_cert, ( const unsigned char *) rootCABuff, strlen (rootCABuff) + 1 );
142
+ ret = mbedtls_x509_crt_parse (&ca_cert, rootCABuff, rootCABuff_len );
95
143
_have_ca_cert = true ;
96
144
mbedtls_ssl_conf_ca_chain (&ssl_conf, &ca_cert, NULL );
97
145
if (ret < 0 ) {
@@ -139,7 +187,7 @@ int AsyncTCP_TLS_Context::startSSLClient(int sck, const char * host_or_ip, const
139
187
140
188
log_v (" Loading CRT cert" );
141
189
142
- ret = mbedtls_x509_crt_parse (&client_cert, ( const unsigned char *) cli_cert, strlen (cli_cert) + 1 );
190
+ ret = mbedtls_x509_crt_parse (&client_cert, cli_cert, cli_cert_len );
143
191
_have_client_cert = true ;
144
192
if (ret < 0 ) {
145
193
// free the client_cert in the case parse failed, otherwise, the old client_cert still in the heap memory, that lead to "out of memory" crash.
@@ -148,7 +196,7 @@ int AsyncTCP_TLS_Context::startSSLClient(int sck, const char * host_or_ip, const
148
196
}
149
197
150
198
log_v (" Loading private key" );
151
- ret = mbedtls_pk_parse_key (&client_key, ( const unsigned char *) cli_key, strlen (cli_key) + 1 , NULL , 0 );
199
+ ret = mbedtls_pk_parse_key (&client_key, cli_key, cli_key_len , NULL , 0 );
152
200
_have_client_key = true ;
153
201
154
202
if (ret != 0 ) {
0 commit comments