mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-31 06:01:39 +01:00 
			
		
		
		
	* WiFiClientSecure: add support for PSK (pre-shared key) ciphers * add example for WiFiClientSecure PSK * WiFiClientSecure: added README
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|   Wifi secure connection example for ESP32 using a pre-shared key (PSK)
 | |
|   This is useful with MQTT servers instead of using a self-signed cert, tested with mosquitto.
 | |
|   Running on TLS 1.2 using mbedTLS
 | |
| 
 | |
|   To test run a test server using: openssl s_server -accept 8443 -psk 1a2b3c4d -nocert
 | |
|   It will show the http request made, but there's no easy way to send a reply back...
 | |
| 
 | |
|   2017 - Evandro Copercini - Apache 2.0 License.
 | |
|   2018 - Adapted for PSK by Thorsten von Eicken
 | |
| */
 | |
| 
 | |
| #include <WiFiClientSecure.h>
 | |
| 
 | |
| #if 0
 | |
| const char* ssid     = "your-ssid";     // your network SSID (name of wifi network)
 | |
| const char* password = "your-password"; // your network password
 | |
| #else
 | |
| const char* ssid     = "test";     // your network SSID (name of wifi network)
 | |
| const char* password = "securetest"; // your network password
 | |
| #endif
 | |
| 
 | |
| //const char*  server = "server.local";  // Server hostname
 | |
| const IPAddress server = IPAddress(192, 168, 0, 14);  // Server IP address
 | |
| const int    port = 8443; // server's port (8883 for MQTT)
 | |
| 
 | |
| const char*  pskIdent = "Client_identity"; // PSK identity (sometimes called key hint)
 | |
| const char*  psKey = "1a2b3c4d"; // PSK Key (must be hex string without 0x)
 | |
| 
 | |
| WiFiClientSecure client;
 | |
| 
 | |
| void setup() {
 | |
|   //Initialize serial and wait for port to open:
 | |
|   Serial.begin(115200);
 | |
|   delay(100);
 | |
| 
 | |
|   Serial.print("Attempting to connect to SSID: ");
 | |
|   Serial.println(ssid);
 | |
|   WiFi.begin(ssid, password);
 | |
| 
 | |
|   // attempt to connect to Wifi network:
 | |
|   while (WiFi.status() != WL_CONNECTED) {
 | |
|     Serial.print(".");
 | |
|     // wait 1 second for re-trying
 | |
|     delay(1000);
 | |
|   }
 | |
| 
 | |
|   Serial.print("Connected to ");
 | |
|   Serial.println(ssid);
 | |
| 
 | |
|   client.setPreSharedKey(pskIdent, psKey);
 | |
| 
 | |
|   Serial.println("\nStarting connection to server...");
 | |
|   if (!client.connect(server, port))
 | |
|     Serial.println("Connection failed!");
 | |
|   else {
 | |
|     Serial.println("Connected to server!");
 | |
|     // Make a HTTP request:
 | |
|     client.println("GET /a/check HTTP/1.0");
 | |
|     client.print("Host: ");
 | |
|     client.println(server);
 | |
|     client.println("Connection: close");
 | |
|     client.println();
 | |
| 
 | |
|     while (client.connected()) {
 | |
|       String line = client.readStringUntil('\n');
 | |
|       if (line == "\r") {
 | |
|         Serial.println("headers received");
 | |
|         break;
 | |
|       }
 | |
|     }
 | |
|     // if there are incoming bytes available
 | |
|     // from the server, read them and print them:
 | |
|     while (client.available()) {
 | |
|       char c = client.read();
 | |
|       Serial.write(c);
 | |
|     }
 | |
| 
 | |
|     client.stop();
 | |
|   }
 | |
| }
 | |
| 
 | |
| void loop() {
 | |
|   // do nothing
 | |
| }
 |