mbed-os5 only for TYBLE16
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
Diff: features/netsocket/TLSSocket.cpp
- Revision:
- 1:9db0e321a9f4
- Parent:
- 0:5b88d5760320
--- a/features/netsocket/TLSSocket.cpp Tue Dec 17 23:23:45 2019 +0000 +++ b/features/netsocket/TLSSocket.cpp Tue Dec 31 06:02:27 2019 +0000 @@ -20,6 +20,8 @@ #define TRACE_GROUP "TLSS" #include "mbed-trace/mbed_trace.h" +#if !defined(MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET) || !(MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET) + // This class requires Mbed TLS SSL/TLS client code #if defined(MBEDTLS_SSL_CLI_C) @@ -46,5 +48,71 @@ */ close(); } +#endif // MBEDTLS_SSL_CLI_C -#endif // MBEDTLS_SSL_CLI_C +#else // MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET + +TLSSocket::TLSSocket() +{ +} + +TLSSocket::~TLSSocket() +{ +} + + +nsapi_error_t TLSSocket::set_hostname(const char *hostname) +{ + return setsockopt(NSAPI_TLSSOCKET_LEVEL, NSAPI_TLSSOCKET_SET_HOSTNAME, hostname, strlen(hostname)); +} + +nsapi_error_t TLSSocket::set_root_ca_cert(const void *root_ca, size_t len) +{ + return setsockopt(NSAPI_TLSSOCKET_LEVEL, NSAPI_TLSSOCKET_SET_CACERT, root_ca, len); +} + +nsapi_error_t TLSSocket::set_root_ca_cert(const char *root_ca_pem) +{ + return set_root_ca_cert(root_ca_pem, strlen(root_ca_pem)); +} + +nsapi_error_t TLSSocket::set_client_cert_key(const void *client_cert, size_t client_cert_len, + const void *client_private_key_pem, size_t client_private_key_len) +{ + nsapi_error_t ret = setsockopt(NSAPI_TLSSOCKET_LEVEL, NSAPI_TLSSOCKET_SET_CLCERT, client_cert, client_cert_len); + if (ret == NSAPI_ERROR_OK) { + ret = setsockopt(NSAPI_TLSSOCKET_LEVEL, NSAPI_TLSSOCKET_SET_CLKEY, client_private_key_pem, client_private_key_len); + } + return ret; +} + +nsapi_error_t TLSSocket::set_client_cert_key(const char *client_cert_pem, const char *client_private_key_pem) +{ + return set_client_cert_key(client_cert_pem, strlen(client_cert_pem), client_private_key_pem, strlen(client_private_key_pem)); +} + +nsapi_error_t TLSSocket::connect(const char *host, uint16_t port) +{ + nsapi_error_t ret = enable_tlssocket(); + if (ret == NSAPI_ERROR_OK) { + ret = TCPSocket::connect(host, port); + } + return ret; +} + +nsapi_error_t TLSSocket::connect(const SocketAddress &address) +{ + nsapi_error_t ret = enable_tlssocket(); + if (ret == NSAPI_ERROR_OK) { + ret = TCPSocket::connect(address); + } + return ret; +} + +nsapi_error_t TLSSocket::enable_tlssocket() +{ + bool enabled = true; + return setsockopt(NSAPI_TLSSOCKET_LEVEL, NSAPI_TLSSOCKET_ENABLE, &enabled, sizeof(enabled)); +} + +#endif // MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET