Skip to content

Commit eeb033f

Browse files
authored
Merge pull request #11357 from kivaisan/offloaded_tlssocket_bg96
Offloaded TLSSocket and BG96 support for it
2 parents 8688b18 + 986204f commit eeb033f

File tree

12 files changed

+445
-61
lines changed

12 files changed

+445
-61
lines changed

TESTS/netsocket/tls/main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@ nsapi_error_t tlssocket_connect_to_srv(TLSSocket &sock, uint16_t port)
8484

8585
printf("MBED: Server '%s', port %d\n", tls_addr.get_ip_address(), tls_addr.get_port());
8686

87-
nsapi_error_t err = sock.set_root_ca_cert(tls_global::cert);
87+
nsapi_error_t err = sock.open(NetworkInterface::get_default_instance());
8888
if (err != NSAPI_ERROR_OK) {
89-
printf("Error from sock.set_root_ca_cert: %d\n", err);
89+
printf("Error from sock.open: %d\n", err);
9090
return err;
9191
}
9292

93-
err = sock.open(NetworkInterface::get_default_instance());
93+
err = sock.set_root_ca_cert(tls_global::cert);
9494
if (err != NSAPI_ERROR_OK) {
95-
printf("Error from sock.open: %d\n", err);
95+
printf("Error from sock.set_root_ca_cert: %d\n", err);
9696
return err;
9797
}
9898

TESTS/netsocket/tls/tlssocket_endpoint_close.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ static nsapi_error_t _tlssocket_connect_to_daytime_srv(TLSSocket &sock)
4848
return err;
4949
}
5050

51+
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
52+
53+
sock.set_timeout(10000); // Set timeout for case TLSSocket does not support peer closed indication
54+
5155
return sock.connect(tls_addr);
5256
}
5357

@@ -62,7 +66,6 @@ void TLSSOCKET_ENDPOINT_CLOSE()
6266
tc_exec_time.start();
6367

6468
TLSSocket sock;
65-
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
6669
if (_tlssocket_connect_to_daytime_srv(sock) != NSAPI_ERROR_OK) {
6770
TEST_FAIL();
6871
return;

TESTS/netsocket/tls/tlssocket_handshake_invalid.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,18 @@ using namespace utest::v1;
2828

2929
void TLSSOCKET_HANDSHAKE_INVALID()
3030
{
31+
const int https_port = 443;
3132
SKIP_IF_TCP_UNSUPPORTED();
3233
TLSSocket sock;
3334
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance()));
3435
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
35-
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE,
36-
sock.connect("google.com", 443)); // 443 is https port.
36+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("expired.badssl.com", https_port));
37+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("wrong.host.badssl.com", https_port));
38+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("self-signed.badssl.com", https_port));
39+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("untrusted-root.badssl.com", https_port));
40+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("revoked.badssl.com", https_port));
41+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("pinning-test.badssl.com", https_port));
42+
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE, sock.connect("sha1-intermediate.badssl.com", https_port));
3743
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
3844
}
3945

UNITTESTS/features/cellular/framework/AT/at_cellularstack/at_cellularstacktest.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_bind)
244244
MyStack st(at, 0, IPV6_STACK);
245245
SocketAddress addr;
246246
ATHandler_stub::nsapi_error_value = NSAPI_ERROR_ALREADY;
247-
EXPECT_EQ(st.socket_bind(NULL, addr), NSAPI_ERROR_DEVICE_ERROR);
247+
EXPECT_EQ(st.socket_bind(NULL, addr), NSAPI_ERROR_NO_SOCKET);
248248

249249
EXPECT_EQ(st.socket_bind(&st.socket, addr), NSAPI_ERROR_ALREADY);
250250
}
@@ -267,7 +267,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_connect)
267267

268268
MyStack st(at, 0, IPV6_STACK);
269269
SocketAddress addr;
270-
EXPECT_EQ(st.socket_connect(NULL, addr), NSAPI_ERROR_DEVICE_ERROR);
270+
EXPECT_EQ(st.socket_connect(NULL, addr), NSAPI_ERROR_NO_SOCKET);
271271

272272
EXPECT_EQ(st.socket_connect(&st.socket, addr), NSAPI_ERROR_OK);
273273
}
@@ -290,9 +290,9 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_send)
290290
ATHandler at(&fh1, que, 0, ",");
291291

292292
MyStack st(at, 0, IPV6_STACK);
293-
EXPECT_EQ(st.socket_send(NULL, "addr", 4), NSAPI_ERROR_DEVICE_ERROR);
293+
EXPECT_EQ(st.socket_send(NULL, "addr", 4), NSAPI_ERROR_NO_SOCKET);
294294

295-
EXPECT_EQ(st.socket_send(&st.socket, "addr", 4), NSAPI_ERROR_DEVICE_ERROR);
295+
EXPECT_EQ(st.socket_send(&st.socket, "addr", 4), NSAPI_ERROR_NO_CONNECTION);
296296

297297
SocketAddress addr;
298298
st.max_sock_value = 1;
@@ -312,7 +312,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_sendto)
312312
MyStack st(at, 0, IPV6_STACK);
313313

314314
SocketAddress addr;
315-
EXPECT_EQ(st.socket_sendto(NULL, addr, "addr", 4), NSAPI_ERROR_DEVICE_ERROR);
315+
EXPECT_EQ(st.socket_sendto(NULL, addr, "addr", 4), NSAPI_ERROR_NO_SOCKET);
316316

317317
st.max_sock_value = 1;
318318
st.bool_value = true;
@@ -334,7 +334,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recv)
334334

335335
MyStack st(at, 0, IPV6_STACK);
336336
char table[4];
337-
EXPECT_EQ(st.socket_recv(NULL, table, 4), NSAPI_ERROR_DEVICE_ERROR);
337+
EXPECT_EQ(st.socket_recv(NULL, table, 4), NSAPI_ERROR_NO_SOCKET);
338338
}
339339

340340
TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recvfrom)
@@ -345,7 +345,7 @@ TEST_F(TestAT_CellularStack, test_AT_CellularStack_socket_recvfrom)
345345

346346
MyStack st(at, 0, IPV6_STACK);
347347
char table[4];
348-
EXPECT_EQ(st.socket_recvfrom(NULL, NULL, table, 4), NSAPI_ERROR_DEVICE_ERROR);
348+
EXPECT_EQ(st.socket_recvfrom(NULL, NULL, table, 4), NSAPI_ERROR_NO_SOCKET);
349349

350350
SocketAddress addr;
351351
st.max_sock_value = 1;

features/cellular/framework/AT/AT_CellularStack.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ nsapi_error_t AT_CellularStack::socket_close(nsapi_socket_t handle)
161161

162162
struct CellularSocket *socket = (struct CellularSocket *)handle;
163163
if (!socket) {
164-
return err;
164+
return NSAPI_ERROR_NO_SOCKET;
165165
}
166166
int sock_id = socket->id;
167167

@@ -197,7 +197,7 @@ nsapi_error_t AT_CellularStack::socket_bind(nsapi_socket_t handle, const SocketA
197197
{
198198
struct CellularSocket *socket = (CellularSocket *)handle;
199199
if (!socket) {
200-
return NSAPI_ERROR_DEVICE_ERROR;
200+
return NSAPI_ERROR_NO_SOCKET;
201201
}
202202

203203
if (addr) {
@@ -225,14 +225,14 @@ nsapi_error_t AT_CellularStack::socket_bind(nsapi_socket_t handle, const SocketA
225225

226226
nsapi_error_t AT_CellularStack::socket_listen(nsapi_socket_t handle, int backlog)
227227
{
228-
return NSAPI_ERROR_UNSUPPORTED;;
228+
return NSAPI_ERROR_UNSUPPORTED;
229229
}
230230

231231
nsapi_error_t AT_CellularStack::socket_connect(nsapi_socket_t handle, const SocketAddress &addr)
232232
{
233233
CellularSocket *socket = (CellularSocket *)handle;
234234
if (!socket) {
235-
return NSAPI_ERROR_DEVICE_ERROR;
235+
return NSAPI_ERROR_NO_SOCKET;
236236
}
237237
socket->remoteAddress = addr;
238238
socket->connected = true;
@@ -242,14 +242,17 @@ nsapi_error_t AT_CellularStack::socket_connect(nsapi_socket_t handle, const Sock
242242

243243
nsapi_error_t AT_CellularStack::socket_accept(void *server, void **socket, SocketAddress *addr)
244244
{
245-
return NSAPI_ERROR_UNSUPPORTED;;
245+
return NSAPI_ERROR_UNSUPPORTED;
246246
}
247247

248248
nsapi_size_or_error_t AT_CellularStack::socket_send(nsapi_socket_t handle, const void *data, unsigned size)
249249
{
250250
CellularSocket *socket = (CellularSocket *)handle;
251-
if (!socket || !socket->connected) {
252-
return NSAPI_ERROR_DEVICE_ERROR;
251+
if (!socket) {
252+
return NSAPI_ERROR_NO_SOCKET;
253+
}
254+
if (!socket->connected) {
255+
return NSAPI_ERROR_NO_CONNECTION;
253256
}
254257
return socket_sendto(handle, socket->remoteAddress, data, size);
255258
}
@@ -258,7 +261,7 @@ nsapi_size_or_error_t AT_CellularStack::socket_sendto(nsapi_socket_t handle, con
258261
{
259262
CellularSocket *socket = (CellularSocket *)handle;
260263
if (!socket) {
261-
return NSAPI_ERROR_DEVICE_ERROR;
264+
return NSAPI_ERROR_NO_SOCKET;
262265
}
263266

264267
if (socket->closed && !socket->rx_avail) {
@@ -324,7 +327,7 @@ nsapi_size_or_error_t AT_CellularStack::socket_recvfrom(nsapi_socket_t handle, S
324327
{
325328
CellularSocket *socket = (CellularSocket *)handle;
326329
if (!socket) {
327-
return NSAPI_ERROR_DEVICE_ERROR;
330+
return NSAPI_ERROR_NO_SOCKET;
328331
}
329332

330333
if (socket->closed) {

features/cellular/framework/AT/AT_CellularStack.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase {
110110
started(false),
111111
tx_ready(false),
112112
rx_avail(false),
113+
tls_socket(false),
113114
pending_bytes(0)
114115
{
115116
}
@@ -127,6 +128,7 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase {
127128
bool started; // socket has been opened on modem stack
128129
bool tx_ready; // socket is ready for sending on modem stack
129130
bool rx_avail; // socket has data for reading on modem stack
131+
bool tls_socket; // socket uses modem's internal TLS socket functionality
130132
nsapi_size_t pending_bytes; // The number of received bytes pending
131133
};
132134

0 commit comments

Comments
 (0)