Skip to content

Commit 69f8cd6

Browse files
authored
Certificate and public keys automatic updater (#8218)
1 parent c9f2741 commit 69f8cd6

File tree

13 files changed

+462
-126
lines changed

13 files changed

+462
-126
lines changed

libraries/ESP8266WiFi/examples/BearSSL_Sessions/BearSSL_Sessions.ino

+6-32
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <ESP8266WiFi.h>
77
#include <time.h>
8+
#include "certs.h"
89

910
#ifndef STASSID
1011
#define STASSID "your-ssid"
@@ -14,8 +15,6 @@
1415
const char *ssid = STASSID;
1516
const char *pass = STAPSK;
1617

17-
const char * host = "api.github.com";
18-
const uint16_t port = 443;
1918
const char * path = "/";
2019

2120
void setup() {
@@ -97,39 +96,14 @@ void fetchURL(BearSSL::WiFiClientSecure *client, const char *host, const uint16_
9796

9897

9998
void loop() {
100-
static const char digicert[] PROGMEM = R"EOF(
101-
-----BEGIN CERTIFICATE-----
102-
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
103-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
104-
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
105-
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
106-
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
107-
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
108-
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
109-
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
110-
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
111-
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
112-
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
113-
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
114-
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
115-
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
116-
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
117-
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
118-
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
119-
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
120-
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
121-
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
122-
+OkuE6N36B9K
123-
-----END CERTIFICATE-----
124-
)EOF";
12599
uint32_t start, finish;
126100
BearSSL::WiFiClientSecure client;
127-
BearSSL::X509List cert(digicert);
101+
BearSSL::X509List cert(cert_DigiCert_High_Assurance_EV_Root_CA);
128102

129103
Serial.printf("Connecting without sessions...");
130104
start = millis();
131105
client.setTrustAnchors(&cert);
132-
fetchURL(&client, host, port, path);
106+
fetchURL(&client, github_host, github_port, path);
133107
finish = millis();
134108
Serial.printf("Total time: %dms\n", finish - start);
135109

@@ -138,21 +112,21 @@ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
138112
Serial.printf("Connecting with an uninitialized session...");
139113
start = millis();
140114
client.setTrustAnchors(&cert);
141-
fetchURL(&client, host, port, path);
115+
fetchURL(&client, github_host, github_port, path);
142116
finish = millis();
143117
Serial.printf("Total time: %dms\n", finish - start);
144118

145119
Serial.printf("Connecting with the just initialized session...");
146120
start = millis();
147121
client.setTrustAnchors(&cert);
148-
fetchURL(&client, host, port, path);
122+
fetchURL(&client, github_host, github_port, path);
149123
finish = millis();
150124
Serial.printf("Total time: %dms\n", finish - start);
151125

152126
Serial.printf("Connecting again with the initialized session...");
153127
start = millis();
154128
client.setTrustAnchors(&cert);
155-
fetchURL(&client, host, port, path);
129+
fetchURL(&client, github_host, github_port, path);
156130
finish = millis();
157131
Serial.printf("Total time: %dms\n", finish - start);
158132

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
cd ${0%/*} 2>/dev/null
2+
python3 ../../../../tools/cert.py -s api.github.com -n github > certs.h
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
2+
// this file is autogenerated - any modification will be overwritten
3+
// unused symbols will not be linked in the final binary
4+
// generated on 2021-07-16 02:12:55
5+
// by ['../../../../tools/cert.py', '-s', 'api.github.com', '-n', 'github']
6+
7+
#pragma once
8+
9+
////////////////////////////////////////////////////////////
10+
// certificate chain for api.github.com:443
11+
12+
const char* github_host = "api.github.com";
13+
const uint16_t github_port = 443;
14+
15+
// CN: *.github.com => name: __github_com
16+
// not valid before: 2021-03-25 00:00:00
17+
// not valid after: 2022-03-30 23:59:59
18+
const char fingerprint___github_com [] PROGMEM = "96:84:07:df:0b:1c:f6:58:14:df:d7:33:35:57:51:9b:15:4d:8c:e7";
19+
const char pubkey___github_com [] PROGMEM = R"PUBKEY(
20+
-----BEGIN PUBLIC KEY-----
21+
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElL9/+0TidTIALPfU/tiS6pI8zAIk
22+
rU4pohUldVc0bb6O3FARl3cnqIDK9SoF65z3xiR6XsnFS8F0Oy/chXR/kQ==
23+
-----END PUBLIC KEY-----
24+
)PUBKEY";
25+
26+
// http://cacerts.digicert.com/DigiCertHighAssuranceTLSHybridECCSHA2562020CA1.crt
27+
// CN: DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1 => name: DigiCert_High_Assurance_TLS_Hybrid_ECC_SHA256_2020_CA1
28+
// not valid before: 2020-12-17 00:00:00
29+
// not valid after: 2030-12-16 23:59:59
30+
const char cert_DigiCert_High_Assurance_TLS_Hybrid_ECC_SHA256_2020_CA1 [] PROGMEM = R"CERT(
31+
-----BEGIN CERTIFICATE-----
32+
MIIEGzCCAwOgAwIBAgIQBmcDW7sU/WOvwNaoU07+FjANBgkqhkiG9w0BAQsFADBs
33+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
34+
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
35+
ZSBFViBSb290IENBMB4XDTIwMTIxNzAwMDAwMFoXDTMwMTIxNjIzNTk1OVowZzEL
36+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMT8wPQYDVQQDEzZE
37+
aWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBUTFMgSHlicmlkIEVDQyBTSEEyNTYgMjAy
38+
MCBDQTEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARnvW/xPOudvtC252wTq9ef
39+
6fbdFeWPkOscfpRTkciuHj7UcumQSH3lzkPEIx0KpesWa8epsks7QwkZ4fU/Tkf9
40+
o4IBhzCCAYMwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUUGGmoNI1xBEq
41+
II0fD6xC8M0pz0swHwYDVR0jBBgwFoAUsT7DaQP4v0cB1JgmGggC72NkK8MwDgYD
42+
VR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB/Bggr
43+
BgEFBQcBAQRzMHEwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNv
44+
bTBJBggrBgEFBQcwAoY9aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lD
45+
ZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNydDBLBgNVHR8ERDBCMECgPqA8hjpo
46+
dHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZS
47+
b290Q0EuY3JsMDAGA1UdIAQpMCcwCAYGZ4EMAQICMAgGBmeBDAECAzAHBgVngQwB
48+
ATAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAHMQH8hhiBfNbxwEwxbbTAnu
49+
jPyUh/oi0JrfZI3u9JuiLqca720D6foS/AB5+4EIxpm7CMG4MdN/l7oAiDipaCPv
50+
mOmpYUpnT7A63Cr0q4g84rI1ZmdqA40lVUUf6qC6E34tC73qDQF8TJSrfscWFdCl
51+
RXR9J4QGrkZ2VNMSDzlDRzWCaA95MfO8x01l+ZdopdE8FvM78gGd4zxeWb8v991+
52+
mBxTDepqKuy/jF5Rm6Bhfxr33ADRs60s1t16dtZ3pOYLALBTPD5KhZ6a+/dk5dnh
53+
6c4PaeZQYBUAh+GuxfaBlU4qQ8EtjBMCQHreMIwXHYHW5FRYGjgR4NMuaIw2jD0=
54+
-----END CERTIFICATE-----
55+
)CERT";
56+
57+
// http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt
58+
// CN: DigiCert High Assurance EV Root CA => name: DigiCert_High_Assurance_EV_Root_CA
59+
// not valid before: 2006-11-10 00:00:00
60+
// not valid after: 2031-11-10 00:00:00
61+
const char cert_DigiCert_High_Assurance_EV_Root_CA [] PROGMEM = R"CERT(
62+
-----BEGIN CERTIFICATE-----
63+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
64+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
65+
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
66+
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
67+
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
68+
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
69+
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
70+
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
71+
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
72+
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
73+
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
74+
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
75+
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
76+
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
77+
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
78+
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
79+
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
80+
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
81+
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
82+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
83+
+OkuE6N36B9K
84+
-----END CERTIFICATE-----
85+
)CERT";
86+
87+
88+
// end of certificate chain for api.github.com:443
89+
////////////////////////////////////////////////////////////
90+

libraries/ESP8266WiFi/examples/BearSSL_Validation/BearSSL_Validation.ino

+13-53
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <WiFiClientSecure.h>
99
#include <StackThunk.h>
1010
#include <time.h>
11+
#include "certs.h"
1112

1213
#ifndef STASSID
1314
#define STASSID "your-ssid"
@@ -17,8 +18,6 @@
1718
const char *ssid = STASSID;
1819
const char *pass = STAPSK;
1920

20-
const char * host = "api.github.com";
21-
const uint16_t port = 443;
2221
const char * path = "/";
2322

2423
// Set time via NTP, as required for x.509 validation
@@ -92,7 +91,7 @@ If there are no CAs or insecure options specified, BearSSL will not connect.
9291
Expect the following call to fail as none have been configured.
9392
)EOF");
9493
BearSSL::WiFiClientSecure client;
95-
fetchURL(&client, host, port, path);
94+
fetchURL(&client, gitlab_host, gitlab_port, path);
9695
}
9796

9897
void fetchInsecure() {
@@ -103,7 +102,7 @@ which is subject to man-in-the-middle (MITM) attacks.
103102
)EOF");
104103
BearSSL::WiFiClientSecure client;
105104
client.setInsecure();
106-
fetchURL(&client, host, port, path);
105+
fetchURL(&client, gitlab_host, gitlab_port, path);
107106
}
108107

109108
void fetchFingerprint() {
@@ -116,9 +115,8 @@ fingerprints will change if anything changes in the certificate chain
116115
the root authorities, etc.).
117116
)EOF");
118117
BearSSL::WiFiClientSecure client;
119-
static const char fp[] PROGMEM = "59:74:61:88:13:CA:12:34:15:4D:11:0A:C1:7F:E6:67:07:69:42:F5";
120-
client.setFingerprint(fp);
121-
fetchURL(&client, host, port, path);
118+
client.setFingerprint(fingerprint_gitlab_com);
119+
fetchURL(&client, gitlab_host, gitlab_port, path);
122120
}
123121

124122
void fetchSelfSigned() {
@@ -142,51 +140,13 @@ needs to be paired with the private key of the site, which is obviously
142140
private and not shared. A MITM without the private key would not be
143141
able to establish communications.
144142
)EOF");
145-
// Extracted by: openssl x509 -pubkey -noout -in servercert.pem
146-
static const char pubkey[] PROGMEM = R"KEY(
147-
-----BEGIN PUBLIC KEY-----
148-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+3Up8qBkIn/7S9AfWlH
149-
Od8SdXmnWx+JCIHvnWzjFcLeLvQb2rMqqCDL5XDlvkyC5SZ8ZyLITemej5aJYuBv
150-
zcKPzyZ0QfYZiskU9nzL2qBQj8alzJJ/Cc32AWuuWrPrzVxBmOEW9gRCGFCD3m0z
151-
53y6GjcmBS2wcX7RagqbD7g2frEGko4G7kmW96H6dyh2j9Rou8TwAK6CnbiXPAM/
152-
5Q6dyfdYlHOCgP75F7hhdKB5gpprm9A/OnQsmZjUPzy4u0EKCxE8MfhBerZrZdod
153-
88ZdDG3CvTgm050bc+lGlbsT+s09lp0dgxSZIeI8+syV2Owt4YF/PdjeeymtzQdI
154-
wQIDAQAB
155-
-----END PUBLIC KEY-----
156-
)KEY";
157143
BearSSL::WiFiClientSecure client;
158-
BearSSL::PublicKey key(pubkey);
144+
BearSSL::PublicKey key(pubkey_gitlab_com);
159145
client.setKnownKey(&key);
160-
fetchURL(&client, host, port, path);
146+
fetchURL(&client, gitlab_host, gitlab_port, path);
161147
}
162148

163149
void fetchCertAuthority() {
164-
static const char digicert[] PROGMEM = R"EOF(
165-
-----BEGIN CERTIFICATE-----
166-
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
167-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
168-
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
169-
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
170-
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
171-
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
172-
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
173-
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
174-
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
175-
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
176-
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
177-
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
178-
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
179-
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
180-
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
181-
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
182-
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
183-
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
184-
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
185-
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
186-
+OkuE6N36B9K
187-
-----END CERTIFICATE-----
188-
)EOF";
189-
190150
Serial.printf(R"EOF(
191151
A specific certification authority can be passed in and used to validate
192152
a chain of certificates from a given server. These will be validated
@@ -197,14 +157,14 @@ BearSSL does verify the notValidBefore/After fields.
197157
)EOF");
198158

199159
BearSSL::WiFiClientSecure client;
200-
BearSSL::X509List cert(digicert);
160+
BearSSL::X509List cert(cert_USERTrust_RSA_Certification_Authority);
201161
client.setTrustAnchors(&cert);
202162
Serial.printf("Try validating without setting the time (should fail)\n");
203-
fetchURL(&client, host, port, path);
163+
fetchURL(&client, gitlab_host, gitlab_port, path);
204164

205165
Serial.printf("Try again after setting NTP time (should pass)\n");
206166
setClock();
207-
fetchURL(&client, host, port, path);
167+
fetchURL(&client, gitlab_host, gitlab_port, path);
208168
}
209169

210170
void fetchFaster() {
@@ -217,18 +177,18 @@ may make sense
217177
BearSSL::WiFiClientSecure client;
218178
client.setInsecure();
219179
uint32_t now = millis();
220-
fetchURL(&client, host, port, path);
180+
fetchURL(&client, gitlab_host, gitlab_port, path);
221181
uint32_t delta = millis() - now;
222182
client.setInsecure();
223183
client.setCiphersLessSecure();
224184
now = millis();
225-
fetchURL(&client, host, port, path);
185+
fetchURL(&client, gitlab_host, gitlab_port, path);
226186
uint32_t delta2 = millis() - now;
227187
std::vector<uint16_t> myCustomList = { BR_TLS_RSA_WITH_AES_256_CBC_SHA256, BR_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, BR_TLS_RSA_WITH_3DES_EDE_CBC_SHA };
228188
client.setInsecure();
229189
client.setCiphers(myCustomList);
230190
now = millis();
231-
fetchURL(&client, host, port, path);
191+
fetchURL(&client, gitlab_host, gitlab_port, path);
232192
uint32_t delta3 = millis() - now;
233193
Serial.printf("Using more secure: %dms\nUsing less secure ciphers: %dms\nUsing custom cipher list: %dms\n", delta, delta2, delta3);
234194
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
cd ${0%/*} 2>/dev/null
2+
python3 ../../../../tools/cert.py -s www.gitlab.com -n gitlab > certs.h

0 commit comments

Comments
 (0)