Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- Osamu Koizumi
- Date:
- 2018-04-25
- Revision:
- 7:fc43e66fb54a
- Parent:
- 6:75b01b028cd4
- Child:
- 9:38b485904577
File content as of revision 7:fc43e66fb54a:
#include "mbed.h" #include "easy-connect.h" #include "TLSSocket.h" #include "mbed-trace/mbed_trace.h" const char* HOST_NAME = "os.mbed.com"; const int PORT = 443; const char* HTTPS_PATH = "/"; const char* ROOT_CA_PEM = /* Root CA of os.mbed.com */ "-----BEGIN CERTIFICATE-----\n" "MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\n" "A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\n" "b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\n" "MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\n" "YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\n" "aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\n" "jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\n" "xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n" "1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\n" "snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\n" "U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n" "9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\n" "BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\n" "AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\n" "yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\n" "38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\n" "AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\n" "DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\n" "HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n" "-----END CERTIFICATE-----"; int main(int argc, char* argv[]) { mbed_trace_init(); printf("HelloTSLSocket, HTTPS example of TLSSocket\r\n"); printf("\r\n"); // Open a network interface NetworkInterface* network = NULL; network = easy_connect(false); // If true, prints out connection details. if (!network) { printf("Unable to open network interface.\r\n"); return -1; } // Create a TLS socket TLSSocket socket = TLSSocket(); if(socket.open(network) != 0) { printf("Unable to open TLS socket.\r\n"); return -1; } // Connect to the server, including TLS handshake if(socket.connect(HOST_NAME, PORT, ROOT_CA_PEM) != 0) { printf("Failed to connect to the server."); return -1; } const size_t buf_size = 1024; char *buf = new char[buf_size]; // Send HTTP request /* "Connection: close" header is specified to detect end of the body * contents by connection close notification. If this is not specified, * connection is kept, and need to detect end of the content in another * way. */ int len = snprintf(buf, buf_size, "GET %s HTTP/1.1\n" "Host: %s\n" "Connection: close\n" "\n", HTTPS_PATH, HOST_NAME); printf("\r\n%s", buf); int rc = 0; rc = socket.send(buf, len); if(rc < 0) { printf("send error.\r\n"); return -1; } // Receive response from the server while((rc = socket.recv(buf, buf_size - 1)) > 0) { buf[rc] = '\0'; printf("%s", buf); } if(rc < 0) { printf("\r\n! Read failed. err code = %d\r\n", rc); } // Done printf("HelloTSLSocket DONE.\r\n"); delete[] buf; socket.close(); }