Skip to content

Commit 3724fee

Browse files
committed
TLS client
1 parent 1daf7f1 commit 3724fee

9 files changed

Lines changed: 426 additions & 686 deletions

File tree

RPi-Pico/CMakeLists.txt

Lines changed: 92 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -13,103 +13,93 @@ endif()
1313
project(wolf_pico_examples C CXX ASM)
1414
set(CMAKE_C_STANDARD 11)
1515
set(CMAKE_CXX_STANDARD 17)
16+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
17+
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
18+
1619

1720
# Initialize the SDK
1821
pico_sdk_init()
1922

20-
message("Example cmake project including wolfSSL with user_settings.h")
21-
22-
# add global define to include user_settings.h
23-
add_compile_definitions(WOLFSSL_USER_SETTINGS)
24-
add_compile_definitions(WOLFSSL_USER_SETTINGS_ASM)
25-
set(BUILD_SHARED_LIBS OFF)
26-
set(WOLFSSL_EXAMPLES OFF)
27-
set(WOLFSSL_CRYPT_TESTS OFF)
28-
set(WOLFSSL_USER_SETTINGS ON)
29-
3023
include_directories(config)
3124
include_directories(include)
3225
include_directories(${PICO_SDK_PATH}/src/rp2_common/pico_lwip/include)
3326
include_directories(${PICO_SDK_PATH}/lib/lwip/contrib/ports/freertos/include)
3427
include_directories(${PICO_SDK_PATH}/lib/lwip/src/include)
3528
include_directories(${PICO_SDK_PATH}/src/rp2_common/pico_async_context/include)
3629

37-
add_subdirectory(wolfssl)
38-
target_link_libraries(wolfssl PRIVATE
30+
set(WOLFSSL_ROOT $ENV{WOLFSSL_ROOT})
31+
include_directories(${WOLFSSL_ROOT})
32+
33+
file(GLOB_RECURSE WOLFSSL_SRC
34+
"${WOLFSSL_ROOT}/src/*.c"
35+
"${WOLFSSL_ROOT}/wolfcrypt/src/*.c"
36+
)
37+
list(REMOVE_ITEM WOLFSSL_SRC EXCLUDE REGEX
38+
"${WOLFSSL_ROOT}/src/bio.c"
39+
"${WOLFSSL_ROOT}/src/conf.c"
40+
"${WOLFSSL_ROOT}/src/pk.c"
41+
"${WOLFSSL_ROOT}/src/ssl_asn1.c"
42+
"${WOLFSSL_ROOT}/src/ssl_bn.c"
43+
"${WOLFSSL_ROOT}/src/ssl_misc.c"
44+
"${WOLFSSL_ROOT}/src/x509.c"
45+
"${WOLFSSL_ROOT}/src/x509_str.c"
46+
"${WOLFSSL_ROOT}/wolfcrypt/src/evp.c"
47+
"${WOLFSSL_ROOT}/wolfcrypt/src/misc.c"
48+
)
49+
50+
add_library(wolfssl STATIC
51+
${WOLFSSL_SRC}
52+
)
53+
target_include_directories(wolfssl PRIVATE
54+
${CMAKE_CURRENT_SOURCE_DIR}/config
55+
)
56+
target_compile_definitions(wolfssl PRIVATE
57+
WOLFSSL_USER_SETTINGS
58+
WOLFSSL_SP_ARM_THUMB_ASM
59+
)
60+
61+
62+
add_executable(testwolfcrypt
63+
src/test_main.c
64+
src/blink.c
65+
${WOLFSSL_ROOT}/wolfcrypt/test/test.c
66+
)
67+
68+
pico_enable_stdio_usb(testwolfcrypt 1)
69+
pico_enable_stdio_uart(testwolfcrypt 0)
70+
target_compile_definitions(testwolfcrypt PRIVATE
71+
WOLFSSL_USER_SETTINGS
3972
)
4073

74+
target_link_libraries(testwolfcrypt
75+
wolfssl
76+
pico_stdlib
77+
pico_cyw43_arch_none
78+
pico_rand
79+
)
80+
pico_add_extra_outputs(testwolfcrypt)
81+
82+
4183
add_executable(benchmark
4284
src/bench_main.c
4385
src/blink.c
44-
wolfssl/wolfcrypt/benchmark/benchmark.c
86+
${WOLFSSL_ROOT}/wolfcrypt/benchmark/benchmark.c
4587
)
4688

4789
pico_enable_stdio_usb(benchmark 1)
4890
pico_enable_stdio_uart(benchmark 0)
4991
target_compile_definitions(benchmark PRIVATE
50-
92+
WOLFSSL_USER_SETTINGS
5193
)
94+
5295
target_link_libraries(benchmark
5396
wolfssl
5497
pico_stdlib
5598
pico_cyw43_arch_none
5699
pico_rand
57-
#FreeRTOS-Kernel-Heap4 # FreeRTOS kernel and dynamic heap
58100
)
59101
pico_add_extra_outputs(benchmark)
60102

61-
if(0)
62-
add_executable(TCPclient
63-
src/blink.c
64-
# src/TCPclient.c
65-
src/TCPclient_main.c
66-
)
67-
68-
# enable usb output, disable uart output
69-
pico_enable_stdio_usb(TCPclient 1)
70-
pico_enable_stdio_uart(TCPclient 0)
71-
72-
target_compile_definitions(TCPclient PRIVATE
73-
74-
# CYW43_NETUTILS
75-
# PICO_CYW43_ARCH_FREERTOS
76-
TEST_TCP_SERVER_IP=\"${TEST_TCP_SERVER_IP}\"
77-
WIFI_SSID=\"${WIFI_SSID}\"
78-
WIFI_PASSWORD=\"${WIFI_PASSWORD}\"
79-
PICO_CYW43_ARCH_POLL
80-
NO_SYS=1
81-
82-
# SYS_LIGHTWEIGHT_PROT=1
83-
)
84-
85-
target_link_libraries(TCPclient
86-
pico_stdlib
87-
pico_rand
88-
89-
# pico_cyw43_arch_lwip_sys_freertos
90-
# pico_cyw43_arch_lwip_poll
91-
# pico_cyw43_arch_none
92-
93-
pico_lwip
94-
# pico_lwip_core4
95-
# pico_lwip_core6
96-
pico_cyw43_arch
97-
pico_lwip_nosys
98-
pico_async_context_poll
99-
# pico_lwip_iperf
100-
101-
# pico_lwip_freertos
102-
# pico_async_context_freertos
103-
# pico_lwip_port
104-
# pico_cyw43_driver
105-
# pico_lwip_api
106-
pico_lwip_netif
107-
# FreeRTOS-Kernel
108-
# FreeRTOS-Kernel-Heap4 # FreeRTOS kernel and dynamic heap
109-
)
110-
111-
pico_add_extra_outputs(TCPclient)
112-
endif()
113103

114104
add_executable(Wifi
115105
src/blink.c
@@ -151,6 +141,7 @@ pico_enable_stdio_usb(tcp_Client 1)
151141
pico_enable_stdio_uart(tcp_Client 0)
152142
153143
target_compile_definitions(tcp_Client PRIVATE
144+
WOLFSSL_USER_SETTINGS
154145
WIFI_SSID=\"${WIFI_SSID}\"
155146
WIFI_PASSWORD=\"${WIFI_PASSWORD}\"
156147
TEST_TCP_SERVER_IP=\"${TEST_TCP_SERVER_IP}\"
@@ -167,4 +158,37 @@ target_link_libraries(tcp_Client
167158
pico_async_context_poll
168159
)
169160
170-
pico_add_extra_outputs(tcp_Client)
161+
pico_add_extra_outputs(tcp_Client)
162+
163+
164+
add_executable(tls_Client
165+
src/blink.c
166+
src/wifi.c
167+
src/tcp.c
168+
src/tlsClient_main.c
169+
)
170+
171+
# enable usb output, disable uart output
172+
pico_enable_stdio_usb(tls_Client 1)
173+
pico_enable_stdio_uart(tls_Client 0)
174+
175+
target_compile_definitions(tls_Client PRIVATE
176+
WOLFSSL_USER_SETTINGS
177+
WIFI_SSID=\"${WIFI_SSID}\"
178+
WIFI_PASSWORD=\"${WIFI_PASSWORD}\"
179+
TEST_TCP_SERVER_IP=\"${TEST_TCP_SERVER_IP}\"
180+
PICO_CYW43_ARCH_POLL
181+
NO_SYS=1
182+
)
183+
184+
target_link_libraries(tls_Client
185+
pico_stdlib
186+
pico_rand
187+
pico_lwip
188+
pico_cyw43_arch
189+
pico_lwip_nosys
190+
pico_async_context_poll
191+
wolfssl
192+
)
193+
194+
pico_add_extra_outputs(tls_Client)

RPi-Pico/config/user_settings.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ extern "C"
3232
{
3333
#endif
3434

35+
#include <stdio.h>
3536
#define TARGET_EMBEDDED
3637

38+
extern time_t myTime(time_t *);
39+
#define XTIME(t) myTime(t)
40+
3741
/* ------------------------------------------------------------------------- */
3842
/* Platform */
3943
/* ------------------------------------------------------------------------- */
@@ -106,7 +110,9 @@ extern "C"
106110
/* Maximum math bits (Max RSA key bits * 2) */
107111
#define FP_MAX_BITS 4096
108112
#endif
113+
#endif
109114

115+
#if 1
110116
/* half as much memory but twice as slow */
111117
// #define RSA_LOW_MEM
112118

@@ -121,7 +127,7 @@ extern "C"
121127

122128
/* DH */
123129
#undef NO_DH
124-
#if 0
130+
#if 1
125131
/* Use table for DH instead of -lm (math) lib dependency */
126132
#if 1
127133
#define WOLFSSL_DH_CONST
@@ -140,7 +146,7 @@ extern "C"
140146
#define HAVE_ECC
141147

142148
/* Manually define enabled curves */
143-
#define ECC_USER_CURVES
149+
//#define ECC_USER_CURVES
144150

145151
#ifdef ECC_USER_CURVES
146152
/* Manual Curve Selection */

RPi-Pico/include/wolf/tcp.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include "wolf/common.h"
3030

3131
#define DEBUG_printf printf
32-
#define BUF_SIZE 2048
32+
#define BUF_SIZE (4096*2)
3333

3434
typedef struct {
3535
struct tcp_pcb *tcp_pcb;
@@ -45,5 +45,5 @@ typedef struct {
4545
WOLF_SOCKET_T *wolf_TCPsocket(void);
4646
static err_t wolf_TCPfree(WOLF_SOCKET_T *);
4747
bool wolf_TCPconnect(WOLF_SOCKET_T *, const char*, uint32_t);
48-
size_t wolf_TCPwrite(WOLF_SOCKET_T *, const unsigned char *, uint32_t);
49-
size_t wolf_TCPread(WOLF_SOCKET_T *, unsigned char *, uint32_t);
48+
int wolf_TCPread (WOLF_SOCKET_T *, unsigned char *, long unsigned int);
49+
int wolf_TCPwrite(WOLF_SOCKET_T *, const unsigned char *, long unsigned int);

RPi-Pico/src/bench_main.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,18 @@
2020
*/
2121

2222
#include <stdint.h>
23+
24+
#include "wolfssl/wolfcrypt/settings.h"
25+
#include "wolfssl/ssl.h"
2326
#include <wolfcrypt/benchmark/benchmark.h>
2427

2528
#include <stdio.h>
2629
#include "pico/stdlib.h"
2730
#include "pico/cyw43_arch.h"
2831
#include "wolf/blink.h"
2932

33+
34+
3035
int main(int argc, char **argv)
3136
{
3237
int i;
@@ -37,3 +42,10 @@ int main(int argc, char **argv)
3742
printf("End: %d\n", ret);
3843
return ret;
3944
}
45+
46+
#include <time.h>
47+
time_t myTime(time_t *t)
48+
{
49+
*t = (((2023 - 1970) * 12 + 8) * 30 * 24 * 60 * 60);
50+
return *t;
51+
}

0 commit comments

Comments
 (0)