Ashley Mills / CyaSSL_DTLS_Ethernet

Dependencies:   EthernetInterface NTPClient cyassl-lib mbed-rtos mbed-src CyaSSL_DTLS_Ethernet

Dependents:   CyaSSL_DTLS_Ethernet

Files at this revision

API Documentation at this revision

Comitter:
ashleymills
Date:
Thu Sep 05 10:38:56 2013 +0000
Child:
1:9a6f8b6c076a
Commit message:
Initial commit.

Changed in this revision

EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
NTPClient.lib Show annotated file Show diff for this revision Revisions of this file
bsd_socket.h Show annotated file Show diff for this revision Revisions of this file
certs/device_certificate.h Show annotated file Show diff for this revision Revisions of this file
certs/device_private_key.h Show annotated file Show diff for this revision Revisions of this file
certs/root_certificate.h Show annotated file Show diff for this revision Revisions of this file
cyassl-lib.lib Show annotated file Show diff for this revision Revisions of this file
dbg.cpp Show annotated file Show diff for this revision Revisions of this file
dbg.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed-src.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/EthernetInterface/#2bb2fbd903ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NTPClient.lib	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/donatien/code/NTPClient/#881559865a93
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bsd_socket.h	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,140 @@
+#ifndef BSD_SOCKET_H_
+#define BSD_SOCKET_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "lwip/sockets.h"
+
+#include "lwip/inet.h"
+
+#include "lwip/netdb.h"
+
+//Sockets
+
+inline int accept(int s, struct sockaddr *addr, socklen_t *addrlen)
+{
+  return lwip_accept(s, addr, addrlen);
+}
+
+inline int bind(int s, const struct sockaddr *name, socklen_t namelen)
+{
+  return lwip_bind(s, name, namelen);
+}
+
+inline int shutdown(int s, int how)
+{
+  return lwip_shutdown(s, how);
+}
+
+inline int getsockname (int s, struct sockaddr *name, socklen_t *namelen)
+{
+  return lwip_getsockname(s, name, namelen);
+}
+
+inline int getpeername (int s, struct sockaddr *name, socklen_t *namelen)
+{
+  return lwip_getpeername(s, name, namelen);
+}
+
+inline int getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen)
+{
+  return lwip_getsockopt(s, level, optname, optval, optlen);
+}
+
+inline int setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen)
+{
+  return lwip_setsockopt(s, level, optname, optval, optlen);
+}
+
+inline int connect(int s, const struct sockaddr *name, socklen_t namelen)
+{
+  return lwip_connect(s, name, namelen);
+}
+
+inline int listen(int s, int backlog)
+{
+  return lwip_listen(s, backlog);
+}
+
+inline int recv(int s, void *mem, size_t len, int flags)
+{
+  return lwip_recv(s, mem, len, flags);
+}
+
+inline int recvfrom(int s, void *mem, size_t len, int flags,
+      struct sockaddr *from, socklen_t *fromlen)
+{
+  return lwip_recvfrom(s, mem, len, flags, from, fromlen);
+}
+
+inline int send(int s, const void *dataptr, size_t size, int flags)
+{
+  return lwip_send(s, dataptr, size, flags);
+}
+
+inline int sendto(int s, const void *dataptr, size_t size, int flags,
+    const struct sockaddr *to, socklen_t tolen)
+{
+  return lwip_sendto(s, dataptr, size, flags, to, tolen);
+}
+
+inline int socket(int domain, int type, int protocol)
+{
+  return lwip_socket(domain, type, protocol);
+}
+
+inline int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
+                struct timeval *timeout)
+{
+  return lwip_select(maxfdp1, readset, writeset, exceptset, timeout);
+}
+
+inline int ioctlsocket(int s, long cmd, void *argp)
+{
+  return lwip_ioctl(s, cmd, argp);
+}
+
+inline int read(int s, void *mem, size_t len)
+{
+  return lwip_read(s, mem, len);
+}
+
+inline int write(int s, const void *dataptr, size_t size)
+{
+  return lwip_write(s, dataptr, size);
+}
+
+inline int close(int s)
+{
+  return lwip_close(s);
+}
+
+//DNS
+/*
+inline struct hostent *gethostbyname(const char *name)
+{
+  return lwip_gethostbyname(name);
+}
+
+inline int gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop)
+{
+  return lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop);
+}*/
+
+inline void freeaddrinfo(struct addrinfo *ai)
+{
+  return lwip_freeaddrinfo(ai);
+}
+
+inline int getaddrinfo(const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res)
+{
+  return lwip_getaddrinfo(nodename, servname, hints, res);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/certs/device_certificate.h	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,151 @@
+#pragma once
+
+const static unsigned char deviceCertificate[] = {
+/*
+0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
+  0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
+  0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x72, 0x54, 0x43, 0x43,
+  0x41, 0x68, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x43,
+  0x4d, 0x54, 0x4d, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49,
+  0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77,
+  0x5a, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45,
+  0x42, 0x68, 0x4d, 0x43, 0x52, 0x30, 0x49, 0x78, 0x0a, 0x45, 0x6a, 0x41,
+  0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x43, 0x55, 0x4a,
+  0x6c, 0x63, 0x6d, 0x74, 0x7a, 0x61, 0x47, 0x6c, 0x79, 0x5a, 0x54, 0x45,
+  0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77,
+  0x48, 0x54, 0x6d, 0x56, 0x33, 0x59, 0x6e, 0x56, 0x79, 0x65, 0x54, 0x45,
+  0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77,
+  0x49, 0x0a, 0x56, 0x6d, 0x39, 0x6b, 0x59, 0x57, 0x5a, 0x76, 0x62, 0x6d,
+  0x55, 0x78, 0x44, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41,
+  0x73, 0x4d, 0x41, 0x31, 0x49, 0x6d, 0x52, 0x44, 0x45, 0x52, 0x4d, 0x41,
+  0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x49, 0x52, 0x45,
+  0x31, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x58, 0x49, 0x77, 0x48, 0x68,
+  0x63, 0x4e, 0x4d, 0x54, 0x4d, 0x77, 0x0a, 0x4f, 0x54, 0x41, 0x7a, 0x4d,
+  0x54, 0x51, 0x77, 0x4e, 0x6a, 0x41, 0x35, 0x57, 0x68, 0x63, 0x4e, 0x4d,
+  0x6a, 0x4d, 0x77, 0x4e, 0x7a, 0x45, 0x7a, 0x4d, 0x54, 0x51, 0x77, 0x4e,
+  0x6a, 0x41, 0x35, 0x57, 0x6a, 0x42, 0x55, 0x4d, 0x51, 0x73, 0x77, 0x43,
+  0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x51,
+  0x6a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a,
+  0x43, 0x41, 0x77, 0x4a, 0x51, 0x6d, 0x56, 0x79, 0x61, 0x33, 0x4e, 0x6f,
+  0x61, 0x58, 0x4a, 0x6c, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44,
+  0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x68, 0x57, 0x62, 0x32, 0x52, 0x68,
+  0x5a, 0x6d, 0x39, 0x75, 0x5a, 0x54, 0x45, 0x4d, 0x4d, 0x41, 0x6f, 0x47,
+  0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x44, 0x55, 0x69, 0x5a, 0x45,
+  0x4d, 0x52, 0x41, 0x77, 0x0a, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51,
+  0x44, 0x44, 0x41, 0x64, 0x45, 0x5a, 0x58, 0x5a, 0x70, 0x59, 0x32, 0x55,
+  0x78, 0x4d, 0x49, 0x47, 0x66, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71,
+  0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55,
+  0x41, 0x41, 0x34, 0x47, 0x4e, 0x41, 0x44, 0x43, 0x42, 0x69, 0x51, 0x4b,
+  0x42, 0x67, 0x51, 0x44, 0x49, 0x71, 0x41, 0x59, 0x48, 0x0a, 0x67, 0x53,
+  0x53, 0x77, 0x74, 0x70, 0x4a, 0x56, 0x68, 0x78, 0x49, 0x53, 0x56, 0x46,
+  0x41, 0x49, 0x31, 0x7a, 0x6e, 0x4f, 0x75, 0x74, 0x47, 0x7a, 0x62, 0x65,
+  0x65, 0x37, 0x4d, 0x59, 0x6f, 0x77, 0x6f, 0x37, 0x66, 0x2b, 0x48, 0x2b,
+  0x6f, 0x4e, 0x71, 0x34, 0x6b, 0x69, 0x38, 0x70, 0x50, 0x49, 0x57, 0x30,
+  0x6a, 0x71, 0x63, 0x32, 0x2b, 0x48, 0x72, 0x6e, 0x41, 0x64, 0x6c, 0x42,
+  0x77, 0x6d, 0x0a, 0x76, 0x67, 0x69, 0x64, 0x73, 0x64, 0x4a, 0x38, 0x77,
+  0x65, 0x53, 0x32, 0x6a, 0x31, 0x36, 0x37, 0x47, 0x4f, 0x61, 0x35, 0x47,
+  0x56, 0x69, 0x30, 0x7a, 0x77, 0x5a, 0x76, 0x50, 0x7a, 0x55, 0x4b, 0x44,
+  0x35, 0x53, 0x43, 0x69, 0x4c, 0x45, 0x65, 0x46, 0x36, 0x56, 0x53, 0x63,
+  0x36, 0x44, 0x34, 0x62, 0x51, 0x6f, 0x58, 0x62, 0x6e, 0x6f, 0x35, 0x52,
+  0x30, 0x77, 0x55, 0x2f, 0x64, 0x2b, 0x64, 0x0a, 0x59, 0x6b, 0x67, 0x50,
+  0x66, 0x2b, 0x6d, 0x58, 0x6c, 0x4d, 0x43, 0x34, 0x6a, 0x37, 0x64, 0x32,
+  0x39, 0x50, 0x41, 0x66, 0x38, 0x63, 0x46, 0x6d, 0x76, 0x50, 0x6e, 0x33,
+  0x34, 0x2f, 0x43, 0x33, 0x5a, 0x75, 0x58, 0x72, 0x43, 0x51, 0x49, 0x44,
+  0x41, 0x51, 0x41, 0x42, 0x6f, 0x33, 0x73, 0x77, 0x65, 0x54, 0x41, 0x4a,
+  0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x45, 0x41, 0x6a, 0x41, 0x41,
+  0x0a, 0x4d, 0x43, 0x77, 0x47, 0x43, 0x57, 0x43, 0x47, 0x53, 0x41, 0x47,
+  0x47, 0x2b, 0x45, 0x49, 0x42, 0x44, 0x51, 0x51, 0x66, 0x46, 0x68, 0x31,
+  0x50, 0x63, 0x47, 0x56, 0x75, 0x55, 0x31, 0x4e, 0x4d, 0x49, 0x45, 0x64,
+  0x6c, 0x62, 0x6d, 0x56, 0x79, 0x59, 0x58, 0x52, 0x6c, 0x5a, 0x43, 0x42,
+  0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46,
+  0x30, 0x5a, 0x54, 0x41, 0x64, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51,
+  0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x4c, 0x52, 0x51, 0x47, 0x51, 0x7a,
+  0x79, 0x75, 0x2b, 0x41, 0x49, 0x4b, 0x48, 0x53, 0x48, 0x59, 0x59, 0x64,
+  0x6d, 0x57, 0x6a, 0x38, 0x62, 0x36, 0x6e, 0x65, 0x6b, 0x77, 0x48, 0x77,
+  0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f,
+  0x41, 0x55, 0x71, 0x69, 0x63, 0x61, 0x62, 0x34, 0x68, 0x79, 0x0a, 0x6a,
+  0x43, 0x30, 0x74, 0x77, 0x6c, 0x72, 0x46, 0x64, 0x49, 0x4b, 0x6c, 0x52,
+  0x4e, 0x45, 0x39, 0x6f, 0x78, 0x55, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b,
+  0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42,
+  0x51, 0x41, 0x44, 0x67, 0x59, 0x45, 0x41, 0x6b, 0x41, 0x64, 0x62, 0x6d,
+  0x54, 0x7a, 0x55, 0x2f, 0x6b, 0x2b, 0x45, 0x5a, 0x61, 0x67, 0x37, 0x30,
+  0x4b, 0x51, 0x72, 0x0a, 0x30, 0x75, 0x52, 0x66, 0x77, 0x43, 0x61, 0x76,
+  0x75, 0x37, 0x4e, 0x4d, 0x72, 0x58, 0x33, 0x37, 0x45, 0x72, 0x6b, 0x54,
+  0x50, 0x31, 0x4c, 0x75, 0x43, 0x30, 0x2f, 0x66, 0x4a, 0x65, 0x78, 0x54,
+  0x4b, 0x63, 0x71, 0x30, 0x72, 0x66, 0x65, 0x2f, 0x72, 0x36, 0x56, 0x4d,
+  0x32, 0x65, 0x6f, 0x49, 0x71, 0x55, 0x43, 0x4e, 0x47, 0x56, 0x70, 0x61,
+  0x75, 0x57, 0x49, 0x55, 0x65, 0x44, 0x34, 0x4e, 0x0a, 0x38, 0x59, 0x66,
+  0x4d, 0x64, 0x63, 0x47, 0x34, 0x46, 0x4d, 0x70, 0x65, 0x53, 0x39, 0x36,
+  0x65, 0x78, 0x33, 0x61, 0x46, 0x6f, 0x6c, 0x30, 0x6f, 0x59, 0x6e, 0x78,
+  0x63, 0x55, 0x5a, 0x61, 0x72, 0x54, 0x33, 0x36, 0x2f, 0x5a, 0x37, 0x71,
+  0x6d, 0x73, 0x47, 0x4f, 0x2b, 0x76, 0x4a, 0x34, 0x66, 0x2b, 0x63, 0x57,
+  0x4b, 0x39, 0x64, 0x4b, 0x6c, 0x4d, 0x53, 0x6d, 0x78, 0x4e, 0x5a, 0x44,
+  0x74, 0x0a, 0x78, 0x36, 0x38, 0x76, 0x59, 0x34, 0x76, 0x43, 0x52, 0x79,
+  0x75, 0x61, 0x5a, 0x61, 0x50, 0x58, 0x4b, 0x4f, 0x67, 0x5a, 0x32, 0x72,
+  0x77, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20,
+  0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d,
+  0x2d, 0x2d, 0x2d, 0x2d, 0x0a
+*/
+
+  0x30, 0x82, 0x02, 0xad, 0x30, 0x82, 0x02, 0x16, 0xa0, 0x03, 0x02, 0x01,
+  0x02, 0x02, 0x02, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
+  0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x67, 0x31, 0x0b,
+  0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31,
+  0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x09, 0x42, 0x65,
+  0x72, 0x6b, 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06,
+  0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x77, 0x62, 0x75, 0x72,
+  0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08,
+  0x56, 0x6f, 0x64, 0x61, 0x66, 0x6f, 0x6e, 0x65, 0x31, 0x0c, 0x30, 0x0a,
+  0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x52, 0x26, 0x44, 0x31, 0x11,
+  0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x08, 0x44, 0x4d, 0x53,
+  0x65, 0x72, 0x76, 0x65, 0x72, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30,
+  0x39, 0x30, 0x33, 0x31, 0x34, 0x30, 0x36, 0x30, 0x39, 0x5a, 0x17, 0x0d,
+  0x32, 0x33, 0x30, 0x37, 0x31, 0x33, 0x31, 0x34, 0x30, 0x36, 0x30, 0x39,
+  0x5a, 0x30, 0x54, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
+  0x13, 0x02, 0x47, 0x42, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
+  0x08, 0x0c, 0x09, 0x42, 0x65, 0x72, 0x6b, 0x73, 0x68, 0x69, 0x72, 0x65,
+  0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08, 0x56,
+  0x6f, 0x64, 0x61, 0x66, 0x6f, 0x6e, 0x65, 0x31, 0x0c, 0x30, 0x0a, 0x06,
+  0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x52, 0x26, 0x44, 0x31, 0x10, 0x30,
+  0x0e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x07, 0x44, 0x65, 0x76, 0x69,
+  0x63, 0x65, 0x31, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
+  0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d,
+  0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc8, 0xa8, 0x06, 0x07,
+  0x81, 0x24, 0xb0, 0xb6, 0x92, 0x55, 0x87, 0x12, 0x12, 0x54, 0x50, 0x08,
+  0xd7, 0x39, 0xce, 0xba, 0xd1, 0xb3, 0x6d, 0xe7, 0xbb, 0x31, 0x8a, 0x30,
+  0xa3, 0xb7, 0xfe, 0x1f, 0xea, 0x0d, 0xab, 0x89, 0x22, 0xf2, 0x93, 0xc8,
+  0x5b, 0x48, 0xea, 0x73, 0x6f, 0x87, 0xae, 0x70, 0x1d, 0x94, 0x1c, 0x26,
+  0xbe, 0x08, 0x9d, 0xb1, 0xd2, 0x7c, 0xc1, 0xe4, 0xb6, 0x8f, 0x5e, 0xbb,
+  0x18, 0xe6, 0xb9, 0x19, 0x58, 0xb4, 0xcf, 0x06, 0x6f, 0x3f, 0x35, 0x0a,
+  0x0f, 0x94, 0x82, 0x88, 0xb1, 0x1e, 0x17, 0xa5, 0x52, 0x73, 0xa0, 0xf8,
+  0x6d, 0x0a, 0x17, 0x6e, 0x7a, 0x39, 0x47, 0x4c, 0x14, 0xfd, 0xdf, 0x9d,
+  0x62, 0x48, 0x0f, 0x7f, 0xe9, 0x97, 0x94, 0xc0, 0xb8, 0x8f, 0xb7, 0x76,
+  0xf4, 0xf0, 0x1f, 0xf1, 0xc1, 0x66, 0xbc, 0xf9, 0xf7, 0xe3, 0xf0, 0xb7,
+  0x66, 0xe5, 0xeb, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x7b, 0x30,
+  0x79, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00,
+  0x30, 0x2c, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01,
+  0x0d, 0x04, 0x1f, 0x16, 0x1d, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x53, 0x4c,
+  0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x43,
+  0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x30, 0x1d,
+  0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2d, 0x14, 0x06,
+  0x43, 0x3c, 0xae, 0xf8, 0x02, 0x0a, 0x1d, 0x21, 0xd8, 0x61, 0xd9, 0x96,
+  0x8f, 0xc6, 0xfa, 0x9d, 0xe9, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
+  0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xaa, 0x27, 0x1a, 0x6f, 0x88, 0x72,
+  0x8c, 0x2d, 0x2d, 0xc2, 0x5a, 0xc5, 0x74, 0x82, 0xa5, 0x44, 0xd1, 0x3d,
+  0xa3, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+  0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x90, 0x07, 0x5b,
+  0x99, 0x3c, 0xd4, 0xfe, 0x4f, 0x84, 0x65, 0xa8, 0x3b, 0xd0, 0xa4, 0x2b,
+  0xd2, 0xe4, 0x5f, 0xc0, 0x26, 0xaf, 0xbb, 0xb3, 0x4c, 0xad, 0x7d, 0xfb,
+  0x12, 0xb9, 0x13, 0x3f, 0x52, 0xee, 0x0b, 0x4f, 0xdf, 0x25, 0xec, 0x53,
+  0x29, 0xca, 0xb4, 0xad, 0xf7, 0xbf, 0xaf, 0xa5, 0x4c, 0xd9, 0xea, 0x08,
+  0xa9, 0x40, 0x8d, 0x19, 0x5a, 0x5a, 0xb9, 0x62, 0x14, 0x78, 0x3e, 0x0d,
+  0xf1, 0x87, 0xcc, 0x75, 0xc1, 0xb8, 0x14, 0xca, 0x5e, 0x4b, 0xde, 0x9e,
+  0xc7, 0x76, 0x85, 0xa2, 0x5d, 0x28, 0x62, 0x7c, 0x5c, 0x51, 0x96, 0xab,
+  0x4f, 0x7e, 0xbf, 0x67, 0xba, 0xa6, 0xb0, 0x63, 0xbe, 0xbc, 0x9e, 0x1f,
+  0xf9, 0xc5, 0x8a, 0xf5, 0xd2, 0xa5, 0x31, 0x29, 0xb1, 0x35, 0x90, 0xed,
+  0xc7, 0xaf, 0x2f, 0x63, 0x8b, 0xc2, 0x47, 0x2b, 0x9a, 0x65, 0xa3, 0xd7,
+  0x28, 0xe8, 0x19, 0xda, 0xbc
+
+};
+
+static const int deviceCertificateLength = sizeof(deviceCertificate); //689;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/certs/device_private_key.h	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,138 @@
+  #pragma once
+  
+  const static unsigned char devicePrivateKey[] = {
+  /*
+  0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x50,
+  0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d,
+  0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x64, 0x77, 0x49, 0x42,
+  0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47,
+  0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x53, 0x43,
+  0x41, 0x6d, 0x45, 0x77, 0x67, 0x67, 0x4a, 0x64, 0x41, 0x67, 0x45, 0x41,
+  0x41, 0x6f, 0x47, 0x42, 0x41, 0x4d, 0x69, 0x6f, 0x42, 0x67, 0x65, 0x42,
+  0x4a, 0x4c, 0x43, 0x32, 0x6b, 0x6c, 0x57, 0x48, 0x0a, 0x45, 0x68, 0x4a,
+  0x55, 0x55, 0x41, 0x6a, 0x58, 0x4f, 0x63, 0x36, 0x36, 0x30, 0x62, 0x4e,
+  0x74, 0x35, 0x37, 0x73, 0x78, 0x69, 0x6a, 0x43, 0x6a, 0x74, 0x2f, 0x34,
+  0x66, 0x36, 0x67, 0x32, 0x72, 0x69, 0x53, 0x4c, 0x79, 0x6b, 0x38, 0x68,
+  0x62, 0x53, 0x4f, 0x70, 0x7a, 0x62, 0x34, 0x65, 0x75, 0x63, 0x42, 0x32,
+  0x55, 0x48, 0x43, 0x61, 0x2b, 0x43, 0x4a, 0x32, 0x78, 0x30, 0x6e, 0x7a,
+  0x42, 0x0a, 0x35, 0x4c, 0x61, 0x50, 0x58, 0x72, 0x73, 0x59, 0x35, 0x72,
+  0x6b, 0x5a, 0x57, 0x4c, 0x54, 0x50, 0x42, 0x6d, 0x38, 0x2f, 0x4e, 0x51,
+  0x6f, 0x50, 0x6c, 0x49, 0x4b, 0x49, 0x73, 0x52, 0x34, 0x58, 0x70, 0x56,
+  0x4a, 0x7a, 0x6f, 0x50, 0x68, 0x74, 0x43, 0x68, 0x64, 0x75, 0x65, 0x6a,
+  0x6c, 0x48, 0x54, 0x42, 0x54, 0x39, 0x33, 0x35, 0x31, 0x69, 0x53, 0x41,
+  0x39, 0x2f, 0x36, 0x5a, 0x65, 0x55, 0x0a, 0x77, 0x4c, 0x69, 0x50, 0x74,
+  0x33, 0x62, 0x30, 0x38, 0x42, 0x2f, 0x78, 0x77, 0x57, 0x61, 0x38, 0x2b,
+  0x66, 0x66, 0x6a, 0x38, 0x4c, 0x64, 0x6d, 0x35, 0x65, 0x73, 0x4a, 0x41,
+  0x67, 0x4d, 0x42, 0x41, 0x41, 0x45, 0x43, 0x67, 0x59, 0x41, 0x4a, 0x32,
+  0x39, 0x65, 0x50, 0x2f, 0x74, 0x52, 0x69, 0x71, 0x6c, 0x57, 0x2b, 0x52,
+  0x67, 0x69, 0x70, 0x52, 0x65, 0x4d, 0x34, 0x79, 0x2f, 0x70, 0x58, 0x0a,
+  0x49, 0x65, 0x36, 0x7a, 0x74, 0x69, 0x36, 0x77, 0x6a, 0x39, 0x71, 0x4f,
+  0x55, 0x54, 0x7a, 0x31, 0x43, 0x33, 0x52, 0x67, 0x66, 0x35, 0x45, 0x5a,
+  0x57, 0x6e, 0x6e, 0x51, 0x57, 0x6b, 0x76, 0x57, 0x32, 0x52, 0x30, 0x64,
+  0x75, 0x59, 0x42, 0x67, 0x73, 0x36, 0x6f, 0x2b, 0x62, 0x51, 0x2f, 0x58,
+  0x54, 0x36, 0x6c, 0x62, 0x33, 0x39, 0x72, 0x77, 0x37, 0x56, 0x4a, 0x6d,
+  0x49, 0x4a, 0x2b, 0x30, 0x0a, 0x44, 0x59, 0x67, 0x6a, 0x66, 0x64, 0x4a,
+  0x61, 0x43, 0x6a, 0x6c, 0x71, 0x67, 0x74, 0x69, 0x49, 0x64, 0x57, 0x49,
+  0x52, 0x4f, 0x57, 0x2f, 0x59, 0x4e, 0x72, 0x6f, 0x77, 0x68, 0x68, 0x55,
+  0x62, 0x55, 0x65, 0x36, 0x51, 0x66, 0x56, 0x68, 0x67, 0x31, 0x62, 0x62,
+  0x4a, 0x31, 0x79, 0x30, 0x6a, 0x47, 0x36, 0x4f, 0x31, 0x6a, 0x65, 0x39,
+  0x64, 0x73, 0x30, 0x30, 0x53, 0x69, 0x53, 0x44, 0x75, 0x0a, 0x66, 0x2b,
+  0x79, 0x42, 0x51, 0x4a, 0x66, 0x4a, 0x37, 0x72, 0x6c, 0x68, 0x49, 0x56,
+  0x6f, 0x2b, 0x55, 0x51, 0x4a, 0x42, 0x41, 0x50, 0x42, 0x62, 0x52, 0x7a,
+  0x48, 0x4c, 0x39, 0x4c, 0x4e, 0x64, 0x4a, 0x4e, 0x62, 0x52, 0x2b, 0x45,
+  0x47, 0x64, 0x79, 0x6a, 0x33, 0x46, 0x6b, 0x47, 0x35, 0x68, 0x4d, 0x75,
+  0x6e, 0x51, 0x51, 0x78, 0x4a, 0x6e, 0x63, 0x41, 0x46, 0x46, 0x6a, 0x62,
+  0x33, 0x6a, 0x0a, 0x43, 0x6a, 0x41, 0x47, 0x30, 0x41, 0x37, 0x55, 0x64,
+  0x66, 0x39, 0x4c, 0x48, 0x2f, 0x67, 0x74, 0x2b, 0x65, 0x46, 0x79, 0x59,
+  0x4c, 0x4f, 0x39, 0x59, 0x45, 0x77, 0x2b, 0x41, 0x50, 0x45, 0x4f, 0x49,
+  0x78, 0x6c, 0x2f, 0x57, 0x76, 0x35, 0x68, 0x68, 0x68, 0x4d, 0x43, 0x51,
+  0x51, 0x44, 0x56, 0x74, 0x30, 0x62, 0x66, 0x35, 0x76, 0x77, 0x4f, 0x65,
+  0x65, 0x72, 0x31, 0x54, 0x30, 0x74, 0x59, 0x0a, 0x44, 0x71, 0x42, 0x4b,
+  0x46, 0x56, 0x4c, 0x65, 0x53, 0x67, 0x6a, 0x42, 0x52, 0x73, 0x41, 0x6c,
+  0x46, 0x47, 0x51, 0x56, 0x6d, 0x6a, 0x33, 0x55, 0x5a, 0x47, 0x71, 0x74,
+  0x63, 0x49, 0x65, 0x47, 0x61, 0x6a, 0x49, 0x57, 0x4c, 0x63, 0x76, 0x42,
+  0x45, 0x6b, 0x76, 0x37, 0x39, 0x6d, 0x52, 0x50, 0x6a, 0x52, 0x66, 0x38,
+  0x61, 0x4f, 0x69, 0x36, 0x2b, 0x39, 0x6c, 0x63, 0x64, 0x78, 0x6a, 0x46,
+  0x0a, 0x76, 0x70, 0x33, 0x7a, 0x41, 0x6b, 0x45, 0x41, 0x75, 0x30, 0x51,
+  0x53, 0x79, 0x79, 0x79, 0x43, 0x51, 0x63, 0x45, 0x66, 0x63, 0x37, 0x50,
+  0x79, 0x50, 0x59, 0x56, 0x6e, 0x7a, 0x67, 0x73, 0x41, 0x68, 0x63, 0x39,
+  0x37, 0x4d, 0x49, 0x71, 0x50, 0x78, 0x32, 0x59, 0x4a, 0x38, 0x53, 0x4f,
+  0x30, 0x31, 0x4b, 0x35, 0x78, 0x41, 0x49, 0x77, 0x2b, 0x54, 0x46, 0x2b,
+  0x69, 0x63, 0x37, 0x36, 0x66, 0x0a, 0x63, 0x4f, 0x69, 0x35, 0x57, 0x4c,
+  0x71, 0x5a, 0x74, 0x31, 0x43, 0x6b, 0x46, 0x36, 0x4c, 0x7a, 0x62, 0x74,
+  0x79, 0x35, 0x34, 0x69, 0x4c, 0x45, 0x7a, 0x59, 0x39, 0x45, 0x4f, 0x77,
+  0x4a, 0x42, 0x41, 0x4b, 0x70, 0x50, 0x34, 0x31, 0x42, 0x64, 0x59, 0x44,
+  0x4d, 0x64, 0x48, 0x34, 0x77, 0x63, 0x67, 0x39, 0x75, 0x4a, 0x31, 0x46,
+  0x30, 0x56, 0x66, 0x7a, 0x4f, 0x63, 0x5a, 0x6a, 0x75, 0x34, 0x0a, 0x61,
+  0x54, 0x6c, 0x6a, 0x64, 0x5a, 0x72, 0x74, 0x6a, 0x79, 0x5a, 0x71, 0x57,
+  0x38, 0x55, 0x5a, 0x37, 0x7a, 0x62, 0x44, 0x2f, 0x47, 0x52, 0x47, 0x58,
+  0x4b, 0x44, 0x68, 0x4e, 0x75, 0x4a, 0x31, 0x61, 0x56, 0x30, 0x6f, 0x41,
+  0x4a, 0x78, 0x71, 0x38, 0x6b, 0x54, 0x49, 0x6e, 0x57, 0x43, 0x64, 0x6e,
+  0x49, 0x56, 0x42, 0x73, 0x64, 0x63, 0x43, 0x51, 0x48, 0x48, 0x79, 0x39,
+  0x43, 0x39, 0x66, 0x0a, 0x35, 0x35, 0x71, 0x42, 0x51, 0x32, 0x73, 0x33,
+  0x71, 0x5a, 0x49, 0x70, 0x43, 0x6d, 0x53, 0x76, 0x67, 0x6f, 0x6f, 0x39,
+  0x61, 0x70, 0x4f, 0x32, 0x32, 0x4c, 0x50, 0x57, 0x6a, 0x4e, 0x6a, 0x7a,
+  0x5a, 0x72, 0x32, 0x62, 0x57, 0x59, 0x59, 0x6a, 0x39, 0x61, 0x36, 0x71,
+  0x50, 0x4d, 0x33, 0x43, 0x33, 0x4a, 0x45, 0x57, 0x51, 0x39, 0x33, 0x73,
+  0x68, 0x55, 0x74, 0x39, 0x54, 0x38, 0x55, 0x6e, 0x0a, 0x74, 0x52, 0x38,
+  0x45, 0x66, 0x72, 0x5a, 0x43, 0x64, 0x51, 0x6f, 0x51, 0x79, 0x7a, 0x67,
+  0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x50,
+  0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d,
+  0x2d, 0x2d, 0x2d, 0x0a
+  */
+  
+  0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xc8,
+  0xa8, 0x06, 0x07, 0x81, 0x24, 0xb0, 0xb6, 0x92, 0x55, 0x87, 0x12, 0x12,
+  0x54, 0x50, 0x08, 0xd7, 0x39, 0xce, 0xba, 0xd1, 0xb3, 0x6d, 0xe7, 0xbb,
+  0x31, 0x8a, 0x30, 0xa3, 0xb7, 0xfe, 0x1f, 0xea, 0x0d, 0xab, 0x89, 0x22,
+  0xf2, 0x93, 0xc8, 0x5b, 0x48, 0xea, 0x73, 0x6f, 0x87, 0xae, 0x70, 0x1d,
+  0x94, 0x1c, 0x26, 0xbe, 0x08, 0x9d, 0xb1, 0xd2, 0x7c, 0xc1, 0xe4, 0xb6,
+  0x8f, 0x5e, 0xbb, 0x18, 0xe6, 0xb9, 0x19, 0x58, 0xb4, 0xcf, 0x06, 0x6f,
+  0x3f, 0x35, 0x0a, 0x0f, 0x94, 0x82, 0x88, 0xb1, 0x1e, 0x17, 0xa5, 0x52,
+  0x73, 0xa0, 0xf8, 0x6d, 0x0a, 0x17, 0x6e, 0x7a, 0x39, 0x47, 0x4c, 0x14,
+  0xfd, 0xdf, 0x9d, 0x62, 0x48, 0x0f, 0x7f, 0xe9, 0x97, 0x94, 0xc0, 0xb8,
+  0x8f, 0xb7, 0x76, 0xf4, 0xf0, 0x1f, 0xf1, 0xc1, 0x66, 0xbc, 0xf9, 0xf7,
+  0xe3, 0xf0, 0xb7, 0x66, 0xe5, 0xeb, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01,
+  0x02, 0x81, 0x80, 0x09, 0xdb, 0xd7, 0x8f, 0xfe, 0xd4, 0x62, 0xaa, 0x55,
+  0xbe, 0x46, 0x08, 0xa9, 0x45, 0xe3, 0x38, 0xcb, 0xfa, 0x57, 0x21, 0xee,
+  0xb3, 0xb6, 0x2e, 0xb0, 0x8f, 0xda, 0x8e, 0x51, 0x3c, 0xf5, 0x0b, 0x74,
+  0x60, 0x7f, 0x91, 0x19, 0x5a, 0x79, 0xd0, 0x5a, 0x4b, 0xd6, 0xd9, 0x1d,
+  0x1d, 0xb9, 0x80, 0x60, 0xb3, 0xaa, 0x3e, 0x6d, 0x0f, 0xd7, 0x4f, 0xa9,
+  0x5b, 0xdf, 0xda, 0xf0, 0xed, 0x52, 0x66, 0x20, 0x9f, 0xb4, 0x0d, 0x88,
+  0x23, 0x7d, 0xd2, 0x5a, 0x0a, 0x39, 0x6a, 0x82, 0xd8, 0x88, 0x75, 0x62,
+  0x11, 0x39, 0x6f, 0xd8, 0x36, 0xba, 0x30, 0x86, 0x15, 0x1b, 0x51, 0xee,
+  0x90, 0x7d, 0x58, 0x60, 0xd5, 0xb6, 0xc9, 0xd7, 0x2d, 0x23, 0x1b, 0xa3,
+  0xb5, 0x8d, 0xef, 0x5d, 0xb3, 0x4d, 0x12, 0x89, 0x20, 0xee, 0x7f, 0xec,
+  0x81, 0x40, 0x97, 0xc9, 0xee, 0xb9, 0x61, 0x21, 0x5a, 0x3e, 0x51, 0x02,
+  0x41, 0x00, 0xf0, 0x5b, 0x47, 0x31, 0xcb, 0xf4, 0xb3, 0x5d, 0x24, 0xd6,
+  0xd1, 0xf8, 0x41, 0x9d, 0xca, 0x3d, 0xc5, 0x90, 0x6e, 0x61, 0x32, 0xe9,
+  0xd0, 0x43, 0x12, 0x67, 0x70, 0x01, 0x45, 0x8d, 0xbd, 0xe3, 0x0a, 0x30,
+  0x06, 0xd0, 0x0e, 0xd4, 0x75, 0xff, 0x4b, 0x1f, 0xf8, 0x2d, 0xf9, 0xe1,
+  0x72, 0x60, 0xb3, 0xbd, 0x60, 0x4c, 0x3e, 0x00, 0xf1, 0x0e, 0x23, 0x19,
+  0x7f, 0x5a, 0xfe, 0x61, 0x86, 0x13, 0x02, 0x41, 0x00, 0xd5, 0xb7, 0x46,
+  0xdf, 0xe6, 0xfc, 0x0e, 0x79, 0xea, 0xf5, 0x4f, 0x4b, 0x58, 0x0e, 0xa0,
+  0x4a, 0x15, 0x52, 0xde, 0x4a, 0x08, 0xc1, 0x46, 0xc0, 0x25, 0x14, 0x64,
+  0x15, 0x9a, 0x3d, 0xd4, 0x64, 0x6a, 0xad, 0x70, 0x87, 0x86, 0x6a, 0x32,
+  0x16, 0x2d, 0xcb, 0xc1, 0x12, 0x4b, 0xfb, 0xf6, 0x64, 0x4f, 0x8d, 0x17,
+  0xfc, 0x68, 0xe8, 0xba, 0xfb, 0xd9, 0x5c, 0x77, 0x18, 0xc5, 0xbe, 0x9d,
+  0xf3, 0x02, 0x41, 0x00, 0xbb, 0x44, 0x12, 0xcb, 0x2c, 0x82, 0x41, 0xc1,
+  0x1f, 0x73, 0xb3, 0xf2, 0x3d, 0x85, 0x67, 0xce, 0x0b, 0x00, 0x85, 0xcf,
+  0x7b, 0x30, 0x8a, 0x8f, 0xc7, 0x66, 0x09, 0xf1, 0x23, 0xb4, 0xd4, 0xae,
+  0x71, 0x00, 0x8c, 0x3e, 0x4c, 0x5f, 0xa2, 0x73, 0xbe, 0x9f, 0x70, 0xe8,
+  0xb9, 0x58, 0xba, 0x99, 0xb7, 0x50, 0xa4, 0x17, 0xa2, 0xf3, 0x6e, 0xdc,
+  0xb9, 0xe2, 0x22, 0xc4, 0xcd, 0x8f, 0x44, 0x3b, 0x02, 0x41, 0x00, 0xaa,
+  0x4f, 0xe3, 0x50, 0x5d, 0x60, 0x33, 0x1d, 0x1f, 0x8c, 0x1c, 0x83, 0xdb,
+  0x89, 0xd4, 0x5d, 0x15, 0x7f, 0x33, 0x9c, 0x66, 0x3b, 0xb8, 0x69, 0x39,
+  0x63, 0x75, 0x9a, 0xed, 0x8f, 0x26, 0x6a, 0x5b, 0xc5, 0x19, 0xef, 0x36,
+  0xc3, 0xfc, 0x64, 0x46, 0x5c, 0xa0, 0xe1, 0x36, 0xe2, 0x75, 0x69, 0x5d,
+  0x28, 0x00, 0x9c, 0x6a, 0xf2, 0x44, 0xc8, 0x9d, 0x60, 0x9d, 0x9c, 0x85,
+  0x41, 0xb1, 0xd7, 0x02, 0x40, 0x71, 0xf2, 0xf4, 0x2f, 0x5f, 0xe7, 0x9a,
+  0x81, 0x43, 0x6b, 0x37, 0xa9, 0x92, 0x29, 0x0a, 0x64, 0xaf, 0x82, 0x8a,
+  0x3d, 0x6a, 0x93, 0xb6, 0xd8, 0xb3, 0xd6, 0x8c, 0xd8, 0xf3, 0x66, 0xbd,
+  0x9b, 0x59, 0x86, 0x23, 0xf5, 0xae, 0xaa, 0x3c, 0xcd, 0xc2, 0xdc, 0x91,
+  0x16, 0x43, 0xdd, 0xec, 0x85, 0x4b, 0x7d, 0x4f, 0xc5, 0x27, 0xb5, 0x1f,
+  0x04, 0x7e, 0xb6, 0x42, 0x75, 0x0a, 0x10, 0xcb, 0x38
+  
+};
+
+const static int devicePrivateKeyLength = sizeof(devicePrivateKey);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/certs/root_certificate.h	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,144 @@
+#pragma once
+
+const static unsigned char rootCertificate[] = {
+  0x30, 0x82, 0x02, 0x95, 0x30, 0x82, 0x01, 0xfe, 0xa0, 0x03, 0x02, 0x01,
+  0x02, 0x02, 0x02, 0x11, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
+  0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x67, 0x31, 0x0b,
+  0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31,
+  0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x09, 0x42, 0x65,
+  0x72, 0x6b, 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06,
+  0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x77, 0x62, 0x75, 0x72,
+  0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x08,
+  0x56, 0x6f, 0x64, 0x61, 0x66, 0x6f, 0x6e, 0x65, 0x31, 0x0c, 0x30, 0x0a,
+  0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x52, 0x26, 0x44, 0x31, 0x11,
+  0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x08, 0x44, 0x4d, 0x53,
+  0x65, 0x72, 0x76, 0x65, 0x72, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30,
+  0x39, 0x30, 0x33, 0x31, 0x34, 0x30, 0x36, 0x30, 0x38, 0x5a, 0x17, 0x0d,
+  0x32, 0x33, 0x30, 0x37, 0x31, 0x33, 0x31, 0x34, 0x30, 0x36, 0x30, 0x38,
+  0x5a, 0x30, 0x67, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
+  0x13, 0x02, 0x47, 0x42, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
+  0x08, 0x0c, 0x09, 0x42, 0x65, 0x72, 0x6b, 0x73, 0x68, 0x69, 0x72, 0x65,
+  0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e,
+  0x65, 0x77, 0x62, 0x75, 0x72, 0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03,
+  0x55, 0x04, 0x0a, 0x0c, 0x08, 0x56, 0x6f, 0x64, 0x61, 0x66, 0x6f, 0x6e,
+  0x65, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03,
+  0x52, 0x26, 0x44, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03,
+  0x0c, 0x08, 0x44, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x30, 0x81,
+  0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
+  0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02,
+  0x81, 0x81, 0x00, 0xba, 0x95, 0x99, 0x1e, 0x6e, 0x75, 0x45, 0xb3, 0x24,
+  0x12, 0x4b, 0xca, 0x02, 0xf8, 0x25, 0x33, 0xde, 0x81, 0x71, 0x65, 0x52,
+  0x73, 0x15, 0xbb, 0x29, 0xa5, 0xc5, 0x86, 0x6d, 0x40, 0xae, 0xdb, 0x75,
+  0xd5, 0x59, 0xb9, 0x29, 0x30, 0xb4, 0xac, 0x8f, 0xb4, 0x92, 0x21, 0xb9,
+  0xe2, 0x4c, 0x61, 0xbd, 0x8e, 0xde, 0xb9, 0x67, 0x94, 0x71, 0x0a, 0x89,
+  0x28, 0x7c, 0x54, 0x4c, 0x58, 0xd4, 0x5a, 0xff, 0x13, 0x70, 0x9a, 0xf3,
+  0x9a, 0x32, 0x1e, 0xe4, 0x4b, 0x61, 0x8a, 0x92, 0xe9, 0x74, 0xdf, 0x95,
+  0xfc, 0xf2, 0x42, 0x3b, 0xf1, 0x62, 0x2d, 0x74, 0xa2, 0xca, 0x44, 0x2c,
+  0x0b, 0xe5, 0x61, 0xc9, 0x4f, 0x01, 0x28, 0xd6, 0x2b, 0xa6, 0xca, 0x72,
+  0x89, 0x0d, 0x74, 0xf4, 0xa3, 0xe8, 0xc9, 0xb1, 0xfc, 0x90, 0xae, 0xd6,
+  0xd8, 0x85, 0xdf, 0xd9, 0xdf, 0x40, 0x68, 0xba, 0xf3, 0x72, 0x05, 0x02,
+  0x03, 0x01, 0x00, 0x01, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x1d, 0x06, 0x03,
+  0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xaa, 0x27, 0x1a, 0x6f, 0x88,
+  0x72, 0x8c, 0x2d, 0x2d, 0xc2, 0x5a, 0xc5, 0x74, 0x82, 0xa5, 0x44, 0xd1,
+  0x3d, 0xa3, 0x15, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
+  0x30, 0x16, 0x80, 0x14, 0xaa, 0x27, 0x1a, 0x6f, 0x88, 0x72, 0x8c, 0x2d,
+  0x2d, 0xc2, 0x5a, 0xc5, 0x74, 0x82, 0xa5, 0x44, 0xd1, 0x3d, 0xa3, 0x15,
+  0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01,
+  0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
+  0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x7d, 0x38, 0x65,
+  0xbb, 0x6b, 0xbb, 0xde, 0x19, 0xb7, 0xaa, 0xe6, 0x49, 0x5f, 0x9e, 0xe3,
+  0xa0, 0xc4, 0x67, 0xfc, 0xdf, 0xa5, 0xd8, 0xa6, 0x38, 0xab, 0x5e, 0x98,
+  0x23, 0xe8, 0x19, 0x22, 0x82, 0x65, 0x2c, 0x5f, 0xee, 0x21, 0x9c, 0x3a,
+  0xe0, 0xeb, 0xb1, 0x7c, 0xa3, 0x5f, 0x22, 0xf2, 0xaf, 0x08, 0xbe, 0x78,
+  0x2d, 0x0f, 0xbf, 0xa6, 0x58, 0x7e, 0xf0, 0x2c, 0xec, 0x99, 0x97, 0x63,
+  0x75, 0x5f, 0x52, 0xff, 0x5f, 0x89, 0x79, 0xf7, 0xbe, 0x46, 0x11, 0x28,
+  0x82, 0x34, 0xaf, 0x16, 0x3b, 0x36, 0xa3, 0x25, 0x5a, 0x30, 0x28, 0xd9,
+  0x3b, 0x15, 0xae, 0x8e, 0xf6, 0x49, 0xdd, 0x77, 0x61, 0xa5, 0x76, 0x49,
+  0xb1, 0xd9, 0xc4, 0xc7, 0x8a, 0xe0, 0x98, 0x78, 0xa3, 0xdd, 0xeb, 0x37,
+  0x4b, 0x36, 0xab, 0x4d, 0x28, 0xcf, 0x55, 0x6f, 0x0c, 0xa4, 0x15, 0x38,
+  0x1f, 0xc3, 0x4a, 0x95, 0x62
+  /* PEM
+  0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
+  0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
+  0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x6c, 0x54, 0x43, 0x43,
+  0x41, 0x66, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x43,
+  0x45, 0x52, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49,
+  0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77,
+  0x5a, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45,
+  0x42, 0x68, 0x4d, 0x43, 0x52, 0x30, 0x49, 0x78, 0x0a, 0x45, 0x6a, 0x41,
+  0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x43, 0x55, 0x4a,
+  0x6c, 0x63, 0x6d, 0x74, 0x7a, 0x61, 0x47, 0x6c, 0x79, 0x5a, 0x54, 0x45,
+  0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77,
+  0x48, 0x54, 0x6d, 0x56, 0x33, 0x59, 0x6e, 0x56, 0x79, 0x65, 0x54, 0x45,
+  0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77,
+  0x49, 0x0a, 0x56, 0x6d, 0x39, 0x6b, 0x59, 0x57, 0x5a, 0x76, 0x62, 0x6d,
+  0x55, 0x78, 0x44, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41,
+  0x73, 0x4d, 0x41, 0x31, 0x49, 0x6d, 0x52, 0x44, 0x45, 0x52, 0x4d, 0x41,
+  0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x49, 0x52, 0x45,
+  0x31, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x58, 0x49, 0x77, 0x48, 0x68,
+  0x63, 0x4e, 0x4d, 0x54, 0x4d, 0x77, 0x0a, 0x4f, 0x54, 0x41, 0x7a, 0x4d,
+  0x54, 0x51, 0x77, 0x4e, 0x6a, 0x41, 0x34, 0x57, 0x68, 0x63, 0x4e, 0x4d,
+  0x6a, 0x4d, 0x77, 0x4e, 0x7a, 0x45, 0x7a, 0x4d, 0x54, 0x51, 0x77, 0x4e,
+  0x6a, 0x41, 0x34, 0x57, 0x6a, 0x42, 0x6e, 0x4d, 0x51, 0x73, 0x77, 0x43,
+  0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x51,
+  0x6a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a,
+  0x43, 0x41, 0x77, 0x4a, 0x51, 0x6d, 0x56, 0x79, 0x61, 0x33, 0x4e, 0x6f,
+  0x61, 0x58, 0x4a, 0x6c, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44,
+  0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x64, 0x4f, 0x5a, 0x58, 0x64, 0x69,
+  0x64, 0x58, 0x4a, 0x35, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44,
+  0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x68, 0x57, 0x62, 0x32, 0x52, 0x68,
+  0x5a, 0x6d, 0x39, 0x75, 0x0a, 0x5a, 0x54, 0x45, 0x4d, 0x4d, 0x41, 0x6f,
+  0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x44, 0x55, 0x69, 0x5a,
+  0x45, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51,
+  0x44, 0x44, 0x41, 0x68, 0x45, 0x54, 0x56, 0x4e, 0x6c, 0x63, 0x6e, 0x5a,
+  0x6c, 0x63, 0x6a, 0x43, 0x42, 0x6e, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b,
+  0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x0a, 0x41, 0x51,
+  0x45, 0x46, 0x41, 0x41, 0x4f, 0x42, 0x6a, 0x51, 0x41, 0x77, 0x67, 0x59,
+  0x6b, 0x43, 0x67, 0x59, 0x45, 0x41, 0x75, 0x70, 0x57, 0x5a, 0x48, 0x6d,
+  0x35, 0x31, 0x52, 0x62, 0x4d, 0x6b, 0x45, 0x6b, 0x76, 0x4b, 0x41, 0x76,
+  0x67, 0x6c, 0x4d, 0x39, 0x36, 0x42, 0x63, 0x57, 0x56, 0x53, 0x63, 0x78,
+  0x57, 0x37, 0x4b, 0x61, 0x58, 0x46, 0x68, 0x6d, 0x31, 0x41, 0x72, 0x74,
+  0x74, 0x31, 0x0a, 0x31, 0x56, 0x6d, 0x35, 0x4b, 0x54, 0x43, 0x30, 0x72,
+  0x49, 0x2b, 0x30, 0x6b, 0x69, 0x47, 0x35, 0x34, 0x6b, 0x78, 0x68, 0x76,
+  0x59, 0x37, 0x65, 0x75, 0x57, 0x65, 0x55, 0x63, 0x51, 0x71, 0x4a, 0x4b,
+  0x48, 0x78, 0x55, 0x54, 0x46, 0x6a, 0x55, 0x57, 0x76, 0x38, 0x54, 0x63,
+  0x4a, 0x72, 0x7a, 0x6d, 0x6a, 0x49, 0x65, 0x35, 0x45, 0x74, 0x68, 0x69,
+  0x70, 0x4c, 0x70, 0x64, 0x4e, 0x2b, 0x56, 0x0a, 0x2f, 0x50, 0x4a, 0x43,
+  0x4f, 0x2f, 0x46, 0x69, 0x4c, 0x58, 0x53, 0x69, 0x79, 0x6b, 0x51, 0x73,
+  0x43, 0x2b, 0x56, 0x68, 0x79, 0x55, 0x38, 0x42, 0x4b, 0x4e, 0x59, 0x72,
+  0x70, 0x73, 0x70, 0x79, 0x69, 0x51, 0x31, 0x30, 0x39, 0x4b, 0x50, 0x6f,
+  0x79, 0x62, 0x48, 0x38, 0x6b, 0x4b, 0x37, 0x57, 0x32, 0x49, 0x58, 0x66,
+  0x32, 0x64, 0x39, 0x41, 0x61, 0x4c, 0x72, 0x7a, 0x63, 0x67, 0x55, 0x43,
+  0x0a, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x51, 0x4d, 0x45, 0x34,
+  0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59,
+  0x45, 0x46, 0x4b, 0x6f, 0x6e, 0x47, 0x6d, 0x2b, 0x49, 0x63, 0x6f, 0x77,
+  0x74, 0x4c, 0x63, 0x4a, 0x61, 0x78, 0x58, 0x53, 0x43, 0x70, 0x55, 0x54,
+  0x52, 0x50, 0x61, 0x4d, 0x56, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55,
+  0x64, 0x49, 0x77, 0x51, 0x59, 0x0a, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x4b,
+  0x6f, 0x6e, 0x47, 0x6d, 0x2b, 0x49, 0x63, 0x6f, 0x77, 0x74, 0x4c, 0x63,
+  0x4a, 0x61, 0x78, 0x58, 0x53, 0x43, 0x70, 0x55, 0x54, 0x52, 0x50, 0x61,
+  0x4d, 0x56, 0x4d, 0x41, 0x77, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77,
+  0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51,
+  0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x0a, 0x41,
+  0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x59, 0x45, 0x41, 0x66,
+  0x54, 0x68, 0x6c, 0x75, 0x32, 0x75, 0x37, 0x33, 0x68, 0x6d, 0x33, 0x71,
+  0x75, 0x5a, 0x4a, 0x58, 0x35, 0x37, 0x6a, 0x6f, 0x4d, 0x52, 0x6e, 0x2f,
+  0x4e, 0x2b, 0x6c, 0x32, 0x4b, 0x59, 0x34, 0x71, 0x31, 0x36, 0x59, 0x49,
+  0x2b, 0x67, 0x5a, 0x49, 0x6f, 0x4a, 0x6c, 0x4c, 0x46, 0x2f, 0x75, 0x49,
+  0x5a, 0x77, 0x36, 0x0a, 0x34, 0x4f, 0x75, 0x78, 0x66, 0x4b, 0x4e, 0x66,
+  0x49, 0x76, 0x4b, 0x76, 0x43, 0x4c, 0x35, 0x34, 0x4c, 0x51, 0x2b, 0x2f,
+  0x70, 0x6c, 0x68, 0x2b, 0x38, 0x43, 0x7a, 0x73, 0x6d, 0x5a, 0x64, 0x6a,
+  0x64, 0x56, 0x39, 0x53, 0x2f, 0x31, 0x2b, 0x4a, 0x65, 0x66, 0x65, 0x2b,
+  0x52, 0x68, 0x45, 0x6f, 0x67, 0x6a, 0x53, 0x76, 0x46, 0x6a, 0x73, 0x32,
+  0x6f, 0x79, 0x56, 0x61, 0x4d, 0x43, 0x6a, 0x5a, 0x0a, 0x4f, 0x78, 0x57,
+  0x75, 0x6a, 0x76, 0x5a, 0x4a, 0x33, 0x58, 0x64, 0x68, 0x70, 0x58, 0x5a,
+  0x4a, 0x73, 0x64, 0x6e, 0x45, 0x78, 0x34, 0x72, 0x67, 0x6d, 0x48, 0x69,
+  0x6a, 0x33, 0x65, 0x73, 0x33, 0x53, 0x7a, 0x61, 0x72, 0x54, 0x53, 0x6a,
+  0x50, 0x56, 0x57, 0x38, 0x4d, 0x70, 0x42, 0x55, 0x34, 0x48, 0x38, 0x4e,
+  0x4b, 0x6c, 0x57, 0x49, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45,
+  0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41,
+  0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
+  */
+};
+
+static const int rootCertificateLength = sizeof(rootCertificate);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cyassl-lib.lib	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/ashleymills/code/cyassl-lib/#714293de3836
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbg.cpp	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,127 @@
+/* dbg.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "dbg.h"
+
+#include "mbed.h"
+#include "rtos.h"
+
+#include <cstdio>
+#include <cstdarg>
+
+using namespace std;
+
+static Serial debug_pc(USBTX, USBRX);
+
+static char debug_newline[3];
+
+static void debug_lock(bool set)
+{
+  static Mutex* mtx = new Mutex(); //Singleton runtime initialisation to avoid static initialisation chaos problems
+  static bool init = false;
+  if(set)
+  {
+    mtx->lock();
+    if(!init)
+    {
+      strncpy( debug_newline, "\n", 2 );
+      printf("[START]\n");
+      fflush(stdout);
+      init = true;
+    }
+  }
+  else
+  {
+    mtx->unlock();
+  }
+}
+
+void debug_init()
+{
+  debug_lock(true); //Force init
+  debug_lock(false);
+}
+
+void debug_set_newline(const char* newline)
+{
+  debug_lock(true);
+  strncpy( debug_newline, newline, 2 );
+  debug_newline[2] = '\0';
+  debug_lock(false);
+}
+
+void debug_set_speed(int speed)
+{
+  debug_pc.baud(speed);
+}
+
+void debug(int level, const char* module, int line, const char* fmt, ...)
+{
+  debug_lock(true);
+  switch(level)
+  {
+  default:
+  case 1:
+    printf("[ERROR]");
+    break;
+  case 2:
+    printf("[WARN]");
+    break;
+  case 3:
+    printf("[INFO]");
+    break;
+  case 4:
+    printf("[DBG]");
+    break;
+  }
+
+  printf(" Module %s - Line %d: ", module, line);
+
+  va_list argp;
+
+  va_start(argp, fmt);
+  vprintf(fmt, argp);
+  va_end(argp);
+
+  printf(debug_newline);
+
+  fflush(stdout);
+
+  debug_lock(false);
+
+}
+
+void debug_error(const char* module, int line, int ret)
+{
+  debug_lock(true);
+  printf("[RC] Module %s - Line %d : Error %d\n", module, line, ret);
+  fflush(stdout);
+  debug_lock(false);
+}
+
+void debug_exact(const char* fmt, ...)
+{
+  debug_lock(true);
+  va_list argp;
+
+  va_start(argp, fmt);
+  vprintf(fmt, argp);
+  va_end(argp);
+  debug_lock(false);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbg.h	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,79 @@
+/* dbg.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef DBG_H_
+#define DBG_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void debug_init(void);
+void debug(int level, const char* module, int line, const char* fmt, ...);
+void debug_set_newline(const char* newline);
+void debug_set_speed(int speed);
+void debug_error(const char* module, int line, int ret);
+void debug_exact(const char* fmt, ...);
+
+#define DBG_INIT() do{ debug_init(); }while(0)
+
+#define DBG_SET_NEWLINE( x ) do{ debug_set_newline(x); }while(0)
+
+#define DBG_SET_SPEED( x ) do{ debug_set_speed(x); }while(0)
+
+#if __DEBUG__ > 0
+#ifndef __MODULE__
+#error "__MODULE__ must be defined"
+#endif
+#endif
+
+#if __DEBUG__ >= 1
+#define ERR(...) do{ debug(1, __MODULE__, __LINE__, __VA_ARGS__); }while(0)
+#else
+#define ERR(...) do{ }while(0)
+#endif
+
+#if __DEBUG__ >= 2
+#define WARN(...) do{ debug(2, __MODULE__, __LINE__, __VA_ARGS__); }while(0)
+#else
+#define WARN(...) do{ }while(0)
+#endif
+
+#if __DEBUG__ >= 3
+#define INFO(...) do{ debug(3, __MODULE__, __LINE__, __VA_ARGS__); }while(0)
+#define CHECK(ret) do{ if(ret){ debug_error(__MODULE__, __LINE__, ret); } }while(0)
+#else
+#define INFO(...) do{ }while(0)
+#define CHECK(ret) do{ }while(0)
+#endif
+
+#if __DEBUG__ >= 4
+#define DBG(...) do{ debug(4, __MODULE__, __LINE__, __VA_ARGS__); }while(0)
+#define DBGX(...) do{ debug_exact(__VA_ARGS__); }while(0)
+#else
+#define DBG(...) do{ }while(0)
+#define DBGX(...) do{ }while(0)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* DBG_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,357 @@
+#define __DEBUG__ 4 //Maximum verbosity
+#ifndef __MODULE__
+#define __MODULE__ "main.cpp"
+#endif
+
+#define DEBUG_CYASSL 1
+#include "bsd_socket.h"
+#include "mbed.h"
+#include "rtos.h"
+#include "dbg.h"
+#include "cyassl/ssl.h"
+//#include "VodafoneUSBModem.h"
+#include "EthernetInterface.h"
+#include "NTPClient.h"
+
+#include "logging.h"
+
+#define APN_PAYG
+
+#ifdef APN_GDSP
+   #define APN "ppinternetd.gdsp" 
+   #define APN_USERNAME ""
+   #define APN_PASSWORD ""
+#endif
+
+#ifdef APN_CONTRACT
+   #define APN "internet" 
+   #define APN_USERNAME "web"
+   #define APN_PASSWORD "web"
+#endif
+
+#ifdef APN_PAYG
+   #define APN "smart" 
+   #define APN_USERNAME "web"
+   #define APN_PASSWORD "web"
+#endif
+
+#include "certs/device_certificate.h"
+#include "certs/device_private_key.h"
+#include "certs/root_certificate.h"
+/*
+static INLINE unsigned int my_psk_client_cb(CYASSL* ssl, const char* hint,
+        char* identity, unsigned int id_max_len, unsigned char* key,
+        unsigned int key_max_len)
+{
+    (void)ssl;
+    (void)hint;
+    (void)key_max_len;
+    
+    DBG("PSK client callback callled.");
+    
+    // identity is OpenSSL testing default for openssl s_client, keep same
+    strncpy(identity, "Client_identity", id_max_len);
+
+
+    // test key in hex is 0x1a2b3c4d , in decimal 439,041,101 , we're using
+    //   unsigned binary
+    key[0] = 26;
+    key[1] = 43;
+    key[2] = 60;
+    key[3] = 77;
+
+    return 4;   // length of key in octets or 0 for error
+}
+
+
+static INLINE unsigned int my_psk_server_cb(CYASSL* ssl, const char* identity,
+        unsigned char* key, unsigned int key_max_len)
+{
+    (void)ssl;
+    (void)key_max_len;
+
+
+    DBG("PSK server callback called.");
+
+    // identity is OpenSSL testing default for openssl s_client, keep same
+    if (strncmp(identity, "Client_identity", 15) != 0)
+        return 0;
+
+    // test key in hex is 0x1a2b3c4d , in decimal 439,041,101 , we're using
+    // unsigned binary
+    key[0] = 26;
+    key[1] = 43;
+    key[2] = 60;
+    key[3] = 77;
+
+    return 4;   // length of key in octets or 0 for error
+}
+*/
+
+sockaddr_in bindAddr,serverAddress;
+
+bool connectToSocketUDP(char *ipAddress, int port, int *sockfd) {
+  *sockfd = -1;
+  // create the socket
+  if((*sockfd=socket(AF_INET,SOCK_DGRAM,0))<0) {
+     DBG("Error opening socket");
+     return false;
+  }
+  socklen_t sockAddrInLen = sizeof(struct sockaddr_in);
+   
+  // bind socket to 11111
+  memset(&bindAddr,  0x00, sockAddrInLen);
+  bindAddr.sin_family = AF_INET; // IP family
+  bindAddr.sin_port = htons(11111);
+  bindAddr.sin_addr.s_addr = IPADDR_ANY; // 32 bit IP representation
+  // call bind
+  if(bind(*sockfd,(const struct sockaddr *)&bindAddr,sockAddrInLen)!=0) {
+     DBG("Error binding socket");
+     perror(NULL);
+  }
+
+  INFO("UDP socket created and bound to: %s:%d",inet_ntoa(bindAddr.sin_addr),ntohs(bindAddr.sin_port));
+         
+  // create the socket address
+
+  memset(&serverAddress, 0x00, sizeof(struct sockaddr_in));
+  serverAddress.sin_addr.s_addr = inet_addr(ipAddress);
+  serverAddress.sin_family = AF_INET;
+  serverAddress.sin_port = htons(port);
+
+  // do socket connect
+  //LOG("Connecting socket to %s:%d", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port));
+  if(connect(*sockfd, (const struct sockaddr *)&serverAddress, sizeof(serverAddress))<0) {
+     shutdown(*sockfd,SHUT_RDWR);
+     close(*sockfd);
+     DBG("Could not connect");
+     return false;
+  }
+  return true;
+}
+
+bool connectToSocket(char *ipAddress, int port, int *sockfd) {
+  *sockfd = -1;
+  // create the socket
+  if((*sockfd=socket(AF_INET,SOCK_STREAM,0))<0) {
+     DBG("Error opening socket");
+     return false;
+  }
+         
+  // create the socket address
+  sockaddr_in serverAddress;
+  std::memset(&serverAddress, 0, sizeof(struct sockaddr_in));
+  serverAddress.sin_addr.s_addr = inet_addr(ipAddress);
+  serverAddress.sin_family = AF_INET;
+  serverAddress.sin_port = htons(port);
+
+  // do socket connect
+  //LOG("Connecting socket to %s:%d", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port));
+  if(connect(*sockfd, (const struct sockaddr *)&serverAddress, sizeof(serverAddress))<0) {
+     shutdown(*sockfd,SHUT_RDWR);
+     close(*sockfd);
+     DBG("Could not connect");
+     return false;
+  }
+  return true;
+}
+/*
+int handshakeCallback(HandShakeInfo* hinfo) {
+   DBG("Handshake callback called");
+}
+int timeoutCallback(TimeoutInfo *tinfo) {
+   DBG("Timeout callback called");
+}
+*/
+
+
+DigitalOut myled(LED1);
+#define INTERFACE EthernetInterface
+
+void printError(CYASSL *ssl, int resultCode) {
+   int err = CyaSSL_get_error(ssl, resultCode);
+   char errorString[80];
+   CyaSSL_ERR_error_string(err, errorString);
+   DBG("Error: CyaSSL_write %s", errorString);
+}
+
+void debugCallback(const int logLevel,const char *const logMessage) {
+   DBG(logMessage);
+}
+
+
+int main() {
+   DBG_INIT();
+   DBG_SET_SPEED(115200);
+   DBG_SET_NEWLINE("\r\n");
+   DBG("\r\n\r\n\r\n\r\n");
+   
+   int ret = 0;
+   
+   // init modem
+   INTERFACE modem;
+   // connnect modem to cellular network
+   DBG("connecting to network interface");
+   //if(modem.connect(APN,APN_USERNAME,APN_PASSWORD)!=0) {
+   //   DBG("Error connecting to mobile network");
+   //}
+   modem.init();
+   if(modem.connect(10000)) {
+      DBG("Error initialising ethernet interface");
+   }
+   DBG("Connected to network interface");
+   
+   DBG("IP: %s",modem.getIPAddress());
+    
+   // need to set the time before doing anything else
+   NTPClient ntp;
+   time_t currentTime = time(NULL);
+   int obtainedTimeSuccessfully = false;
+   // try 100 times and then just force a watchdog reboot
+   for(int i=0; i<100; i++) {
+      obtainedTimeSuccessfully = false;
+   
+      if(ntp.setTime("0.pool.ntp.org")==0) {
+         // there is a bug from somewhere which results in a negative timestamp
+         currentTime = time(NULL);
+         if(currentTime>0) {
+            obtainedTimeSuccessfully = true;
+            INFO("Time set successfully, time is now (UTC): %s", ctime(&currentTime));
+         }
+      }
+      if(obtainedTimeSuccessfully) {
+         break;
+      }
+   }
+   
+    
+   // set SSL method to SSL v3 (TLS v1.2)
+   //CyaSSLv23_client_method();
+     
+   CyaSSL_Init();// Initialize CyaSSL
+   if(CyaSSL_Debugging_ON()==0) {
+      DBG("CyaSSL debugging enabled");
+   } else {
+      DBG("CyaSSL debugging not compiled in");
+   }
+   
+   CyaSSL_SetLoggingCb(&debugCallback);
+
+   
+
+   // set client method
+   
+   // TLS
+   //CYASSL_CTX* ctx = CyaSSL_CTX_new(CyaSSLv23_client_method());
+   
+   // DTLS
+   CYASSL_METHOD* method = CyaDTLSv1_2_client_method();
+   if(method == NULL) {
+      // unable to get method
+   }
+   CYASSL_CTX* ctx;
+   ctx = CyaSSL_CTX_new(method);
+   if(ctx == NULL){
+      DBG("CyaSSL_CTX_new error.\n");
+      exit(EXIT_FAILURE);
+   }
+   
+   DBG("Setup SSL context");
+   
+   
+
+   
+   // use pre-shared keys
+   //CyaSSL_CTX_set_psk_client_callback(ctx,my_psk_client_cb);
+   /*
+   if(CyaSSL_CTX_load_verify_buffer(ctx, serverCert, strlen((const char*)serverCert),SSL_FILETYPE_PEM)==0) {
+   DBG("loaded server cert OK");
+   }*/
+   
+   // load certificates for CA and us
+   // load CA cert
+   ret = CyaSSL_CTX_load_verify_buffer(ctx,rootCertificate, rootCertificateLength,SSL_FILETYPE_ASN1);
+   // load device cert
+   ret = CyaSSL_CTX_use_certificate_buffer(ctx, deviceCertificate, deviceCertificateLength, SSL_FILETYPE_ASN1);
+   // load device private key
+   ret = CyaSSL_CTX_use_PrivateKey_buffer(ctx, devicePrivateKey, devicePrivateKeyLength, SSL_FILETYPE_ASN1);
+   
+   int sockfd = NULL;
+   if(!connectToSocketUDP("192.168.1.99", 11111, &sockfd)) {
+      DBG("Error connecting to socket");
+   }
+   
+  /*
+   // connect to SSL enabled webserver
+   int sockfd = NULL;
+   if(!connectToSocket("95.47.118.120", 11111, &sockfd)) {
+      DBG("Error connecting to socket");
+   }
+   DBG("Connected to non-SSL socket");
+   */
+   
+   // hook into SSL
+   // Create CYASSL object
+   CYASSL* ssl;
+   ssl = CyaSSL_new(ctx);
+   if(ssl == NULL) {
+      DBG("CyaSSL_new error.");
+      exit(EXIT_FAILURE);
+   }
+   DBG("CyaSSL_new OK");
+   
+   // setup callbacks for handshake failure
+   /*
+   Timeval timeout;
+   timeout.tv_sec  = 5;
+   timeout.tv_usec = 0;
+   ret = CyaSSL_connect_ex(ssl, handshakeCallback, timeoutCallback, timeout);
+   */
+   
+   // attach to socket
+   DBG("Attaching CyaSSL to socket");
+   CyaSSL_set_fd(ssl, sockfd);
+   DBG("Attached CyaSSL to socket");
+   
+   // DTLS stuff
+   ret = CyaSSL_dtls_set_peer(ssl, &serverAddress, sizeof(serverAddress));
+   if(ret != SSL_SUCCESS) {
+      // failed to set DTLS peer
+      DBG("Failed to set DTLS peer");
+   }
+   
+   ret = CyaSSL_dtls(ssl);
+   if(ret) {
+      // SSL session has been configured to use DTLS
+      DBG("DTLS configured");
+   } else {
+      DBG("DTLS not configured");
+   }
+   
+   
+   
+   DBG("Issuing CyaSSL_connect");
+   int result = CyaSSL_connect(ssl);
+   if(result!=SSL_SUCCESS) {
+      DBG("CyaSSL_connect failed");
+      printError(ssl,result);
+   }
+   DBG("CyaSSL_connect OK");
+   
+   result = CyaSSL_write(ssl,"onion",5);
+   DBG("Wrote %d things",result);
+   if(result<0) {
+      printError(ssl,result);
+   }
+   
+    char buffer[200];
+    int d =0;
+    if((d=CyaSSL_read(ssl, &buffer, 200))>0) {
+       DBG("Received %d bytes: %s",d,buffer);
+    }
+   
+   // clean up
+   CyaSSL_CTX_free(ctx);
+   CyaSSL_Cleanup();  
+   
+} 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rtos/#869ef732a8a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-src.lib	Thu Sep 05 10:38:56 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-src/#398f4c622e1b