From 5da577ef5a0c0a64961bb03201568082da541317 Mon Sep 17 00:00:00 2001 From: Michael Ammann Date: Sat, 20 Apr 2024 19:46:10 +0200 Subject: [PATCH 1/3] Add option to enable TLS security on a socket --- ...SparkFun_u-blox_SARA-R5_Arduino_Library.cpp | 18 ++++++++++++++++-- src/SparkFun_u-blox_SARA-R5_Arduino_Library.h | 3 +++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp index 699610a..13e9bb2 100644 --- a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp @@ -2705,6 +2705,20 @@ int SARA_R5::socketOpen(SARA_R5_socket_protocol_t protocol, unsigned int localPo return sockId; } +$SARA_R5_error_t SARA_R5::socketSetSecure(int profile, bool secure, int secprofile) +{ + SARA_R5_error_t err; + char *command = sara_r5_calloc_char(strlen(SARA_R5_SECURE_SOCKET) + 32); + if (command == nullptr) + return SARA_R5_ERROR_OUT_OF_MEMORY; + if ((secprofile == -1) || !secure) sprintf(command, "%s=%d,%d", SARA_R5_SECURE_SOCKET, profile, secure); + else sprintf(command, "%s=%d,%d,%d", SARA_R5_SECURE_SOCKET, profile, secure, secprofile); + err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK_OR_ERROR, nullptr, + SARA_R5_STANDARD_RESPONSE_TIMEOUT); + free(command); + return err; +} + SARA_R5_error_t SARA_R5::socketClose(int socket, unsigned long timeout) { SARA_R5_error_t err; @@ -4089,7 +4103,7 @@ SARA_R5_error_t SARA_R5::setHTTPsecure(int profile, bool secure, int secprofile) command = sara_r5_calloc_char(strlen(SARA_R5_HTTP_PROFILE) + 32); if (command == nullptr) return SARA_R5_ERROR_OUT_OF_MEMORY; - if (secprofile == -1) + if ((secprofile == -1) || !secure) sprintf(command, "%s=%d,%d,%d", SARA_R5_HTTP_PROFILE, profile, SARA_R5_HTTP_OP_CODE_SECURE, secure); else sprintf(command, "%s=%d,%d,%d,%d", SARA_R5_HTTP_PROFILE, profile, SARA_R5_HTTP_OP_CODE_SECURE, @@ -4302,7 +4316,7 @@ SARA_R5_error_t SARA_R5::setMQTTsecure(bool secure, int secprofile) command = sara_r5_calloc_char(strlen(SARA_R5_MQTT_PROFILE) + 16); if (command == nullptr) return SARA_R5_ERROR_OUT_OF_MEMORY; - if (secprofile == -1) sprintf(command, "%s=%d,%d", SARA_R5_MQTT_PROFILE, SARA_R5_MQTT_PROFILE_SECURE, secure); + if ((secprofile == -1) || !secure) sprintf(command, "%s=%d,%d", SARA_R5_MQTT_PROFILE, SARA_R5_MQTT_PROFILE_SECURE, secure); else sprintf(command, "%s=%d,%d,%d", SARA_R5_MQTT_PROFILE, SARA_R5_MQTT_PROFILE_SECURE, secure, secprofile); err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK_OR_ERROR, nullptr, SARA_R5_STANDARD_RESPONSE_TIMEOUT); diff --git a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.h b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.h index 46dd1cd..bb43e43 100644 --- a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.h +++ b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.h @@ -153,6 +153,7 @@ const char SARA_R5_GET_ERROR[] = "+USOER"; // Get last socket error. const char SARA_R5_SOCKET_DIRECT_LINK[] = "+USODL"; // Set socket in Direct Link mode const char SARA_R5_SOCKET_CONTROL[] = "+USOCTL"; // Query the socket parameters const char SARA_R5_UD_CONFIGURATION[] = "+UDCONF"; // User Datagram Configuration +const char SARA_R5_SECURE_SOCKET[] = "+USOSEC"; // SSL/TLS/DTLS mode configuration // ### Ping const char SARA_R5_PING_COMMAND[] = "+UPING"; // Ping // ### HTTP @@ -897,6 +898,8 @@ class SARA_R5 : public Print SARA_R5_error_t querySocketRemoteIPAddress(int socket, IPAddress *address, int *port); SARA_R5_error_t querySocketStatusTCP(int socket, SARA_R5_tcp_socket_status_t *status); SARA_R5_error_t querySocketOutUnackData(int socket, uint32_t *total); + // enable / disable socket securoty + SARA_R5_error_t socketSetSecure(int profile, bool secure, int secprofile = -1); // Return the most recent socket error int socketGetLastError(); // Return the remote IP Address from the most recent socket listen indication (socket connection) From 3a8f6473ba8d2afb6c1d69b205e5c6277217caac Mon Sep 17 00:00:00 2001 From: Michael Ammann Date: Sat, 20 Apr 2024 19:48:28 +0200 Subject: [PATCH 2/3] merge issue --- src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp index 13e9bb2..1ff43fd 100644 --- a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp @@ -2705,7 +2705,7 @@ int SARA_R5::socketOpen(SARA_R5_socket_protocol_t protocol, unsigned int localPo return sockId; } -$SARA_R5_error_t SARA_R5::socketSetSecure(int profile, bool secure, int secprofile) +SARA_R5_error_t SARA_R5::socketSetSecure(int profile, bool secure, int secprofile) { SARA_R5_error_t err; char *command = sara_r5_calloc_char(strlen(SARA_R5_SECURE_SOCKET) + 32); From 6994dfbf96012a87fcf4559ca0617c2b5ca0a22a Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sun, 21 Apr 2024 09:49:44 -0600 Subject: [PATCH 3/3] v1.1.11 - add socketSetSecure --- keywords.txt | 1 + library.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/keywords.txt b/keywords.txt index 1b23534..d3f5212 100644 --- a/keywords.txt +++ b/keywords.txt @@ -145,6 +145,7 @@ querySocketTotalBytesReceived KEYWORD2 querySocketRemoteIPAddress KEYWORD2 querySocketStatusTCP KEYWORD2 querySocketOutUnackData KEYWORD2 +socketSetSecure KEYWORD2 socketGetLastError KEYWORD2 lastRemoteIP KEYWORD2 ping KEYWORD2 diff --git a/library.properties b/library.properties index 44c18e8..71bc84f 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=SparkFun u-blox SARA-R5 Arduino Library -version=1.1.10 +version=1.1.11 author=SparkFun Electronics maintainer=SparkFun Electronics sentence=Library for the u-blox SARA-R5 LTE-M / NB-IoT modules with secure cloud