diff --git a/docs/html/dir_386349f6a9bc1e2cd0767d257d5e5b91.html b/docs/html/dir_386349f6a9bc1e2cd0767d257d5e5b91.html new file mode 100644 index 0000000..125fbda --- /dev/null +++ b/docs/html/dir_386349f6a9bc1e2cd0767d257d5e5b91.html @@ -0,0 +1,112 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples/EthernetMultiHTTPS Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
SSLClient +  1.0 +
+
Add TLS 1.2 functionality to any network library.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
EthernetMultiHTTPS Directory Reference
+
+
+ + + + +

+Files

file  trustanchors.h [code]
 
+
+
+ + + + diff --git a/docs/html/dir_386349f6a9bc1e2cd0767d257d5e5b91.js b/docs/html/dir_386349f6a9bc1e2cd0767d257d5e5b91.js new file mode 100644 index 0000000..d585d54 --- /dev/null +++ b/docs/html/dir_386349f6a9bc1e2cd0767d257d5e5b91.js @@ -0,0 +1,4 @@ +var dir_386349f6a9bc1e2cd0767d257d5e5b91 = +[ + [ "trustanchors.h", "trustanchors_8h.html", "trustanchors_8h" ] +]; \ No newline at end of file diff --git a/docs/html/dir_9c42dc81377249a918256dbb9cfb2167.html b/docs/html/dir_9c42dc81377249a918256dbb9cfb2167.html new file mode 100644 index 0000000..36b29ce --- /dev/null +++ b/docs/html/dir_9c42dc81377249a918256dbb9cfb2167.html @@ -0,0 +1,112 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples/EthernetHTTPS Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
SSLClient +  1.0 +
+
Add TLS 1.2 functionality to any network library.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
EthernetHTTPS Directory Reference
+
+
+ + + + +

+Files

file  trust_anchors.h [code]
 
+
+
+ + + + diff --git a/docs/html/dir_9c42dc81377249a918256dbb9cfb2167.js b/docs/html/dir_9c42dc81377249a918256dbb9cfb2167.js new file mode 100644 index 0000000..aa63327 --- /dev/null +++ b/docs/html/dir_9c42dc81377249a918256dbb9cfb2167.js @@ -0,0 +1,4 @@ +var dir_9c42dc81377249a918256dbb9cfb2167 = +[ + [ "trust_anchors.h", "trust__anchors_8h.html", "trust__anchors_8h" ] +]; \ No newline at end of file diff --git a/docs/html/dir_d28a4824dc47e487b107a5db32ef43c4.html b/docs/html/dir_d28a4824dc47e487b107a5db32ef43c4.html new file mode 100644 index 0000000..46d074e --- /dev/null +++ b/docs/html/dir_d28a4824dc47e487b107a5db32ef43c4.html @@ -0,0 +1,114 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
SSLClient +  1.0 +
+
Add TLS 1.2 functionality to any network library.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
examples Directory Reference
+
+
+ + + + + + +

+Directories

directory  EthernetHTTPS
 
directory  EthernetMultiHTTPS
 
+
+
+ + + + diff --git a/docs/html/dir_d28a4824dc47e487b107a5db32ef43c4.js b/docs/html/dir_d28a4824dc47e487b107a5db32ef43c4.js new file mode 100644 index 0000000..55474cc --- /dev/null +++ b/docs/html/dir_d28a4824dc47e487b107a5db32ef43c4.js @@ -0,0 +1,5 @@ +var dir_d28a4824dc47e487b107a5db32ef43c4 = +[ + [ "EthernetHTTPS", "dir_9c42dc81377249a918256dbb9cfb2167.html", "dir_9c42dc81377249a918256dbb9cfb2167" ], + [ "EthernetMultiHTTPS", "dir_386349f6a9bc1e2cd0767d257d5e5b91.html", "dir_386349f6a9bc1e2cd0767d257d5e5b91" ] +]; \ No newline at end of file diff --git a/docs/html/files.html b/docs/html/files.html index 8f6b208..5be5ad7 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -92,17 +92,22 @@ $(document).ready(function(){initNavTree('files.html','');});
Here is a list of all files with brief descriptions:
-
[detail level 12]
- - - - - - - - - - +
[detail level 123]
  readme
 cert.h
  src
 SSLClient.h
 SSLClientImpl.cpp
 SSLClientImpl.h
 SSLSession.cpp
 SSLSession.h
 time_macros.h
 TLS12_only_profile.c
+ + + + + + + + + + + + + + +
  examples
  EthernetHTTPS
 trust_anchors.h
  EthernetMultiHTTPS
 trustanchors.h
  readme
 cert.h
  src
 SSLClient.h
 SSLClientImpl.cpp
 SSLClientImpl.h
 SSLSession.cpp
 SSLSession.h
 time_macros.h
 TLS12_only_profile.c
diff --git a/docs/html/files_dup.js b/docs/html/files_dup.js index 282bf42..84896af 100644 --- a/docs/html/files_dup.js +++ b/docs/html/files_dup.js @@ -1,5 +1,6 @@ var files_dup = [ + [ "examples", "dir_d28a4824dc47e487b107a5db32ef43c4.html", "dir_d28a4824dc47e487b107a5db32ef43c4" ], [ "readme", "dir_dfc5a9f91fbfb9426c406a3f10131a54.html", "dir_dfc5a9f91fbfb9426c406a3f10131a54" ], [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] ]; \ No newline at end of file diff --git a/docs/html/globals.html b/docs/html/globals.html index ba0590e..06ac476 100644 --- a/docs/html/globals.html +++ b/docs/html/globals.html @@ -228,7 +228,9 @@ $(document).ready(function(){initNavTree('globals.html','');});

- t -

diff --git a/docs/html/globals_defs.html b/docs/html/globals_defs.html index 08d9a11..29e9042 100644 --- a/docs/html/globals_defs.html +++ b/docs/html/globals_defs.html @@ -149,7 +149,9 @@ $(document).ready(function(){initNavTree('globals_defs.html','');}); : SSLClient.h
  • TAs_NUM -: cert.h +: trust_anchors.h +, cert.h +, trustanchors.h
  • UNIX_TIMESTAMP : time_macros.h diff --git a/docs/html/index.html b/docs/html/index.html index 39317ee..9a78c88 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -92,14 +92,15 @@ $(document).ready(function(){initNavTree('index.html','');});

    SSLClient requires at least 110kb flash and 8kb RAM, and will not compile otherwise. This means that most Arduino boards are not supported. Check your board's specifications before attempting to use this library.

    +

    You can also view this README in doxygen.

    SSLClient is a simple library to add TLS 1.2 functionality to any network library implementing the Arduino Client interface, including the Arduino EthernetClient and WiFiClient classes (though it is better to prefer WiFClient.connectSSL if implemented). In other words, SSLClient implements encrypted communication through SSL on devices that do not otherwise support it.

    Overview

    Using SSLClient should be similar to using any other Arduino-based Client class, since this library was developed around compatibility with EthernetClient. There are a few extra things, however, that you will need to get started:

      -
    1. A board with a lot of resources (>110kb flash and >8kb RAM), and a network peripheral with a large internal buffer (>8kb). This library was tested with the Adafruit Feather M0 (256K flash, 32K RAM) and the Adafruit Ethernet Featherwing (16kb Buffer), and we still had to modify the Arduino Ethernet library to support larger internal buffers per socket (see the Implementation Notes).
    2. +
    3. A board with a lot of resources (>110kb flash and >8kb RAM), and a network peripheral with a large internal buffer (>8kb). This library was tested with the Adafruit Feather M0 (256K flash, 32K RAM) and the Adafruit Ethernet Featherwing (16kb Buffer), and we still had to modify the Arduino Ethernet library to support larger internal buffers per socket (see the Implementation Gotchas).
    4. A header containing array of trust anchors, which will look like this file. These are used to verify the SSL connection later on, and without them you will be unable to use this library. Check out this document on how to generate this file for your project, and for more information about what a trust anchor is.
    5. A Client class associated with a network interface. We tested this library using EthernetClient, however in theory it will work for any class implementing Client.
    6. -
    7. An analog pin, used for generating random data at the start of the connection (see the Implementation Notes).
    8. +
    9. An analog pin, used for generating random data at the start of the connection (see the Implementation Gotchas).

    Once all those are ready, you can create a simple SSLClient object like this:

    {C++}
    SSLClient<BaseClientType> client(BaseClientInstance, TAs, (size_t)TAs_NUM, AnalogPin);

    Where:

    • BaseClientType - The type of BaseClientInstance
    • @@ -107,10 +108,10 @@ $(document).ready(function(){initNavTree('index.html','');});
    • TAs - The name of the trust anchor array created in step 2. If you generated a header using the tutorial this will probably be TAs.
    • TAs_NUM - The number of trust anchors in TAs. If you generated a header using the tutorial this will probably be TAs_NUM.
    • AnalogPin - The analog pin to pull random data from (step 4).

      -

      For example, if I am using EthernetClient, a generated array of 2 trust anchors, and the analog pin A7, I would declare an SSLClient instance using:

      {C++}
      SSLClient<EthernetClient> client(EthernetClient(), TAs, 2, A7);

      Once that is setup, simply use SSLClient as you would the base client class:

      {C++}
      // connect to ardiuino.cc over ssl (port 443 for websites)
      client.connect("www.arduino.cc", 443);
      // Make a HTTP request
      client.println("GET /asciilogo.txt HTTP/1.1");
      client.println("User-Agent: AdafruitFeatherM0WiFi");
      client.print("Host: ");
      client.println(server);
      client.println("Connection: close");
      client.println();
      client.flush();
      // read and print the data
      ...

      Note: client.connect("www.arduino.cc", 443) can take 5-15 seconds to finish. This an unavoidable consequence of the SSL protocol, and is detailed in Implementation Notes.

      +

      For example, if I am using EthernetClient, a generated array of 2 trust anchors, and the analog pin A7, I would declare an SSLClient instance using:

      {C++}
      SSLClient<EthernetClient> client(EthernetClient(), TAs, 2, A7);

      Once that is setup, simply use SSLClient as you would the base client class:

      {C++}
      // connect to ardiuino.cc over ssl (port 443 for websites)
      client.connect("www.arduino.cc", 443);
      // Make a HTTP request
      client.println("GET /asciilogo.txt HTTP/1.1");
      client.println("User-Agent: AdafruitFeatherM0WiFi");
      client.print("Host: ");
      client.println(server);
      client.println("Connection: close");
      client.println();
      client.flush();
      // read and print the data
      ...

      Note: client.connect("www.arduino.cc", 443) can take 5-15 seconds to finish. This an unavoidable consequence of the SSL protocol, and is detailed in Implementation Notes.

    -

    For more information on SSLClient, check out the examples, API documentation, or the rest of this README.

    +

    For more information on SSLClient, check out the examples, API documentation, or the rest of this README.

    How It Works

    SSLClient was created to integrate SSL seamlessly with the Arduino infrastructure, and so it does just that: implementing the brilliant BearSSL as a proxy in front of any Arduino socket library. BearSSL is designed with low flash footprint in mind, and as a result does little verification of improper programming, relying on the developer to ensure the code is correct. Since SSLClient is built specifically for the Arduino ecosystem, most of the code adds those programming checks back in, making debugging a fast and simple process. The rest manages the state of BearSSL, and ensures a manageable memory footprint.

    Additionally, the bulk of SSLClient is split into two components: a template class SSLClient, and an implementation class SSLClientImpl. The template class serves to abstract some functions not implemented in the Arduino Client interface (such as EthernetClient::remoteIP), and the implementation class is the rest of the SSLClient library.

    @@ -136,6 +137,10 @@ $(document).ready(function(){initNavTree('index.html','');});

    If you need to clear a session, you can do so using the SSLSession::removeSession function.

    Implementation Gotchas

    Some ideas that didn't quite fit in the API documentation.

    +

    SSLClient with Ethernet

    +

    If you are using the Arduino Ethernet library, you will need to modify the library to support the large buffer sizes required by SSL (detailed in resources). To do this, first find the location of the library in the directory where Arduino is installed (C:\Program Files (x86)\Arduino on Windows). Inside of this directory, navigate to libraries\Ethernet\src (C:\Program Files (x86)\Arduino\libraries\Ethernet\src on Windows). Modify Ethernet.h to replace these lines:

    {C++}
    ...
    // Configure the maximum number of sockets to support. W5100 chips can have
    // up to 4 sockets. W5200 & W5500 can have up to 8 sockets. Several bytes
    // of RAM are used for each socket. Reducing the maximum can save RAM, but
    // you are limited to fewer simultaneous connections.
    #if defined(RAMEND) && defined(RAMSTART) && ((RAMEND - RAMSTART) <= 2048)
    #define MAX_SOCK_NUM 4
    #else
    #define MAX_SOCK_NUM 8
    #endif
    // By default, each socket uses 2K buffers inside the Wiznet chip. If
    // MAX_SOCK_NUM is set to fewer than the chip's maximum, uncommenting
    // this will use larger buffers within the Wiznet chip. Large buffers
    // can really help with UDP protocols like Artnet. In theory larger
    // buffers should allow faster TCP over high-latency links, but this
    // does not always seem to work in practice (maybe Wiznet bugs?)
    //#define ETHERNET_LARGE_BUFFERS
    ...

    With this:

    {C++}
    ...
    // Configure the maximum number of sockets to support. W5100 chips can have
    // up to 4 sockets. W5200 & W5500 can have up to 8 sockets. Several bytes
    // of RAM are used for each socket. Reducing the maximum can save RAM, but
    // you are limited to fewer simultaneous connections.
    #define MAX_SOCK_NUM 2
    // By default, each socket uses 2K buffers inside the Wiznet chip. If
    // MAX_SOCK_NUM is set to fewer than the chip's maximum, uncommenting
    // this will use larger buffers within the Wiznet chip. Large buffers
    // can really help with UDP protocols like Artnet. In theory larger
    // buffers should allow faster TCP over high-latency links, but this
    // does not always seem to work in practice (maybe Wiznet bugs?)
    #define ETHERNET_LARGE_BUFFERS
    ...

    You may need to use sudo or administrator permissions to make this modification. We change MAX_SOCK_NUM and ETHERNET_LARGE_BUFFERS so the Ethernet hardware can allocate a larger space for SSLClient, however a downside of this modification is we are now only able to have two sockets concurrently. As most microprocessors barely have enough memory for one SSL connection, this limitation will rarely be encountered in practice.

    +

    Random Data

    +

    The SSL protocol requires that SSLClient generate some random bits before connecting with a server. BearSSL provides a random number generator but requires a some entropy for a seed. Normally this seed is generated by taking the microsecond time using the internal clock, however since most microcontrollers are not build with this feature another source must be found. As a simple solution, SSLClient uses a floating analog pin as an external source of random data, passed through to the constructor in the analog_pin argument. Before every connection, SSLClient will take the bottom byte from 16 analog reads on analog_pin, and combine these bytes into a 16 byte random number, which is used as a seed for BearSSL. To ensure the most random data, it is recommended that this analog pin be either floating or connected to a location not modifiable by the microcontroller (i.e. a battery voltage readout).

    Certificate Verification

    SSLClient uses BearSSL's minimal x509 verification engine to verify the certificate of an SSL connection. This engine requires the developer create a trust anchor array using values stored in trusted root certificates. Check out this document for more details on this component of SSLClient.

    BearSSL also features a known certificate validation engine, which only allows for a single domain in exchange for a significantly reduced resource usage (flash and CPU time). This functionality is planned to be implemented in the future.

    diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js index 97904f6..adb9539 100644 --- a/docs/html/navtreeindex0.js +++ b/docs/html/navtreeindex0.js @@ -1,34 +1,34 @@ var NAVTREEINDEX0 = { -"_s_s_l_client_8h.html":[3,0,1,0], -"_s_s_l_client_8h.html#a0e14869de8f634ff2fb63826ae583569":[3,0,1,0,1], -"_s_s_l_client_8h_source.html":[3,0,1,0], -"_s_s_l_client_impl_8cpp.html":[3,0,1,1], -"_s_s_l_client_impl_8cpp.html#ad193a2cc121e0d4614a1c21eb463fb56":[3,0,1,1,0], -"_s_s_l_client_impl_8h.html":[3,0,1,2], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5":[3,0,1,2,2], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5a1218c16a5bf50589e0c498983851612c":[3,0,1,2,2,0], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5a1d5f8248fac85f56b05d49c7cb53494b":[3,0,1,2,2,3], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5a1d9afd51e0012e791f099657797c9aa9":[3,0,1,2,2,4], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5aaa79045423a355885738cd239dff6c2b":[3,0,1,2,2,1], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5adec799caf92b4fe2b6d2b362136f6ef6":[3,0,1,2,2,6], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5afb90a695332a7c96044dc97c577ee3c3":[3,0,1,2,2,2], -"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5afd588a56dcccf4f6943defa7ab699afc":[3,0,1,2,2,5], -"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395":[3,0,1,2,1], -"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395a86c8fdfc38831619d5ed73dff5b0911d":[3,0,1,2,1,2], -"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395a8c0bb62be3d0e6bfe5ed2f7ebbed3d91":[3,0,1,2,1,3], -"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395ad3f9f0591dcabc4fac1222c462bf17ec":[3,0,1,2,1,1], -"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395af16e73d8cce9a2c987bde5afe5524d7f":[3,0,1,2,1,0], -"_s_s_l_client_impl_8h_source.html":[3,0,1,2], -"_s_s_l_session_8cpp.html":[3,0,1,3], -"_s_s_l_session_8h.html":[3,0,1,4], -"_s_s_l_session_8h_source.html":[3,0,1,4], -"_t_l_s12__only__profile_8c.html":[3,0,1,6], -"_t_l_s12__only__profile_8c.html#a32c8112a1c37ba21a05952eeefc435f3":[3,0,1,6,0], +"_s_s_l_client_8h.html":[3,0,2,0], +"_s_s_l_client_8h.html#a0e14869de8f634ff2fb63826ae583569":[3,0,2,0,1], +"_s_s_l_client_8h_source.html":[3,0,2,0], +"_s_s_l_client_impl_8cpp.html":[3,0,2,1], +"_s_s_l_client_impl_8cpp.html#ad193a2cc121e0d4614a1c21eb463fb56":[3,0,2,1,0], +"_s_s_l_client_impl_8h.html":[3,0,2,2], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5":[3,0,2,2,2], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5a1218c16a5bf50589e0c498983851612c":[3,0,2,2,2,0], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5a1d5f8248fac85f56b05d49c7cb53494b":[3,0,2,2,2,3], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5a1d9afd51e0012e791f099657797c9aa9":[3,0,2,2,2,4], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5aaa79045423a355885738cd239dff6c2b":[3,0,2,2,2,1], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5adec799caf92b4fe2b6d2b362136f6ef6":[3,0,2,2,2,6], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5afb90a695332a7c96044dc97c577ee3c3":[3,0,2,2,2,2], +"_s_s_l_client_impl_8h.html#a2c3e4bb40f36b262a5214e2da2bca9c5afd588a56dcccf4f6943defa7ab699afc":[3,0,2,2,2,5], +"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395":[3,0,2,2,1], +"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395a86c8fdfc38831619d5ed73dff5b0911d":[3,0,2,2,1,2], +"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395a8c0bb62be3d0e6bfe5ed2f7ebbed3d91":[3,0,2,2,1,3], +"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395ad3f9f0591dcabc4fac1222c462bf17ec":[3,0,2,2,1,1], +"_s_s_l_client_impl_8h.html#ab658e6d84759440dbf3c890446075395af16e73d8cce9a2c987bde5afe5524d7f":[3,0,2,2,1,0], +"_s_s_l_client_impl_8h_source.html":[3,0,2,2], +"_s_s_l_session_8cpp.html":[3,0,2,3], +"_s_s_l_session_8h.html":[3,0,2,4], +"_s_s_l_session_8h_source.html":[3,0,2,4], +"_t_l_s12__only__profile_8c.html":[3,0,2,6], +"_t_l_s12__only__profile_8c.html#a32c8112a1c37ba21a05952eeefc435f3":[3,0,2,6,0], "annotated.html":[2,0], -"cert_8h.html":[3,0,0,0], -"cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948":[3,0,0,0,0], -"cert_8h_source.html":[3,0,0,0], +"cert_8h.html":[3,0,1,0], +"cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948":[3,0,1,0,0], +"cert_8h_source.html":[3,0,1,0], "class_s_s_l_client.html":[2,0,0], "class_s_s_l_client.html#a0000d7f1e8656cf4a506a98133391fe0":[2,0,0,24], "class_s_s_l_client.html#a0699ff4b966162cba2ef59ff4a287270":[2,0,0,26], @@ -96,8 +96,11 @@ var NAVTREEINDEX0 = "class_s_s_l_session.html#acbe6549b55d50541d09a16f770e65afc":[2,0,2,7], "class_s_s_l_session.html#ae05648200cea66577f024d5d09a6fcbb":[2,0,2,0], "classes.html":[2,1], -"dir_68267d1309a1af8e8297ef4c3efbcdba.html":[3,0,1], -"dir_dfc5a9f91fbfb9426c406a3f10131a54.html":[3,0,0], +"dir_386349f6a9bc1e2cd0767d257d5e5b91.html":[3,0,0,1], +"dir_68267d1309a1af8e8297ef4c3efbcdba.html":[3,0,2], +"dir_9c42dc81377249a918256dbb9cfb2167.html":[3,0,0,0], +"dir_d28a4824dc47e487b107a5db32ef43c4.html":[3,0,0], +"dir_dfc5a9f91fbfb9426c406a3f10131a54.html":[3,0,1], "files.html":[3,0], "functions.html":[2,3,0], "functions_func.html":[2,3,1], @@ -112,27 +115,33 @@ var NAVTREEINDEX0 = "index.html":[], "md__c_1__users__noah__documents__arduino_libraries__s_s_l_client__trust_anchors.html":[1], "pages.html":[], -"time__macros_8h.html":[3,0,1,5], -"time__macros_8h.html#a04e76e262f0920441e5f0c5552e83487":[3,0,1,5,19], -"time__macros_8h.html#a243cf438274412bbecf4b8d5eeb02ccb":[3,0,1,5,14], -"time__macros_8h.html#a2488d1ddab7e5fa119da3421462231c4":[3,0,1,5,1], -"time__macros_8h.html#a2af3d1d741ae2b49627adf56bbc95dc3":[3,0,1,5,20], -"time__macros_8h.html#a2d540510d5860d7f190d13124956bc57":[3,0,1,5,16], -"time__macros_8h.html#a38ac93dd8bfe385ff915a82c92bbfc97":[3,0,1,5,4], -"time__macros_8h.html#a3aaee30ddedb3f6675aac341a66e39e2":[3,0,1,5,15], -"time__macros_8h.html#a4dbe4cf7c879a2cdac386ce72c5e5994":[3,0,1,5,13], -"time__macros_8h.html#a56482fcc86a55713dee595c2092ed376":[3,0,1,5,5], -"time__macros_8h.html#a5ab60a7e3e1b6e0a919b3a37bc0d4b97":[3,0,1,5,8], -"time__macros_8h.html#a7f2cdee2eebbccd45c179a50a0bbabcf":[3,0,1,5,0], -"time__macros_8h.html#a868143e0521daf07b25a2f3947cf54a3":[3,0,1,5,6], -"time__macros_8h.html#a8cd8e04105fec7cd442d078c303e46b9":[3,0,1,5,18], -"time__macros_8h.html#a9da779a8ca64782ea49babce14122d34":[3,0,1,5,12], -"time__macros_8h.html#aad01b5fb233c0091aff2a837a8de32f4":[3,0,1,5,11], -"time__macros_8h.html#ab3592442029a102b388fafeadc4a6ab8":[3,0,1,5,2], -"time__macros_8h.html#ab6c76862964ff7e543fd9d5807b2fa79":[3,0,1,5,7], -"time__macros_8h.html#ac47b302f1b8d2a7a9c035c417247be76":[3,0,1,5,17], -"time__macros_8h.html#ac8f6b75d9e04634818984ba400d0dee1":[3,0,1,5,3], -"time__macros_8h.html#ae0574ced3f997b97d357c1cb68000e3a":[3,0,1,5,9], -"time__macros_8h.html#ae90924c33a05839b3eb1426472f40eb3":[3,0,1,5,10], -"time__macros_8h_source.html":[3,0,1,5] +"time__macros_8h.html":[3,0,2,5], +"time__macros_8h.html#a04e76e262f0920441e5f0c5552e83487":[3,0,2,5,19], +"time__macros_8h.html#a243cf438274412bbecf4b8d5eeb02ccb":[3,0,2,5,14], +"time__macros_8h.html#a2488d1ddab7e5fa119da3421462231c4":[3,0,2,5,1], +"time__macros_8h.html#a2af3d1d741ae2b49627adf56bbc95dc3":[3,0,2,5,20], +"time__macros_8h.html#a2d540510d5860d7f190d13124956bc57":[3,0,2,5,16], +"time__macros_8h.html#a38ac93dd8bfe385ff915a82c92bbfc97":[3,0,2,5,4], +"time__macros_8h.html#a3aaee30ddedb3f6675aac341a66e39e2":[3,0,2,5,15], +"time__macros_8h.html#a4dbe4cf7c879a2cdac386ce72c5e5994":[3,0,2,5,13], +"time__macros_8h.html#a56482fcc86a55713dee595c2092ed376":[3,0,2,5,5], +"time__macros_8h.html#a5ab60a7e3e1b6e0a919b3a37bc0d4b97":[3,0,2,5,8], +"time__macros_8h.html#a7f2cdee2eebbccd45c179a50a0bbabcf":[3,0,2,5,0], +"time__macros_8h.html#a868143e0521daf07b25a2f3947cf54a3":[3,0,2,5,6], +"time__macros_8h.html#a8cd8e04105fec7cd442d078c303e46b9":[3,0,2,5,18], +"time__macros_8h.html#a9da779a8ca64782ea49babce14122d34":[3,0,2,5,12], +"time__macros_8h.html#aad01b5fb233c0091aff2a837a8de32f4":[3,0,2,5,11], +"time__macros_8h.html#ab3592442029a102b388fafeadc4a6ab8":[3,0,2,5,2], +"time__macros_8h.html#ab6c76862964ff7e543fd9d5807b2fa79":[3,0,2,5,7], +"time__macros_8h.html#ac47b302f1b8d2a7a9c035c417247be76":[3,0,2,5,17], +"time__macros_8h.html#ac8f6b75d9e04634818984ba400d0dee1":[3,0,2,5,3], +"time__macros_8h.html#ae0574ced3f997b97d357c1cb68000e3a":[3,0,2,5,9], +"time__macros_8h.html#ae90924c33a05839b3eb1426472f40eb3":[3,0,2,5,10], +"time__macros_8h_source.html":[3,0,2,5], +"trust__anchors_8h.html":[3,0,0,0,0], +"trust__anchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948":[3,0,0,0,0,0], +"trust__anchors_8h_source.html":[3,0,0,0,0], +"trustanchors_8h.html":[3,0,0,1,0], +"trustanchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948":[3,0,0,1,0,0], +"trustanchors_8h_source.html":[3,0,0,1,0] }; diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js index aa9c0c5..45a40de 100644 --- a/docs/html/search/all_f.js +++ b/docs/html/search/all_f.js @@ -1,9 +1,11 @@ var searchData= [ ['trust_20anchors',['Trust Anchors',['../md__c_1__users__noah__documents__arduino_libraries__s_s_l_client__trust_anchors.html',1,'']]], - ['tas_5fnum',['TAs_NUM',['../cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'cert.h']]], + ['tas_5fnum',['TAs_NUM',['../trust__anchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'TAs_NUM(): trust_anchors.h'],['../trustanchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'TAs_NUM(): trustanchors.h'],['../cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'TAs_NUM(): cert.h']]], ['time_5fmacros_2eh',['time_macros.h',['../time__macros_8h.html',1,'']]], ['tls12_5fonly_5fprofile_2ec',['TLS12_only_profile.c',['../_t_l_s12__only__profile_8c.html',1,'']]], ['to_5fbr_5fsession',['to_br_session',['../class_s_s_l_session.html#acbe6549b55d50541d09a16f770e65afc',1,'SSLSession']]], + ['trust_5fanchors_2eh',['trust_anchors.h',['../trust__anchors_8h.html',1,'']]], + ['trustanchors_2eh',['trustanchors.h',['../trustanchors_8h.html',1,'']]], ['trustanchors_2emd',['TrustAnchors.md',['../_trust_anchors_8md.html',1,'']]] ]; diff --git a/docs/html/search/defines_5.js b/docs/html/search/defines_5.js index c10d695..5de0fdb 100644 --- a/docs/html/search/defines_5.js +++ b/docs/html/search/defines_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['tas_5fnum',['TAs_NUM',['../cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'cert.h']]] + ['tas_5fnum',['TAs_NUM',['../trust__anchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'TAs_NUM(): trust_anchors.h'],['../trustanchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'TAs_NUM(): trustanchors.h'],['../cert_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948',1,'TAs_NUM(): cert.h']]] ]; diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js index 377b9b8..a75f15b 100644 --- a/docs/html/search/files_3.js +++ b/docs/html/search/files_3.js @@ -2,5 +2,7 @@ var searchData= [ ['time_5fmacros_2eh',['time_macros.h',['../time__macros_8h.html',1,'']]], ['tls12_5fonly_5fprofile_2ec',['TLS12_only_profile.c',['../_t_l_s12__only__profile_8c.html',1,'']]], + ['trust_5fanchors_2eh',['trust_anchors.h',['../trust__anchors_8h.html',1,'']]], + ['trustanchors_2eh',['trustanchors.h',['../trustanchors_8h.html',1,'']]], ['trustanchors_2emd',['TrustAnchors.md',['../_trust_anchors_8md.html',1,'']]] ]; diff --git a/docs/html/trust__anchors_8h.html b/docs/html/trust__anchors_8h.html new file mode 100644 index 0000000..a9424eb --- /dev/null +++ b/docs/html/trust__anchors_8h.html @@ -0,0 +1,131 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples/EthernetHTTPS/trust_anchors.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    SSLClient +  1.0 +
    +
    Add TLS 1.2 functionality to any network library.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    trust_anchors.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + +

    +Macros

    #define TAs_NUM   1
     
    +

    Macro Definition Documentation

    + +

    ◆ TAs_NUM

    + +
    +
    + + + + +
    #define TAs_NUM   1
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/html/trust__anchors_8h.js b/docs/html/trust__anchors_8h.js new file mode 100644 index 0000000..54e567a --- /dev/null +++ b/docs/html/trust__anchors_8h.js @@ -0,0 +1,4 @@ +var trust__anchors_8h = +[ + [ "TAs_NUM", "trust__anchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948", null ] +]; \ No newline at end of file diff --git a/docs/html/trust__anchors_8h_source.html b/docs/html/trust__anchors_8h_source.html new file mode 100644 index 0000000..c6e8c34 --- /dev/null +++ b/docs/html/trust__anchors_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples/EthernetHTTPS/trust_anchors.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    SSLClient +  1.0 +
    +
    Add TLS 1.2 functionality to any network library.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    trust_anchors.h
    +
    +
    +Go to the documentation of this file.
    1 #ifndef _CERTIFICATES_H_
    2 #define _CERTIFICATES_H_
    3 
    4 #ifdef __cplusplus
    5 extern "C"
    6 {
    7 #endif
    8 
    9 /* This file is auto-generated by the pycert_bearssl tool. Do not change it manually.
    10  * Certificates are BearSSL br_x509_trust_anchor format. Included certs:
    11  *
    12  * Index: 0
    13  * Label: Starfield Class 2 Certification Authority
    14  * Subject: C=US,O=Starfield Technologies\, Inc.,OU=Starfield Class 2 Certification Authority
    15  * Domain(s): www.arduino.cc
    16  */
    17 
    18 #define TAs_NUM 1
    19 
    20 static const unsigned char TA_DN0[] = {
    21  0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
    22  0x02, 0x55, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a,
    23  0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20,
    24  0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73,
    25  0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03,
    26  0x55, 0x04, 0x0b, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65,
    27  0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43,
    28  0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
    29  0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
    30 };
    31 
    32 static const unsigned char TA_RSA_N0[] = {
    33  0xb7, 0x32, 0xc8, 0xfe, 0xe9, 0x71, 0xa6, 0x04, 0x85, 0xad, 0x0c, 0x11,
    34  0x64, 0xdf, 0xce, 0x4d, 0xef, 0xc8, 0x03, 0x18, 0x87, 0x3f, 0xa1, 0xab,
    35  0xfb, 0x3c, 0xa6, 0x9f, 0xf0, 0xc3, 0xa1, 0xda, 0xd4, 0xd8, 0x6e, 0x2b,
    36  0x53, 0x90, 0xfb, 0x24, 0xa4, 0x3e, 0x84, 0xf0, 0x9e, 0xe8, 0x5f, 0xec,
    37  0xe5, 0x27, 0x44, 0xf5, 0x28, 0xa6, 0x3f, 0x7b, 0xde, 0xe0, 0x2a, 0xf0,
    38  0xc8, 0xaf, 0x53, 0x2f, 0x9e, 0xca, 0x05, 0x01, 0x93, 0x1e, 0x8f, 0x66,
    39  0x1c, 0x39, 0xa7, 0x4d, 0xfa, 0x5a, 0xb6, 0x73, 0x04, 0x25, 0x66, 0xeb,
    40  0x77, 0x7f, 0xe7, 0x59, 0xc6, 0x4a, 0x99, 0x25, 0x14, 0x54, 0xeb, 0x26,
    41  0xc7, 0xf3, 0x7f, 0x19, 0xd5, 0x30, 0x70, 0x8f, 0xaf, 0xb0, 0x46, 0x2a,
    42  0xff, 0xad, 0xeb, 0x29, 0xed, 0xd7, 0x9f, 0xaa, 0x04, 0x87, 0xa3, 0xd4,
    43  0xf9, 0x89, 0xa5, 0x34, 0x5f, 0xdb, 0x43, 0x91, 0x82, 0x36, 0xd9, 0x66,
    44  0x3c, 0xb1, 0xb8, 0xb9, 0x82, 0xfd, 0x9c, 0x3a, 0x3e, 0x10, 0xc8, 0x3b,
    45  0xef, 0x06, 0x65, 0x66, 0x7a, 0x9b, 0x19, 0x18, 0x3d, 0xff, 0x71, 0x51,
    46  0x3c, 0x30, 0x2e, 0x5f, 0xbe, 0x3d, 0x77, 0x73, 0xb2, 0x5d, 0x06, 0x6c,
    47  0xc3, 0x23, 0x56, 0x9a, 0x2b, 0x85, 0x26, 0x92, 0x1c, 0xa7, 0x02, 0xb3,
    48  0xe4, 0x3f, 0x0d, 0xaf, 0x08, 0x79, 0x82, 0xb8, 0x36, 0x3d, 0xea, 0x9c,
    49  0xd3, 0x35, 0xb3, 0xbc, 0x69, 0xca, 0xf5, 0xcc, 0x9d, 0xe8, 0xfd, 0x64,
    50  0x8d, 0x17, 0x80, 0x33, 0x6e, 0x5e, 0x4a, 0x5d, 0x99, 0xc9, 0x1e, 0x87,
    51  0xb4, 0x9d, 0x1a, 0xc0, 0xd5, 0x6e, 0x13, 0x35, 0x23, 0x5e, 0xdf, 0x9b,
    52  0x5f, 0x3d, 0xef, 0xd6, 0xf7, 0x76, 0xc2, 0xea, 0x3e, 0xbb, 0x78, 0x0d,
    53  0x1c, 0x42, 0x67, 0x6b, 0x04, 0xd8, 0xf8, 0xd6, 0xda, 0x6f, 0x8b, 0xf2,
    54  0x44, 0xa0, 0x01, 0xab,
    55 };
    56 
    57 static const unsigned char TA_RSA_E0[] = {
    58  0x03,
    59 };
    60 
    61 static const br_x509_trust_anchor TAs[] = {
    62  {
    63  { (unsigned char *)TA_DN0, sizeof TA_DN0 },
    64  BR_X509_TA_CA,
    65  {
    66  BR_KEYTYPE_RSA,
    67  { .rsa = {
    68  (unsigned char *)TA_RSA_N0, sizeof TA_RSA_N0,
    69  (unsigned char *)TA_RSA_E0, sizeof TA_RSA_E0,
    70  } }
    71  }
    72  },
    73 };
    74 
    75 #ifdef __cplusplus
    76 } /* extern "C" */
    77 #endif
    78 
    79 #endif /* ifndef _CERTIFICATES_H_ */
    +
    + + + + diff --git a/docs/html/trustanchors_8h.html b/docs/html/trustanchors_8h.html new file mode 100644 index 0000000..5c6825e --- /dev/null +++ b/docs/html/trustanchors_8h.html @@ -0,0 +1,131 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples/EthernetMultiHTTPS/trustanchors.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    SSLClient +  1.0 +
    +
    Add TLS 1.2 functionality to any network library.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    trustanchors.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + +

    +Macros

    #define TAs_NUM   2
     
    +

    Macro Definition Documentation

    + +

    ◆ TAs_NUM

    + +
    +
    + + + + +
    #define TAs_NUM   2
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/html/trustanchors_8h.js b/docs/html/trustanchors_8h.js new file mode 100644 index 0000000..a9b507e --- /dev/null +++ b/docs/html/trustanchors_8h.js @@ -0,0 +1,4 @@ +var trustanchors_8h = +[ + [ "TAs_NUM", "trustanchors_8h.html#ae2e26a4e8e97b0f15c18ba1ace062948", null ] +]; \ No newline at end of file diff --git a/docs/html/trustanchors_8h_source.html b/docs/html/trustanchors_8h_source.html new file mode 100644 index 0000000..abd360c --- /dev/null +++ b/docs/html/trustanchors_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +SSLClient: C:/Users/Noah/Documents/Arduino/libraries/SSLClient/examples/EthernetMultiHTTPS/trustanchors.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    SSLClient +  1.0 +
    +
    Add TLS 1.2 functionality to any network library.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    trustanchors.h
    +
    +
    +Go to the documentation of this file.
    1 #ifndef _CERTIFICATES_H_
    2 #define _CERTIFICATES_H_
    3 
    4 #ifdef __cplusplus
    5 extern "C"
    6 {
    7 #endif
    8 
    9 /* This file is auto-generated by the pycert_bearssl tool. Do not change it manually.
    10  * Certificates are BearSSL br_x509_trust_anchor format. Included certs:
    11  *
    12  * Index: 0
    13  * Label: Starfield Class 2 Certification Authority
    14  * Subject: C=US,O=Starfield Technologies\, Inc.,OU=Starfield Class 2 Certification Authority
    15  * Domain(s): www.arduino.cc
    16  *
    17  * Index: 1
    18  * Label: DigiCert High Assurance EV Root CA
    19  * Subject: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance EV Root CA
    20  * Domain(s): www.cloudflare.com
    21  */
    22 
    23 #define TAs_NUM 2
    24 
    25 static const unsigned char TA_DN0[] = {
    26  0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
    27  0x02, 0x55, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a,
    28  0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20,
    29  0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73,
    30  0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03,
    31  0x55, 0x04, 0x0b, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65,
    32  0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43,
    33  0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
    34  0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
    35 };
    36 
    37 static const unsigned char TA_RSA_N0[] = {
    38  0xb7, 0x32, 0xc8, 0xfe, 0xe9, 0x71, 0xa6, 0x04, 0x85, 0xad, 0x0c, 0x11,
    39  0x64, 0xdf, 0xce, 0x4d, 0xef, 0xc8, 0x03, 0x18, 0x87, 0x3f, 0xa1, 0xab,
    40  0xfb, 0x3c, 0xa6, 0x9f, 0xf0, 0xc3, 0xa1, 0xda, 0xd4, 0xd8, 0x6e, 0x2b,
    41  0x53, 0x90, 0xfb, 0x24, 0xa4, 0x3e, 0x84, 0xf0, 0x9e, 0xe8, 0x5f, 0xec,
    42  0xe5, 0x27, 0x44, 0xf5, 0x28, 0xa6, 0x3f, 0x7b, 0xde, 0xe0, 0x2a, 0xf0,
    43  0xc8, 0xaf, 0x53, 0x2f, 0x9e, 0xca, 0x05, 0x01, 0x93, 0x1e, 0x8f, 0x66,
    44  0x1c, 0x39, 0xa7, 0x4d, 0xfa, 0x5a, 0xb6, 0x73, 0x04, 0x25, 0x66, 0xeb,
    45  0x77, 0x7f, 0xe7, 0x59, 0xc6, 0x4a, 0x99, 0x25, 0x14, 0x54, 0xeb, 0x26,
    46  0xc7, 0xf3, 0x7f, 0x19, 0xd5, 0x30, 0x70, 0x8f, 0xaf, 0xb0, 0x46, 0x2a,
    47  0xff, 0xad, 0xeb, 0x29, 0xed, 0xd7, 0x9f, 0xaa, 0x04, 0x87, 0xa3, 0xd4,
    48  0xf9, 0x89, 0xa5, 0x34, 0x5f, 0xdb, 0x43, 0x91, 0x82, 0x36, 0xd9, 0x66,
    49  0x3c, 0xb1, 0xb8, 0xb9, 0x82, 0xfd, 0x9c, 0x3a, 0x3e, 0x10, 0xc8, 0x3b,
    50  0xef, 0x06, 0x65, 0x66, 0x7a, 0x9b, 0x19, 0x18, 0x3d, 0xff, 0x71, 0x51,
    51  0x3c, 0x30, 0x2e, 0x5f, 0xbe, 0x3d, 0x77, 0x73, 0xb2, 0x5d, 0x06, 0x6c,
    52  0xc3, 0x23, 0x56, 0x9a, 0x2b, 0x85, 0x26, 0x92, 0x1c, 0xa7, 0x02, 0xb3,
    53  0xe4, 0x3f, 0x0d, 0xaf, 0x08, 0x79, 0x82, 0xb8, 0x36, 0x3d, 0xea, 0x9c,
    54  0xd3, 0x35, 0xb3, 0xbc, 0x69, 0xca, 0xf5, 0xcc, 0x9d, 0xe8, 0xfd, 0x64,
    55  0x8d, 0x17, 0x80, 0x33, 0x6e, 0x5e, 0x4a, 0x5d, 0x99, 0xc9, 0x1e, 0x87,
    56  0xb4, 0x9d, 0x1a, 0xc0, 0xd5, 0x6e, 0x13, 0x35, 0x23, 0x5e, 0xdf, 0x9b,
    57  0x5f, 0x3d, 0xef, 0xd6, 0xf7, 0x76, 0xc2, 0xea, 0x3e, 0xbb, 0x78, 0x0d,
    58  0x1c, 0x42, 0x67, 0x6b, 0x04, 0xd8, 0xf8, 0xd6, 0xda, 0x6f, 0x8b, 0xf2,
    59  0x44, 0xa0, 0x01, 0xab,
    60 };
    61 
    62 static const unsigned char TA_RSA_E0[] = {
    63  0x03,
    64 };
    65 
    66 static const unsigned char TA_DN1[] = {
    67  0x30, 0x6c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
    68  0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a,
    69  0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49,
    70  0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
    71  0x10, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
    72  0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55,
    73  0x04, 0x03, 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74,
    74  0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61,
    75  0x6e, 0x63, 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
    76  0x43, 0x41,
    77 };
    78 
    79 static const unsigned char TA_RSA_N1[] = {
    80  0xc6, 0xcc, 0xe5, 0x73, 0xe6, 0xfb, 0xd4, 0xbb, 0xe5, 0x2d, 0x2d, 0x32,
    81  0xa6, 0xdf, 0xe5, 0x81, 0x3f, 0xc9, 0xcd, 0x25, 0x49, 0xb6, 0x71, 0x2a,
    82  0xc3, 0xd5, 0x94, 0x34, 0x67, 0xa2, 0x0a, 0x1c, 0xb0, 0x5f, 0x69, 0xa6,
    83  0x40, 0xb1, 0xc4, 0xb7, 0xb2, 0x8f, 0xd0, 0x98, 0xa4, 0xa9, 0x41, 0x59,
    84  0x3a, 0xd3, 0xdc, 0x94, 0xd6, 0x3c, 0xdb, 0x74, 0x38, 0xa4, 0x4a, 0xcc,
    85  0x4d, 0x25, 0x82, 0xf7, 0x4a, 0xa5, 0x53, 0x12, 0x38, 0xee, 0xf3, 0x49,
    86  0x6d, 0x71, 0x91, 0x7e, 0x63, 0xb6, 0xab, 0xa6, 0x5f, 0xc3, 0xa4, 0x84,
    87  0xf8, 0x4f, 0x62, 0x51, 0xbe, 0xf8, 0xc5, 0xec, 0xdb, 0x38, 0x92, 0xe3,
    88  0x06, 0xe5, 0x08, 0x91, 0x0c, 0xc4, 0x28, 0x41, 0x55, 0xfb, 0xcb, 0x5a,
    89  0x89, 0x15, 0x7e, 0x71, 0xe8, 0x35, 0xbf, 0x4d, 0x72, 0x09, 0x3d, 0xbe,
    90  0x3a, 0x38, 0x50, 0x5b, 0x77, 0x31, 0x1b, 0x8d, 0xb3, 0xc7, 0x24, 0x45,
    91  0x9a, 0xa7, 0xac, 0x6d, 0x00, 0x14, 0x5a, 0x04, 0xb7, 0xba, 0x13, 0xeb,
    92  0x51, 0x0a, 0x98, 0x41, 0x41, 0x22, 0x4e, 0x65, 0x61, 0x87, 0x81, 0x41,
    93  0x50, 0xa6, 0x79, 0x5c, 0x89, 0xde, 0x19, 0x4a, 0x57, 0xd5, 0x2e, 0xe6,
    94  0x5d, 0x1c, 0x53, 0x2c, 0x7e, 0x98, 0xcd, 0x1a, 0x06, 0x16, 0xa4, 0x68,
    95  0x73, 0xd0, 0x34, 0x04, 0x13, 0x5c, 0xa1, 0x71, 0xd3, 0x5a, 0x7c, 0x55,
    96  0xdb, 0x5e, 0x64, 0xe1, 0x37, 0x87, 0x30, 0x56, 0x04, 0xe5, 0x11, 0xb4,
    97  0x29, 0x80, 0x12, 0xf1, 0x79, 0x39, 0x88, 0xa2, 0x02, 0x11, 0x7c, 0x27,
    98  0x66, 0xb7, 0x88, 0xb7, 0x78, 0xf2, 0xca, 0x0a, 0xa8, 0x38, 0xab, 0x0a,
    99  0x64, 0xc2, 0xbf, 0x66, 0x5d, 0x95, 0x84, 0xc1, 0xa1, 0x25, 0x1e, 0x87,
    100  0x5d, 0x1a, 0x50, 0x0b, 0x20, 0x12, 0xcc, 0x41, 0xbb, 0x6e, 0x0b, 0x51,
    101  0x38, 0xb8, 0x4b, 0xcb,
    102 };
    103 
    104 static const unsigned char TA_RSA_E1[] = {
    105  0x01, 0x00, 0x01,
    106 };
    107 
    108 static const br_x509_trust_anchor TAs[] = {
    109  {
    110  { (unsigned char *)TA_DN0, sizeof TA_DN0 },
    111  BR_X509_TA_CA,
    112  {
    113  BR_KEYTYPE_RSA,
    114  { .rsa = {
    115  (unsigned char *)TA_RSA_N0, sizeof TA_RSA_N0,
    116  (unsigned char *)TA_RSA_E0, sizeof TA_RSA_E0,
    117  } }
    118  }
    119  },
    120  {
    121  { (unsigned char *)TA_DN1, sizeof TA_DN1 },
    122  BR_X509_TA_CA,
    123  {
    124  BR_KEYTYPE_RSA,
    125  { .rsa = {
    126  (unsigned char *)TA_RSA_N1, sizeof TA_RSA_N1,
    127  (unsigned char *)TA_RSA_E1, sizeof TA_RSA_E1,
    128  } }
    129  }
    130  },
    131 };
    132 
    133 #ifdef __cplusplus
    134 } /* extern "C" */
    135 #endif
    136 
    137 #endif /* ifndef _CERTIFICATES_H_ */
    +
    + + + +