Skip to content

Commit 2a36343

Browse files
committed
Fix WPA2 Enterprise example
1 parent d8ac9ff commit 2a36343

File tree

2 files changed

+117
-146
lines changed

2 files changed

+117
-146
lines changed

examples/WiFiWebClientWPA2Enterprise/WiFiWebClientWPA2Enterprise.ino

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
1-
21
/*
3-
Web client
2+
Web client using WPA2 Enterprise connection
43
5-
This sketch connects to a website (http://www.google.com)
6-
using the WiFi module.
4+
This sketch connects to a website (http://www.arduino.cc)
5+
using the WiFi module.
76
8-
This example is written for a network using WPA encryption. For
9-
WEP or WPA, change the WiFi.begin() call accordingly.
7+
This example is written for a network using WPA2 Enterprise encryption.
108
11-
Circuit:
12-
* Board with NINA module (Arduino MKR WiFi 1010, MKR VIDOR 4000 and UNO WiFi Rev.2)
9+
Circuit:
10+
Board with NINA module (Arduino MKR WiFi 1010, MKR VIDOR 4000 and UNO WiFi Rev.2)
1311
14-
created 13 July 2010
15-
by dlf (Metodo2 srl)
16-
modified 31 May 2012
17-
by Tom Igoe
18-
*/
12+
created 13 July 2010
13+
by dlf (Metodo2 srl)
14+
modified 31 May 2012
15+
by Tom Igoe
16+
*/
1917

2018

2119
#include <SPI.h>
2220
#include <WiFiNINA.h>
2321

24-
#include "arduino_secrets.h"
22+
#include "arduino_secrets.h"
2523
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
2624
char ssid[] = SECRET_SSID; // your network SSID (name)
27-
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP)
2825
int keyIndex = 0; // your network key Index number (needed only for WEP)
2926

3027
int status = WL_IDLE_STATUS;
3128
// if you don't want to use DNS (and reduce your sketch size)
3229
// use the numeric IP instead of the name for the server:
3330
//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS)
34-
char server[] = "www.google.com"; // name address for Google (using DNS)
31+
char server[] = "www.arduino.cc"; // name address for Google (using DNS)
3532

36-
// Initialize the Ethernet client library
37-
// with the IP address and port of the server
38-
// that you want to connect to (port 80 is default for HTTP):
33+
// Initialize the WiFi Client
3934
WiFiClient client;
4035

41-
// Initialize the WPA2 Enterprise object
42-
// Just fill the fields you need
43-
// eg. if you are given only an identity and a certificate, initialize it as
44-
// WPA2Enterprise data("myidentity", ca_pem);
45-
// Certificates are stored in the Secret tab to avoid sharing them.
46-
47-
WPA2Enterprise data(EAP_TLS, "myidentity", "username", "password", ca_pem, client_crt, client_key);
36+
// WPA2 Enterprise usage:
37+
38+
// Certificates and credentials are stored in secret tab to avoid sharing them.
39+
// For some networks (like eduroam) your configuration will simply look like
40+
//
41+
// #define SECRET_SSID "eduroam"
42+
// #define SECRET_USERNAME "[email protected]"
43+
// #define SECRET_PASS "yourpassword"
44+
//
45+
// Call WiFi.beginEnterprise(SECRET_SSID, SECRET_USERNAME, SECRET_PASS) and you should easily connect
46+
//
47+
// In case of more complicated networks (that require a certificate, for example) you can use
48+
// WPA2Enterprise functions
49+
// WPA2Enterprise.addCACertificate() , addClientCertificate(), addIdentity() ...
50+
// and then call WiFi.begin() as usual.
4851

4952
void setup() {
5053
//Initialize serial and wait for port to open:
@@ -53,8 +56,10 @@ void setup() {
5356
; // wait for serial port to connect. Needed for native USB port only
5457
}
5558

56-
// configure the WiFi module to use provided WPA2 Enterprise parameters
57-
WiFi.config(data);
59+
// Configure the wifi module to use provided WPA2 Enterprise parameters (if needed)
60+
Serial.println("Configuring WPA2 Enterprise credentials");
61+
WPA2Enterprise.addCACertificate(ca_pem);
62+
WPA2Enterprise.addClientCertificate(client_crt, client_key);
5863

5964
// check for the WiFi module:
6065
if (WiFi.status() == WL_NO_MODULE) {
@@ -72,8 +77,8 @@ void setup() {
7277
while (status != WL_CONNECTED) {
7378
Serial.print("Attempting to connect to SSID: ");
7479
Serial.println(ssid);
75-
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
76-
status = WiFi.begin(ssid, pass);
80+
// Connect to WPA2 enterptise network (no password needed).
81+
status = WiFi.beginEnterprise(ssid, SECRET_USERNAME, SECRET_PASSWORD);
7782

7883
// wait 10 seconds for connection:
7984
delay(10000);
@@ -86,8 +91,8 @@ void setup() {
8691
if (client.connect(server, 80)) {
8792
Serial.println("connected to server");
8893
// Make a HTTP request:
89-
client.println("GET /search?q=arduino HTTP/1.1");
90-
client.println("Host: www.google.com");
94+
client.println("GET /asciilogo.txt HTTP/1.1");
95+
client.println("Host: www.arduino.cc");
9196
client.println("Connection: close");
9297
client.println();
9398
}
Lines changed: 80 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,93 @@
1-
#define SECRET_SSID ""
2-
#define SECRET_PASS ""
1+
#define SECRET_SSID ""
2+
#define SECRET_USERNAME ""
3+
#define SECRET_PASSWORD ""
34

45
// These certificates are completely bogus, but your own should resemble this format
6+
// For testing, generate them using the bootstrap script in freeradius-server/raddb repository, then
7+
// * remove the password from client key with using this command
8+
// openssl rsa -in client.key -out client2.key # default password is "whatever"
9+
// * slim down client certificate by just keeping the snippet between BEGIN and END
510

611
const char * ca_pem = "-----BEGIN CERTIFICATE-----\n"
7-
"MIID3DCCA0WgAwIBAgIJANe5ZSCKoB8fMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD\n"
12+
"MIIE5DCCA8ygAwIBAgIJAM/ZGtauwvHrMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD\n"
813
"VQQGEwJGUjEPMA0GA1UECAwGUmFkaXVzMRIwEAYDVQQHDAlTb21ld2hlcmUxFTAT\n"
914
"BgNVBAoMDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBs\n"
10-
"ZS5jb20xJjAkBgNVBAMMHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X\n"
11-
"DTE2MTEyMzAyNTUwN1oXDTE3MDEyMjAyNTUwN1owgZMxCzAJBgNVBAYTAkZSMQ8w\n"
15+
"ZS5vcmcxJjAkBgNVBAMMHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X\n"
16+
"DTE4MDQyNDIxMzQ0MloXDTE5MDQyNDIxMzQ0MlowgZMxCzAJBgNVBAYTAkZSMQ8w\n"
1217
"DQYDVQQIDAZSYWRpdXMxEjAQBgNVBAcMCVNvbWV3aGVyZTEVMBMGA1UECgwMRXhh\n"
13-
"bXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQG\n"
14-
"A1UEAwwdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwgZ8wDQYJKoZIhvcN\n"
15-
"AQEBBQADgY0AMIGJAoGBAL03y7N2GvNDO9BN8fVtdNonp0bMiqpj1D0He5+OTM+9\n"
16-
"3ZTIsJCNrbzhLQrRI3vMW7UDy8U7GeWORN9W4dWYlYiy/NFRp3hNMrbePhVmNIOV\n"
17-
"ww4ovGzbD+Xo31gPVkhzQ8I5/jbOIQBmgKMAMZyOMlG9VD6yMmAeYqnZYz68WHKt\n"
18-
"AgMBAAGjggE0MIIBMDAdBgNVHQ4EFgQUf1MLQIzAEZcRsgZlS8sosfmVI+UwgcgG\n"
19-
"A1UdIwSBwDCBvYAUf1MLQIzAEZcRsgZlS8sosfmVI+WhgZmkgZYwgZMxCzAJBgNV\n"
20-
"BAYTAkZSMQ8wDQYDVQQIDAZSYWRpdXMxEjAQBgNVBAcMCVNvbWV3aGVyZTEVMBMG\n"
21-
"A1UECgwMRXhhbXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxl\n"
22-
"LmNvbTEmMCQGA1UEAwwdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCCQDX\n"
23-
"uWUgiqAfHzAMBgNVHRMEBTADAQH/MDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly93\n"
24-
"d3cuZXhhbXBsZS5jb20vZXhhbXBsZV9jYS5jcmwwDQYJKoZIhvcNAQELBQADgYEA\n"
25-
"GepHc7TE/P+5t/cZPn5TTQkWQ/4/1lgQd82lF36RYWSIW3BdAc0zwYWYZaWixxyp\n"
26-
"s0YOqwz6PZAGRV+SlYO2f8Kf+C3aZs4YHB0GsmksmFOb8r9d7xcDuOKHoA+QV0Zw\n"
27-
"RaK6pttsBAxy7rw3kX/CgTp0Y2puaLdMXv/v9FisCP8=\n"
18+
"bXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLm9yZzEmMCQG\n"
19+
"A1UEAwwdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqGSIb3\n"
20+
"DQEBAQUAA4IBDwAwggEKAoIBAQDBM2wjdTRn0OmRadONV9EZPQyUxuo9iJ6DKHkt\n"
21+
"rGEOd1gG4gNksrsF7gWcPdCWVCO49Xba1a16U/dyBPSuF7KHMO6Hx0OHZmJvCF1W\n"
22+
"en8BPY9ClreYAobqnHIdQRIP8R5tpXA8qZ5aZlnD5dUB8XDka0NDNEXbvmbop6PP\n"
23+
"OaGoNGsXzWN9mk2xQqHxYgoSHPER3QH2YCsKstgD87C/jTkHmtylv6j90PUhWTOm\n"
24+
"oIbkQG0d1f4RNxcDdcRr18wOvk62CW2+phkWWRie/Vw5Lu1dA/bGzxFV64jX5J1+\n"
25+
"ZZ5lyL87AE6bKtJjhLuqnPIarzenhmtCuGOsTTeFKgjlKLapAgMBAAGjggE3MIIB\n"
26+
"MzAdBgNVHQ4EFgQUSsYRmVXei6Km4z5QPSYOvz7Zu00wgcgGA1UdIwSBwDCBvYAU\n"
27+
"SsYRmVXei6Km4z5QPSYOvz7Zu02hgZmkgZYwgZMxCzAJBgNVBAYTAkZSMQ8wDQYD\n"
28+
"VQQIDAZSYWRpdXMxEjAQBgNVBAcMCVNvbWV3aGVyZTEVMBMGA1UECgwMRXhhbXBs\n"
29+
"ZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLm9yZzEmMCQGA1UE\n"
30+
"AwwdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCCQDP2RrWrsLx6zAPBgNV\n"
31+
"HRMBAf8EBTADAQH/MDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly93d3cuZXhhbXBs\n"
32+
"ZS5vcmcvZXhhbXBsZV9jYS5jcmwwDQYJKoZIhvcNAQELBQADggEBAFbOEusBzXfa\n"
33+
"0qdTw3U98t58BUxYYzScKZNjgS/MYVEdS0OaMxYyqstp8BKr8YugEHUHGDJt9k37\n"
34+
"yXGLVUeS+ST/Xy2UvOus7bLv0YYL26tQbBs5iDy9WJ3IBUtWhfqQW/ISpfma2uvN\n"
35+
"kFfGCV0JkPa57oR1kj0OPkOBQSXPwTbbabUdQmB+d6IZi9ZTMGLv1ogq75X5eSJP\n"
36+
"Qi6ql9nQF6TN24DIF8XJ/D6GJPbdmoMQ18VGoRlnz37Ee82ve9I5gvJquXZjOBd4\n"
37+
"rK7p3mrSzzkiCdjB8ehpJygmgT1U/ufE1PopES8hSkCgvQ2EsNBIGYiJUFRJfeEM\n"
38+
"kCCZqNTTmGE=\n"
2839
"-----END CERTIFICATE-----";
2940

30-
const char * client_crt = "Certificate:\n"
31-
" Data:\n"
32-
" Version: 3 (0x2)\n"
33-
" Serial Number: 44 (0x2c)\n"
34-
" Signature Algorithm: sha1WithRSAEncryption\n"
35-
" Issuer: C=FR, ST=Radius, L=Somewhere, O=Example Inc./[email protected], CN=Example Certificate Authority\n"
36-
" Validity\n"
37-
" Not Before: Nov 23 02:55:07 2016 GMT\n"
38-
" Not After : Jan 22 02:55:07 2017 GMT\n"
39-
" Subject: C=FR, ST=Radius, O=Example Inc., [email protected]/[email protected]\n"
40-
" Subject Public Key Info:\n"
41-
" Public Key Algorithm: rsaEncryption\n"
42-
" Public-Key: (2048 bit)\n"
43-
" Modulus:\n"
44-
" 00:ac:41:d4:a2:46:0c:dc:67:1d:7b:89:36:7c:15:\n"
45-
" be:a2:c1:fe:4c:f2:fa:af:5d:76:0e:ee:b5:ca:d4:\n"
46-
" d3:01:c8:6b:30:50:df:2d:57:17:f4:43:47:97:ca:\n"
47-
" f1:8d:f7:c0:9d:56:b3:e7:17:7c:58:59:de:f3:be:\n"
48-
" b5:08:5d:f8:3a:ad:83:44:0d:31:c9:f1:3d:f1:9a:\n"
49-
" cf:84:0c:ad:d3:be:5c:bd:3d:58:b5:1d:2c:fe:70:\n"
50-
" 8d:c5:b0:17:87:d4:8e:85:f7:51:4c:0f:d1:e0:8c:\n"
51-
" 7b:a0:25:ab:91:7c:7f:eb:47:73:c9:4b:6c:8b:e6:\n"
52-
" c1:06:d5:94:30:63:ec:45:1a:f5:7f:46:2f:b3:84:\n"
53-
" 78:5d:1c:37:1a:fa:57:ea:45:5e:45:40:ab:14:c7:\n"
54-
" 81:b0:26:3d:7e:cf:da:db:f0:f1:40:a7:a1:4b:54:\n"
55-
" f3:96:1b:c9:30:3c:3c:d8:19:ba:c7:df:b1:ad:a2:\n"
56-
" d6:17:0a:d6:ed:31:b5:cb:12:39:f5:6e:92:6b:85:\n"
57-
" f2:9e:c7:06:6b:bb:89:ed:a7:5f:ec:56:12:46:fd:\n"
58-
" 3a:74:d1:d2:31:30:1d:58:19:25:33:ff:11:ea:3a:\n"
59-
" 52:33:b1:fb:d3:75:8d:1f:5e:36:a5:35:e0:11:5a:\n"
60-
" 4a:2d:97:58:2c:3d:62:3c:32:af:83:69:a9:1a:32:\n"
61-
" 1b:b7\n"
62-
" Exponent: 65537 (0x10001)\n"
63-
" X509v3 extensions:\n"
64-
" X509v3 Extended Key Usage: \n"
65-
" TLS Web Client Authentication\n"
66-
" X509v3 CRL Distribution Points: \n"
67-
"\n"
68-
" Full Name:\n"
69-
" URI:http://www.example.com/example_ca.crl\n"
70-
"\n"
71-
" Signature Algorithm: sha1WithRSAEncryption\n"
72-
" 8b:8d:b6:19:ce:6f:6b:9e:1d:03:8b:6b:10:fc:99:d0:7a:2f:\n"
73-
" e0:37:ce:b8:a4:e4:b9:a1:c2:36:ff:76:b2:ad:d7:d0:df:d1:\n"
74-
" 03:27:93:a7:4e:1e:bf:ed:d2:b7:65:2a:c9:c3:ab:20:aa:e3:\n"
75-
" 10:4c:75:3b:c4:02:ab:34:08:6e:61:91:cf:e3:02:35:6a:e5:\n"
76-
" f3:25:96:51:92:82:6e:52:81:c1:f1:7b:68:02:b0:ce:f4:ba:\n"
77-
" fd:6e:68:35:b3:7e:77:cb:a0:1e:11:5e:58:bf:f3:2a:ed:b3:\n"
78-
" 4c:82:21:5e:1b:47:b6:2f:f3:f5:c9:1b:6a:70:44:6d:ff:ad:\n"
79-
" a6:e3\n"
80-
"-----BEGIN CERTIFICATE-----\n"
81-
"MIIDTjCCAregAwIBAgIBLDANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UEBhMCRlIx\n"
82-
"DzANBgNVBAgMBlJhZGl1czESMBAGA1UEBwwJU29tZXdoZXJlMRUwEwYDVQQKDAxF\n"
83-
"eGFtcGxlIEluYy4xIDAeBgkqhkiG9w0BCQEWEWFkbWluQGV4YW1wbGUuY29tMSYw\n"
84-
"JAYDVQQDDB1FeGFtcGxlIENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0xNjExMjMw\n"
85-
"MjU1MDdaFw0xNzAxMjIwMjU1MDdaMHExCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZS\n"
86-
"YWRpdXMxFTATBgNVBAoMDEV4YW1wbGUgSW5jLjEZMBcGA1UEAwwQdXNlckBleGFt\n"
87-
"cGxlLmNvbTEfMB0GCSqGSIb3DQEJARYQdXNlckBleGFtcGxlLmNvbTCCASIwDQYJ\n"
88-
"KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKxB1KJGDNxnHXuJNnwVvqLB/kzy+q9d\n"
89-
"dg7utcrU0wHIazBQ3y1XF/RDR5fK8Y33wJ1Ws+cXfFhZ3vO+tQhd+Dqtg0QNMcnx\n"
90-
"PfGaz4QMrdO+XL09WLUdLP5wjcWwF4fUjoX3UUwP0eCMe6Alq5F8f+tHc8lLbIvm\n"
91-
"wQbVlDBj7EUa9X9GL7OEeF0cNxr6V+pFXkVAqxTHgbAmPX7P2tvw8UCnoUtU85Yb\n"
92-
"yTA8PNgZusffsa2i1hcK1u0xtcsSOfVukmuF8p7HBmu7ie2nX+xWEkb9OnTR0jEw\n"
93-
"HVgZJTP/Eeo6UjOx+9N1jR9eNqU14BFaSi2XWCw9Yjwyr4NpqRoyG7cCAwEAAaNP\n"
94-
"ME0wEwYDVR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov\n"
95-
"L3d3dy5leGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOB\n"
96-
"gQCLjbYZzm9rnh0Di2sQ/JnQei/gN864pOS5ocI2/3ayrdfQ39EDJ5OnTh6/7dK3\n"
97-
"ZSrJw6sgquMQTHU7xAKrNAhuYZHP4wI1auXzJZZRkoJuUoHB8XtoArDO9Lr9bmg1\n"
98-
"s353y6AeEV5Yv/Mq7bNMgiFeG0e2L/P1yRtqcERt/62m4w==\n"
41+
const char * client_crt = "-----BEGIN CERTIFICATE-----\n"
42+
"MIIEQTCCAymgAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBkjELMAkGA1UEBhMCRlIx\n"
43+
"DzANBgNVBAgMBlJhZGl1czESMBAGA1UEBwwJU29tZXdoZXJlMRQwEgYDVQQKDAtF\n"
44+
"eGFtcGxlIEluYzEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5vcmcxJjAk\n"
45+
"BgNVBAMMHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTE5MDgxMjE0\n"
46+
"MTEyMVoXDTE5MTAxMTE0MTEyMVowdDELMAkGA1UEBhMCRlIxDzANBgNVBAgMBlJh\n"
47+
"ZGl1czEUMBIGA1UECgwLRXhhbXBsZSBJbmMxFTATBgNVBAMMDEV4YW1wbGUgdXNl\n"
48+
"cjEnMCUGCSqGSIb3DQEJARYYdXNlci5leGFtcGxlQGV4YW1wbGUub3JnMIIBIjAN\n"
49+
"BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtaiggI1w7wez/DjYM+F1RDUMa73J\n"
50+
"07+XZM1OxQuRt8hbwh8wod1Bmu3iFtsSnzssygeek/9+Vd6gXqW5jBa4sMz0CQM1\n"
51+
"PkIjBsgjPaKk98c2tyDYqA+nz0Wi9JOkAKPQwTTDijsAF3QfgcGvWZJngjHkeKoz\n"
52+
"1BLJehDO4wOu1z3kB8CQGWQ0hZW2Sjt+qFqDTXt8Q0GF+nehqx7juHw/e6QDNiuH\n"
53+
"Xmf0adJWUzFeMnQewUDD5R3EBLUiWzKbRFxoi0qs/tM1IUPQ0fASHcJMwZllCZpa\n"
54+
"3B9nxAhLScR8RjDU0d0F+3hQGNKShJyvvR6dM2Qzie8H2yA7QrLdRX8XywIDAQAB\n"
55+
"o4G+MIG7MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUF\n"
56+
"BwMCMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly93d3cuZXhhbXBsZS5jb20vZXhh\n"
57+
"bXBsZV9jYS5jcmwwNwYIKwYBBQUHAQEEKzApMCcGCCsGAQUFBzABhhtodHRwOi8v\n"
58+
"d3d3LmV4YW1wbGUub3JnL29jc3AwGwYDVR0RBBQwEoEQdXNlckBleGFtcGxlLm9y\n"
59+
"ZzANBgkqhkiG9w0BAQsFAAOCAQEAVC05K4XqjfjoTgQeB7FtjDUiuQedbNi3z3Sy\n"
60+
"2qZVqgaYa+z9cijrL6Z7Z5BvM+JWUxfPjiXXF6M/j1QeyNLKtieDusO/yUaQTmSz\n"
61+
"fyYbdXNlGBzsMLGMgp+xComZ5ZUQQwsmx8phagWqNlzAnQuLyyRshj+hOYjmysXs\n"
62+
"2V6SUfRMEdgr57hRREHZBjJq/PQZL0Kw7BiXMYhMfFJfe1Z4LBYhRqAPDWVoPI1j\n"
63+
"MNXM6X7R5zSNRbrj9biT4WNLBDooDW4Bzz1cimLock/nCY+TTj8Xoy/0szqkIdps\n"
64+
"G1SM9dB7SdXDW6DewvRK28+9xe6HG4xsLtNNYFWqhPkF5S4BIg==\n"
9965
"-----END CERTIFICATE-----";
10066

10167
const char * client_key = "-----BEGIN RSA PRIVATE KEY-----\n"
102-
"MIIEpgIBAAKCAQEArEHUokYM3Gcde4k2fBW+osH+TPL6r112Du61ytTTAchrMFDf\n"
103-
"LVcX9ENHl8rxjffAnVaz5xd8WFne8761CF34Oq2DRA0xyfE98ZrPhAyt075cvT1Y\n"
104-
"tR0s/nCNxbAXh9SOhfdRTA/R4Ix7oCWrkXx/60dzyUtsi+bBBtWUMGPsRRr1f0Yv\n"
105-
"s4R4XRw3GvpX6kVeRUCrFMeBsCY9fs/a2/DxQKehS1TzlhvJMDw82Bm6x9+xraLW\n"
106-
"FwrW7TG1yxI59W6Sa4XynscGa7uJ7adf7FYSRv06dNHSMTAdWBklM/8R6jpSM7H7\n"
107-
"03WNH142pTXgEVpKLZdYLD1iPDKvg2mpGjIbtwIDAQABAoIBAQCMhO9GqUpYia2d\n"
108-
"VyOhOcPX1dTzRMuHPwDN0aFvIwo2zB3UvkQxInkiA7hldWJz44W3VEFR5PDEyht8\n"
109-
"Tzgy6SVUCLOqUfEpwag8bYOXPxiWQRY6Mc8pf/FyZrLgb3PilFznoAcru0QEn9VB\n"
110-
"oTlCZ4OalSE5NlQIFGemgZhvmTPmcm4OwPW2diBjLtb3AA8eaaw8okWZwr8g4Bcd\n"
111-
"el5KX6pZpDRpGQueh3iKaKxYWbxLYK+c30gKWD65tsAqKyVg2Tm1R2c+kFXgizZt\n"
112-
"EexD95SGMjSkGg3R05sKv6m71iJhlOzVQ4ZCKm18Kqa7wZuZ4SIehVmKIV0gaupz\n"
113-
"gjyr7+NBAoGBAOGjjGI3nxJTZY3O+KeaQo/jqrKowqZxzMOsCgAvW56xDuAvx9TJ\n"
114-
"m4428NGubMl/0RwX6TnxJDm6oe+tnOxLIgE/VnsQLiNzQuFJxrs5JYctdGc4uvk2\n"
115-
"KuXDr7tPEYlU/7OLRReov9emydIXJnsGejkIPllUj+DGNjNFqtXh2VoHAoGBAMNv\n"
116-
"eSgJSkcM6AUaDuUKaXBL2nkKHNoTtRQ0eCEUds6arKyMo0mSP753FNEuOWToVz1O\n"
117-
"oaddSFw81J9t+Xd6XSRbhMj63bQ9nvFKBA1lJfLu+xe3ts0f+vmp1PguOuUHsgNP\n"
118-
"aAm/gLPSKUpBO46NG6KhUrZ2ej6AEg7SuGXrDITRAoGBAKK7s6m6d81dvGZ0GT23\n"
119-
"sb3Y8ul7cTdd59JPp77OaQOgqxvhGfxLkxcUZMa1R9xjhMsAK8MQOZIxGk2kJwL8\n"
120-
"hP/lUFfdKYmDvX6CGQQ6iOhfTg6MCb1m5bVkVr9+nSUw2mIBVclkeUftEK2m6Kfd\n"
121-
"2hR774u5wzLXgYuk+TrcckfNAoGBAJ9X8hacjH0lnr8aIe7I8HLoxbZOcnuz+b4B\n"
122-
"kbiW8M8++W6uNCw2G9b1THnJEG6fqRGJXPASdH8P8eQTTIUHtY2BOOCM+dqNK1xc\n"
123-
"FrW9NJXAF+WcmmTgoEaTG9tGBirafV+JjK/1/b+fqJ6sVRzDHDcbBU9ThhQTY6XG\n"
124-
"VSZz4H8hAoGBAMeQQjiUlKBnpGt1oTgKDZo58b7ui61yftg+dEAwIKs6eb5X20vZ\n"
125-
"Ca4v/zg06k9lKTzyspQjJZuzpMjFUvDK4ReamEvmwQTIc+oYVJm9Af1HUytzrHJH\n"
126-
"u0/dDt0eYpZpzrFqxlP+0oXxlegD8REMVvwNCy+4isyCvjogDaYRfJqi\n"
68+
"MIIEpAIBAAKCAQEAtaiggI1w7wez/DjYM+F1RDUMa73J07+XZM1OxQuRt8hbwh8w\n"
69+
"od1Bmu3iFtsSnzssygeek/9+Vd6gXqW5jBa4sMz0CQM1PkIjBsgjPaKk98c2tyDY\n"
70+
"qA+nz0Wi9JOkAKPQwTTDijsAF3QfgcGvWZJngjHkeKoz1BLJehDO4wOu1z3kB8CQ\n"
71+
"GWQ0hZW2Sjt+qFqDTXt8Q0GF+nehqx7juHw/e6QDNiuHXmf0adJWUzFeMnQewUDD\n"
72+
"5R3EBLUiWzKbRFxoi0qs/tM1IUPQ0fASHcJMwZllCZpa3B9nxAhLScR8RjDU0d0F\n"
73+
"+3hQGNKShJyvvR6dM2Qzie8H2yA7QrLdRX8XywIDAQABAoIBABl0MmEw8HUd0DN0\n"
74+
"R58lZUgUYtQp+MDJ5M3EEth7YYSt92WA91CG7y1lTbvEIJzdLs50ON0l/K7Njg0V\n"
75+
"DaW6fVCQt1UX9PrvS3ckzgNR6emqKVmJqbIK14msiUPZ+C36xkJ8QTX6RG4E4HFP\n"
76+
"EWHsqMJOeWQK/U4m/8Ix3rtihbo0/ihfkc31HeLMqOzomf3d4XNxg9idmEPYpFrC\n"
77+
"XlusQTql6FCC8hKeayPcETVQ1x7iu2rg6zhKNmfosAUYuefCRA4KUvHbwkjwwpwh\n"
78+
"em76wMDGY5T06orFn13bQ2b3qP9aptK9Bj8lY3BQEkqKAHcAPf+31l5UZbcUStTg\n"
79+
"PrFD8AECgYEA7dNZav257Naqg2qGt157ILukRIdCj8BqCq7awzlJQ7dNAO9zPEBf\n"
80+
"cKEJAN3hrlJsT72lWkbGoLUGUGLmL+jUR2VP80+ETEeCxU/EErue6SRyXHC7triY\n"
81+
"4VGX8vmUtdeeOEyl+2QcIgwldQL0skyKl69GzKeH+mQbXtA+IXmEH8sCgYEAw4p3\n"
82+
"+mKIPu6alZm3/LeEzUavApiUP+w/0dLnSpAhs7vjn+Jv2eQBm5ymg0dBkZuRNXmh\n"
83+
"p4dik4PlILPITq+T9GyVMg4g0utX9Xz78uGlKrNzWj2yMLv0o0l4FnW8aykHIoRi\n"
84+
"B2+zTxfB3gMckvJ++VWs4q8kZWCpM7onsSIh6AECgYEArHvrTyCDttSdyD/7QoSA\n"
85+
"kmXkplrfGHj5r5PPT2V90GHhtDr1/Y3Gal4wtHM32YEn0tF9WjMYnbeMw8Jmpfqb\n"
86+
"8sf0q0dRcS0wF8BZOSjgAMERPB/61HOfVVMi+/KtOxENTFGy09dwW/UpOWsSYzoG\n"
87+
"DiruE0Gx6hSukR5A4XBLNe8CgYBjyrjsOXja1R5jFq4E9Qt7T4VlR8Tw0nrHdGDB\n"
88+
"dskcVtkV8ZOvmWMQrWN1P9pAmyoCJm7PdpJiQj+e7uFc9tIFPZzujLNHsP+UsxJJ\n"
89+
"o8qM/kPyW+YiZOm2o3n7zF46OhgAD5uPu/vAc5lm2iOtAsC2MnkmvsdOTYRMd8Zl\n"
90+
"6ctwAQKBgQDe0tEm8EkIIwHm/yYpkGb3NXA/e+SM8o1Qcpl1N3A9yfU+dPxklLXE\n"
91+
"rFfELDn3vi26KPhoE1d7hOr6Goy/63Mryp+4VKNEKspDnqWvECr/oMeANu0qNRtn\n"
92+
"YVD6e1rWtZe007GVQfM+HJD9AFHSRwdAsrLNDDe8l7S984C/2ua5kg==\n"
12793
"-----END RSA PRIVATE KEY-----";

0 commit comments

Comments
 (0)