@@ -36,9 +36,14 @@ 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 (!_custom_root) {
39
+ if (_root_ca != nullptr) {
40
+ setCACert(_root_ca);
41
+ } else {
40
42
setCACert();
41
43
}
44
+ if ((_ecc_slot != -1) && (_ecc_cert != nullptr) && (_ecc_cert_len != 0)) {
45
+ setEccSlot(_ecc_slot, _ecc_cert, _ecc_cert_len);
46
+ }
42
47
string res = "";
43
48
if (_connectionTimeout) {
44
49
if(modem.write(string(PROMPT(_SSLCLIENTCONNECT)),res, "%s%d,%s,%d,%d\r\n" , CMD_WRITE(_SSLCLIENTCONNECT), _sock, host,port, _connectionTimeout)) {
@@ -60,13 +65,27 @@ void WiFiSSLClient::setCACert(const char* root_ca, size_t size) {
60
65
if(size > 0) {
61
66
modem.write_nowait(string(PROMPT(_SETCAROOT)),res, "%s%d,%d\r\n" , CMD_WRITE(_SETCAROOT), _sock, size);
62
67
if(modem.passthrough((uint8_t *)root_ca, size)) {
63
- _custom_root = true ;
68
+ _root_ca = root_ca ;
64
69
}
65
70
} else {
66
71
modem.write(string(PROMPT(_SETCAROOT)),res, "%s%d\r\n" , CMD_WRITE(_SETCAROOT), _sock);
67
72
}
68
73
}
69
74
75
+ /* -------------------------------------------------------------------------- */
76
+ void WiFiSSLClient::setEccSlot(int ecc508KeySlot, const byte cert[], int certLength) {
77
+ /* -------------------------------------------------------------------------- */
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
+ }
87
+ }
88
+
70
89
/* -------------------------------------------------------------------------- */
71
90
size_t WiFiSSLClient::write(uint8_t b){
72
91
/* -------------------------------------------------------------------------- */
0 commit comments