@@ -36,54 +36,53 @@ int WiFiSSLClient::connect(IPAddress ip, uint16_t port) {
36
36
int WiFiSSLClient::connect (const char * host, uint16_t port) {
37
37
/* -------------------------------------------------------------------------- */
38
38
getSocket ();
39
- if (_root_ca != nullptr ) {
40
- setCACert (_root_ca);
39
+
40
+ /* if _root_ca is NULL it configures default root ca bundle */
41
+ string res = " " ;
42
+ if (_root_ca != nullptr ) {
43
+ size_t size = strlen (_root_ca);
44
+ modem.write_nowait (string (PROMPT (_SETCAROOT)),res, " %s%d,%d\r\n " , CMD_WRITE (_SETCAROOT), _sock, size);
45
+ if (!modem.passthrough ((uint8_t *)_root_ca, size)) {
46
+ return 0 ;
47
+ }
41
48
} else {
42
- setCACert ();
49
+ if (!modem.write (string (PROMPT (_SETCAROOT)),res, " %s%d\r\n " , CMD_WRITE (_SETCAROOT), _sock)) {
50
+ return 0 ;
51
+ }
43
52
}
44
- if ((_ecc_slot != -1 ) && (_ecc_cert != nullptr ) && (_ecc_cert_len != 0 )) {
45
- setEccSlot (_ecc_slot, _ecc_cert, _ecc_cert_len);
53
+
54
+ /* if needed configure software SE for mTLS */
55
+ if ((_ecc_cert_len > 0 ) && (_ecc_cert != nullptr ) && (_ecc_slot >= 0 )) {
56
+ modem.write_nowait (string (PROMPT (_SETECCSLOT)),res, " %s%d,%d,%d\r\n " , CMD_WRITE (_SETECCSLOT), _sock, _ecc_slot, _ecc_cert_len);
57
+ if (!modem.passthrough ((uint8_t *)_ecc_cert, _ecc_cert_len)) {
58
+ return 0 ;
59
+ }
46
60
}
47
- string res = " " ;
61
+
48
62
if (_connectionTimeout) {
49
63
if (modem.write (string (PROMPT (_SSLCLIENTCONNECT)),res, " %s%d,%s,%d,%d\r\n " , CMD_WRITE (_SSLCLIENTCONNECT), _sock, host,port, _connectionTimeout)) {
50
64
return 1 ;
51
65
}
52
66
} else {
53
- if (modem.write (string (PROMPT (_SSLCLIENTCONNECTNAME)),res, " %s%d,%s,%d\r\n " , CMD_WRITE (_SSLCLIENTCONNECTNAME), _sock, host, port)) {
54
- return 1 ;
55
- }
67
+ if (modem.write (string (PROMPT (_SSLCLIENTCONNECTNAME)),res, " %s%d,%s,%d\r\n " , CMD_WRITE (_SSLCLIENTCONNECTNAME), _sock, host, port)) {
68
+ return 1 ;
69
+ }
56
70
}
57
71
return 0 ;
58
72
}
59
73
60
74
/* -------------------------------------------------------------------------- */
61
- void WiFiSSLClient::setCACert (const char * root_ca, size_t size ) {
75
+ void WiFiSSLClient::setCACert (const char * root_ca) {
62
76
/* -------------------------------------------------------------------------- */
63
- getSocket ();
64
- string res = " " ;
65
- if (size > 0 ) {
66
- modem.write_nowait (string (PROMPT (_SETCAROOT)),res, " %s%d,%d\r\n " , CMD_WRITE (_SETCAROOT), _sock, size);
67
- if (modem.passthrough ((uint8_t *)root_ca, size)) {
68
- _root_ca = root_ca;
69
- }
70
- } else {
71
- modem.write (string (PROMPT (_SETCAROOT)),res, " %s%d\r\n " , CMD_WRITE (_SETCAROOT), _sock);
72
- }
77
+ _root_ca = root_ca;
73
78
}
74
79
75
80
/* -------------------------------------------------------------------------- */
76
81
void WiFiSSLClient::setEccSlot (int ecc508KeySlot, const byte cert[], int certLength) {
77
82
/* -------------------------------------------------------------------------- */
78
- getSocket ();
79
- string res = " " ;
80
- if (certLength > 0 ) {
81
- modem.write_nowait (string (PROMPT (_SETECCSLOT)),res, " %s%d,%d,%d\r\n " , CMD_WRITE (_SETECCSLOT), _sock, ecc508KeySlot, certLength);
82
- modem.passthrough ((uint8_t *)cert, certLength);
83
- _ecc_slot = ecc508KeySlot;
84
- _ecc_cert = cert;
85
- _ecc_cert_len = certLength;
86
- }
83
+ _ecc_slot = ecc508KeySlot;
84
+ _ecc_cert = cert;
85
+ _ecc_cert_len = certLength;
87
86
}
88
87
89
88
/* -------------------------------------------------------------------------- */
0 commit comments