HoYa's MBED (Nucleo-F401RE)

Dependencies:   NetworkSocketAPI X_NUCLEO_IDW01M1v2 mbed

Committer:
HoYa
Date:
Fri Jul 21 03:14:02 2017 +0000
Revision:
3:ad353d5bf223
Parent:
2:d7647babe160
Secured TCP Testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HoYa 0:63d30ec829b6 1 #include "mbed.h"
HoYa 0:63d30ec829b6 2 #include "SpwfInterface.h"
HoYa 1:b2b7580e09d7 3 #include "TCPSocket.h"
HoYa 0:63d30ec829b6 4
HoYa 0:63d30ec829b6 5 Serial pc(USBTX, USBRX, 115200);
HoYa 0:63d30ec829b6 6 DigitalOut led(LED1);
HoYa 0:63d30ec829b6 7
HoYa 1:b2b7580e09d7 8 SpwfSAInterface spwf(D8, D2, false);
HoYa 0:63d30ec829b6 9
HoYa 3:ad353d5bf223 10 //www.mbed.com CA certificate in PEM format
HoYa 3:ad353d5bf223 11 char CA_cert []="-----BEGIN CERTIFICATE-----\r\n"
HoYa 3:ad353d5bf223 12 "MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT\r\n"
HoYa 3:ad353d5bf223 13 "MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i\r\n"
HoYa 3:ad353d5bf223 14 "YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG\r\n"
HoYa 3:ad353d5bf223 15 "EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg\r\n"
HoYa 3:ad353d5bf223 16 "R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9\r\n"
HoYa 3:ad353d5bf223 17 "9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq\r\n"
HoYa 3:ad353d5bf223 18 "fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv\r\n"
HoYa 3:ad353d5bf223 19 "iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU\r\n"
HoYa 3:ad353d5bf223 20 "1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+\r\n"
HoYa 3:ad353d5bf223 21 "bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW\r\n"
HoYa 3:ad353d5bf223 22 "MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA\r\n"
HoYa 3:ad353d5bf223 23 "ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l\r\n"
HoYa 3:ad353d5bf223 24 "uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn\r\n"
HoYa 3:ad353d5bf223 25 "Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS\r\n"
HoYa 3:ad353d5bf223 26 "tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF\r\n"
HoYa 3:ad353d5bf223 27 "PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un\r\n"
HoYa 3:ad353d5bf223 28 "hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV\r\n"
HoYa 3:ad353d5bf223 29 "5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==\r\n"
HoYa 3:ad353d5bf223 30 "-----END CERTIFICATE-----\r\n";
HoYa 3:ad353d5bf223 31
HoYa 0:63d30ec829b6 32 int main() {
HoYa 0:63d30ec829b6 33 pc.printf("\r\n");
HoYa 0:63d30ec829b6 34 pc.printf("Start Application\r\n");
HoYa 0:63d30ec829b6 35
HoYa 2:d7647babe160 36 // Wi-Fi
HoYa 1:b2b7580e09d7 37 pc.printf("\r\n");
HoYa 0:63d30ec829b6 38 pc.printf("Connecting to AP...\r\n");
HoYa 0:63d30ec829b6 39 if (spwf.connect("hRPi3-AP", "rlawjdgh", NSAPI_SECURITY_WPA2)) {
HoYa 0:63d30ec829b6 40 pc.printf("=> Success.\r\n");
HoYa 0:63d30ec829b6 41 } else {
HoYa 0:63d30ec829b6 42 pc.printf("=> Failed to connect.\r\n");
HoYa 0:63d30ec829b6 43 return -1;
HoYa 1:b2b7580e09d7 44 }
HoYa 0:63d30ec829b6 45 const char* ip = spwf.get_ip_address();
HoYa 0:63d30ec829b6 46 pc.printf("=> IP Address is: %s\r\n", (ip) ? ip : "No IP");
HoYa 0:63d30ec829b6 47 const char* mac = spwf.get_mac_address();
HoYa 0:63d30ec829b6 48 pc.printf("=> MAC Address is: %s\r\n", (mac) ? mac : "No MAC");
HoYa 1:b2b7580e09d7 49
HoYa 2:d7647babe160 50 // DNS
HoYa 3:ad353d5bf223 51 /*
HoYa 1:b2b7580e09d7 52 pc.printf("\r\n");
HoYa 1:b2b7580e09d7 53 pc.printf("DNS Testing...\r\n");
HoYa 1:b2b7580e09d7 54 SocketAddress addr(&spwf, "st.com");
HoYa 1:b2b7580e09d7 55 pc.printf("<st.com> is resolved to: %s\r\n", addr.get_ip_address());
HoYa 3:ad353d5bf223 56 */
HoYa 2:d7647babe160 57 // Unsecured TCP
HoYa 3:ad353d5bf223 58 /*
HoYa 2:d7647babe160 59 pc.printf("\r\n");
HoYa 2:d7647babe160 60 pc.printf("Unsecured TCP Testing...\r\n");
HoYa 2:d7647babe160 61 TCPSocket socket(&spwf);
HoYa 2:d7647babe160 62 pc.printf("Connecting to <4.ifcfg.me>...\r\n");
HoYa 2:d7647babe160 63 int err = socket.connect("4.ifcfg.me", 23);
HoYa 2:d7647babe160 64 if (err) {
HoYa 2:d7647babe160 65 pc.printf("=> Failed to connect. (%d)\r\n", err);
HoYa 2:d7647babe160 66 return -1;
HoYa 2:d7647babe160 67 } else {
HoYa 2:d7647babe160 68 pc.printf("=> Success.\r\n");
HoYa 2:d7647babe160 69 }
HoYa 2:d7647babe160 70 pc.printf("Receiving Data\r\n");
HoYa 2:d7647babe160 71 char buffer[100];
HoYa 2:d7647babe160 72 int count = socket.recv(buffer, sizeof buffer);
HoYa 2:d7647babe160 73 if (count > 0) {
HoYa 2:d7647babe160 74 buffer[count] = '\0';
HoYa 2:d7647babe160 75 printf("=> %s\r\n", buffer);
HoYa 2:d7647babe160 76 }
HoYa 2:d7647babe160 77 else {
HoYa 2:d7647babe160 78 pc.printf("=> Nothing to receive.\r\n");
HoYa 2:d7647babe160 79 }
HoYa 2:d7647babe160 80 pc.printf("Close TCP socket\r\n");
HoYa 2:d7647babe160 81 socket.close();
HoYa 3:ad353d5bf223 82 */
HoYa 3:ad353d5bf223 83 // Secured TCP
HoYa 3:ad353d5bf223 84 pc.printf("\r\n");
HoYa 3:ad353d5bf223 85 pc.printf("Secured TCP Testing...\r\n");
HoYa 3:ad353d5bf223 86 if (!spwf.clean_TLS_certificate(ALL))
HoYa 3:ad353d5bf223 87 pc.printf("=> Failed to clean TLS certificate\r\n");
HoYa 3:ad353d5bf223 88 if (!spwf.set_TLS_certificate(CA_cert, sizeof(CA_cert), FLASH_CA_ROOT_CERT))
HoYa 3:ad353d5bf223 89 pc.printf("=> Failed to set TLS certificate\r\n");
HoYa 3:ad353d5bf223 90 if (!spwf.set_TLS_SRV_domain("*.mbed.com", FLASH_DOMAIN))
HoYa 3:ad353d5bf223 91 printf("=> Failed to set TLS CA domain\r\n");
HoYa 3:ad353d5bf223 92 spwf.set_secure_mode();
HoYa 3:ad353d5bf223 93 TCPSocket socket(&spwf);
HoYa 3:ad353d5bf223 94 spwf.set_unsecure_mode();
HoYa 3:ad353d5bf223 95 int err = socket.connect("www.mbed.com", 443);
HoYa 3:ad353d5bf223 96 if (err != 0)
HoYa 3:ad353d5bf223 97 pc.printf("=> Failed to connect. (%d)\r\n", err);
HoYa 3:ad353d5bf223 98 else
HoYa 3:ad353d5bf223 99 pc.printf("=> Success.\r\n");
HoYa 3:ad353d5bf223 100 pc.printf("Close TCP socket\r\n");
HoYa 3:ad353d5bf223 101 socket.close();
HoYa 3:ad353d5bf223 102
HoYa 3:ad353d5bf223 103 pc.printf("Disconnect from AP\r\n");
HoYa 3:ad353d5bf223 104 spwf.disconnect();
HoYa 2:d7647babe160 105
HoYa 0:63d30ec829b6 106 while (1) {
HoYa 0:63d30ec829b6 107 led = !led;
HoYa 0:63d30ec829b6 108 wait(0.5);
HoYa 0:63d30ec829b6 109 }
HoYa 0:63d30ec829b6 110 }
HoYa 3:ad353d5bf223 111