Skip to content
This repository was archived by the owner on Jan 20, 2025. It is now read-only.

Commit d7ea0ea

Browse files
committed
Add methods for reading and writing data to TLS connection
1 parent 80fc7eb commit d7ea0ea

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/AsyncTCP_TLS_Context.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,30 @@ int AsyncTCP_TLS_Context::runSSLHandshake(void)
235235
return 0;
236236
}
237237

238+
int AsyncTCP_TLS_Context::write(const uint8_t *data, size_t len)
239+
{
240+
if (_socket < 0) return -1;
241+
242+
log_v("Writing packet, %d bytes unencrypted...", len);
243+
int ret = mbedtls_ssl_write(&ssl_ctx, data, len);
244+
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret < 0) {
245+
log_v("Handling error %d", ret); //for low level debug
246+
return handle_error(ret);
247+
}
248+
return ret;
249+
}
250+
251+
int AsyncTCP_TLS_Context::read(uint8_t * data, size_t len)
252+
{
253+
int ret = mbedtls_ssl_read(&ssl_ctx, data, len);
254+
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret < 0) {
255+
log_v("Handling error %d", ret); //for low level debug
256+
return handle_error(ret);
257+
}
258+
if (ret > 0) log_v("Read packet, %d out of %d requested bytes...", ret, len);
259+
return ret;
260+
}
261+
238262
void AsyncTCP_TLS_Context::_deleteHandshakeCerts(void)
239263
{
240264
if (_have_ca_cert) {

src/AsyncTCP_TLS_Context.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#include "mbedtls/ctr_drbg.h"
1515
#include "mbedtls/error.h"
1616

17+
#define ASYNCTCP_TLS_CAN_RETRY(r) (((r) == MBEDTLS_ERR_SSL_WANT_READ) || ((r) == MBEDTLS_ERR_SSL_WANT_WRITE))
18+
1719
class AsyncTCP_TLS_Context
1820
{
1921
private:
@@ -50,6 +52,10 @@ class AsyncTCP_TLS_Context
5052
const char *psKey, bool insecure);
5153

5254
int runSSLHandshake(void);
55+
56+
int write(const uint8_t *data, size_t len);
57+
58+
int read(uint8_t * data, size_t len);
5359
};
5460

5561
#endif // ASYNC_TCP_SSL_ENABLED

0 commit comments

Comments
 (0)