Skip to content

Commit c4ac183

Browse files
committed
Introduce WiFiBearSSLClient (offloaded to Nina)
1 parent 6054f43 commit c4ac183

File tree

5 files changed

+91
-1
lines changed

5 files changed

+91
-1
lines changed

src/WiFiClient.cpp

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,64 @@ int WiFiClient::connectSSL(const char *host, uint16_t port)
136136
return 1;
137137
}
138138

139+
int WiFiClient::connectBearSSL(IPAddress ip, uint16_t port)
140+
{
141+
if (_sock != NO_SOCKET_AVAIL)
142+
{
143+
stop();
144+
}
145+
146+
_sock = ServerDrv::getSocket();
147+
if (_sock != NO_SOCKET_AVAIL)
148+
{
149+
ServerDrv::startClient(uint32_t(ip), port, _sock, TLS_BEARSSL_MODE);
150+
151+
unsigned long start = millis();
152+
153+
// wait 4 second for the connection to close
154+
while (!connected() && millis() - start < 10000)
155+
delay(1);
156+
157+
if (!connected())
158+
{
159+
return 0;
160+
}
161+
} else {
162+
Serial.println("No Socket available");
163+
return 0;
164+
}
165+
return 1;
166+
}
167+
168+
int WiFiClient::connectBearSSL(const char *host, uint16_t port)
169+
{
170+
if (_sock != NO_SOCKET_AVAIL)
171+
{
172+
stop();
173+
}
174+
175+
_sock = ServerDrv::getSocket();
176+
if (_sock != NO_SOCKET_AVAIL)
177+
{
178+
ServerDrv::startClient(host, strlen(host), uint32_t(0), port, _sock, TLS_BEARSSL_MODE);
179+
180+
unsigned long start = millis();
181+
182+
// wait 4 second for the connection to close
183+
while (!connected() && millis() - start < 10000)
184+
delay(1);
185+
186+
if (!connected())
187+
{
188+
return 0;
189+
}
190+
} else {
191+
Serial.println("No Socket available");
192+
return 0;
193+
}
194+
return 1;
195+
}
196+
139197
size_t WiFiClient::write(uint8_t b) {
140198
return write(&b, 1);
141199
}

src/WiFiClient.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class WiFiClient : public Client {
3636
virtual int connect(const char *host, uint16_t port);
3737
virtual int connectSSL(IPAddress ip, uint16_t port);
3838
virtual int connectSSL(const char *host, uint16_t port);
39+
virtual int connectBearSSL(IPAddress ip, uint16_t port);
40+
virtual int connectBearSSL(const char *host, uint16_t port);
3941
virtual size_t write(uint8_t);
4042
virtual size_t write(const uint8_t *buf, size_t size);
4143
virtual int available();

src/WiFiSSLClient.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,23 @@ int WiFiSSLClient::connect(const char* host, uint16_t port)
3838
{
3939
return WiFiClient::connectSSL(host, port);
4040
}
41+
42+
WiFiBearSSLClient::WiFiBearSSLClient() :
43+
WiFiClient()
44+
{
45+
}
46+
47+
WiFiBearSSLClient::WiFiBearSSLClient(uint8_t sock) :
48+
WiFiClient()
49+
{
50+
}
51+
52+
int WiFiBearSSLClient::connect(IPAddress ip, uint16_t port)
53+
{
54+
return WiFiClient::connectBearSSL(ip, port);
55+
}
56+
57+
int WiFiBearSSLClient::connect(const char* host, uint16_t port)
58+
{
59+
return WiFiClient::connectBearSSL(host, port);
60+
}

src/WiFiSSLClient.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,14 @@ class WiFiSSLClient : public WiFiClient {
3232
virtual int connect(const char* host, uint16_t port);
3333
};
3434

35+
class WiFiBearSSLClient : public WiFiClient {
36+
37+
public:
38+
WiFiBearSSLClient();
39+
WiFiBearSSLClient(uint8_t sock);
40+
41+
virtual int connect(IPAddress ip, uint16_t port);
42+
virtual int connect(const char* host, uint16_t port);
43+
};
44+
3545
#endif /* WIFISSLCLIENT_H */

src/utility/server_drv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include <inttypes.h>
2525
#include "utility/wifi_spi.h"
2626

27-
typedef enum eProtMode {TCP_MODE, UDP_MODE, TLS_MODE, UDP_MULTICAST_MODE}tProtMode;
27+
typedef enum eProtMode {TCP_MODE, UDP_MODE, TLS_MODE, UDP_MULTICAST_MODE, TLS_BEARSSL_MODE}tProtMode;
2828

2929
class ServerDrv
3030
{

0 commit comments

Comments
 (0)