23#include <wolfssl/options.h>
24#include <wolfssl/ssl.h>
27#include "SocketImpl.h"
31#define SOCKET_IMPL_SEC "SocketImplSecure"
33static int wolf_ssl_counter = 0;
34static WOLFSSL_CTX* wolf_ctx =
nullptr;
43 if (wolf_ssl_counter++ == 0 || wolf_ctx ==
nullptr) {
59 if (--wolf_ssl_counter == 0 && wolf_ctx) {
66 size_t read(
uint8_t* buffer,
size_t len) {
71 int result = ::wolfSSL_read(ssl, buffer, len);
84 int connect(
const char* address,
uint16_t port)
override {
93 memset(&serv_addr, 0,
sizeof(serv_addr));
95 serv_addr.sin_port =
htons(port);
96 if (::inet_pton(
AF_INET, address, &serv_addr.sin_addr) <= 0) {
104 if (::connect(sock, (
struct sockaddr*)&serv_addr,
sizeof(serv_addr)) < 0) {
124 "SSL handshake failed, error code: %d reason: %s",
err,
138 size_t write(
const uint8_t* str,
size_t len) {
140 if (ssl ==
nullptr) {
144 return ::wolfSSL_write(ssl, str, len);
147 void setCACert(
const char*
cert)
override {
148 if (wolf_ctx ==
nullptr)
return;
160 if (wolf_ctx ==
nullptr)
return;
169 bool is_insecure =
false;
178 :
EthernetClient(std::make_shared<SocketImplSecure>(), bufferSize, timeout) {}
179 void setCACert(
const char*
cert)
override { p_sock->setCACert(
cert); }
180 void setInsecure()
override { p_sock->setInsecure(); }
Definition Ethernet.h:128
NetworkClientSecure based on wolf ssl.
Definition NetworkClientSecure.h:175
Definition SocketImpl.h:26
SSL Socket using wolf ssl. For error codes see https://wolfssl.jp/docs-3/wolfssl-manual/appendix-c.
Definition NetworkClientSecure.h:40
We provide the WiFi class to simulate the Arduino WIFI. In in Linux we can expect that networking is ...
Definition CanMsg.cpp:31