This package includes the SharkSSL lite library and header files.

Dependents:   WebSocket-Client-Example SharkMQ-LED-Demo

SharkSSL-Lite

Description: SharkSSL is an SSL v3.0 TLS v1.0/1.1/1.2 implementation of the TLS and SSL protocol standard. With its array of compile-time options and Raycrypto proprietary cryptographic algorithms, SharkSSL can be fine-tuned to a footprint that occupies less than 20 kB, while maintaining full x.509 authentication. The SharkSSL-Lite download includes a subset of SharkSSL and header files made for use in non-commercial and for evaluation purposes.

Features

Examples

Limitations

SharkSSL-Lite includes a limited set of ciphers. To use SharkSSL-Lite, the peer side must support Elliptic Curve Cryptography (ECC) and you must use ECC certificates. The peer side must also support the new ChaCha20/Poly1305 cipher combination.

ChaCha20 and Poly1305 for TLS is published RFC 7905. The development of this new cipher was a response to many attacks discovered against other widely used TLS cipher suites. ChaCha20 is the cipher and Poly1305 is an authenticated encryption mode.

SharkSSL-Lite occupies less than 20kB, while maintaining full x.509 authentication. The ChaCha20/Poly1305 cipher software implementation is equally as fast as many hardware accelerated AES engines.

Creating ECC Certificates for SharkSSL-Lite

The following video shows how to create an Elliptic Curve Cryptography (ECC) certificate for a server, how to install the certificate in the server, and how to make the mbed clients connecting to the server trust this certificate. The server in this video is installed on a private/personal computer on a private network for test purposes. The video was produced for the embedded.com article How to run your own secure IoT cloud server.

Committer:
wini
Date:
Mon May 23 13:56:30 2016 +0000
Revision:
1:d5e0e1dcf0d6
Parent:
0:e0adec41ad6b
Type conflict fix (U8-U32) for latest mbed release.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wini 0:e0adec41ad6b 1
wini 0:e0adec41ad6b 2 /*
wini 0:e0adec41ad6b 3
wini 0:e0adec41ad6b 4 DO NOT EDIT THIS FILE!
wini 0:e0adec41ad6b 5
wini 0:e0adec41ad6b 6 The pre-compiled SharkSSL library is compiled with these options and
wini 0:e0adec41ad6b 7 modifying these options may cause system failure.
wini 0:e0adec41ad6b 8
wini 0:e0adec41ad6b 9 */
wini 0:e0adec41ad6b 10
wini 0:e0adec41ad6b 11
wini 0:e0adec41ad6b 12 #define SHARKSSL_UNALIGNED_ACCESS 1
wini 0:e0adec41ad6b 13
wini 0:e0adec41ad6b 14 #define SHARKSSL_ACCEPT_CLIENT_HELLO_2_0 0
wini 0:e0adec41ad6b 15 #define SHARKSSL_AES_CIPHER_LOOP_UNROLL 0
wini 0:e0adec41ad6b 16 #define SHARKSSL_BIGINT_EXP_SLIDING_WINDOW_K 1
wini 0:e0adec41ad6b 17 #define SHARKSSL_BIGINT_WORDSIZE 32
wini 0:e0adec41ad6b 18 #define SHARKSSL_DES_CIPHER_LOOP_UNROLL 0
wini 0:e0adec41ad6b 19 #define SHARKSSL_ECC_USE_SECP192R1 0
wini 0:e0adec41ad6b 20 #define SHARKSSL_ECC_USE_SECP224R1 0
wini 0:e0adec41ad6b 21 #define SHARKSSL_ECC_USE_SECP384R1 0
wini 0:e0adec41ad6b 22 #define SHARKSSL_ECC_USE_SECP521R1 0
wini 0:e0adec41ad6b 23 #define SHARKSSL_ENABLE_AES_CCM 0
wini 0:e0adec41ad6b 24 #define SHARKSSL_ENABLE_AES_CTR_MODE 0
wini 0:e0adec41ad6b 25 #define SHARKSSL_ENABLE_AES_GCM 0
wini 0:e0adec41ad6b 26 #define SHARKSSL_ENABLE_CERTSTORE_API 0
wini 0:e0adec41ad6b 27 #define SHARKSSL_ENABLE_CERT_CHAIN 0
wini 0:e0adec41ad6b 28 #define SHARKSSL_ENABLE_CLONE_CERTINFO 0
wini 0:e0adec41ad6b 29 #define SHARKSSL_ENABLE_DHE_RSA 0
wini 0:e0adec41ad6b 30 #define SHARKSSL_ENABLE_ECDHE_RSA 0
wini 0:e0adec41ad6b 31 #define SHARKSSL_ENABLE_ECDH_ECDSA 0
wini 0:e0adec41ad6b 32 #define SHARKSSL_ENABLE_ECDH_RSA 0
wini 0:e0adec41ad6b 33 #define SHARKSSL_ENABLE_MD5_CIPHERSUITES 0
wini 0:e0adec41ad6b 34 #define SHARKSSL_ENABLE_PEM_API 0
wini 0:e0adec41ad6b 35 #define SHARKSSL_ENABLE_PSK 0
wini 0:e0adec41ad6b 36 #define SHARKSSL_ENABLE_RSA 0
wini 0:e0adec41ad6b 37 #define SHARKSSL_ENABLE_RSA_API 0
wini 0:e0adec41ad6b 38 #define SHARKSSL_ENABLE_RSA_BLINDING 1
wini 0:e0adec41ad6b 39 #define SHARKSSL_ENABLE_SELECT_CIPHERSUITE 0
wini 0:e0adec41ad6b 40 #define SHARKSSL_ENABLE_SESSION_CACHE 0
wini 0:e0adec41ad6b 41 #define SHARKSSL_ENABLE_SSL_3_0 0
wini 0:e0adec41ad6b 42 #define SHARKSSL_ENABLE_TLS_1_1 0
wini 0:e0adec41ad6b 43 #define SHARKSSL_MD5_SMALL_FOOTPRINT 1
wini 0:e0adec41ad6b 44 #define SHARKSSL_SHA256_SMALL_FOOTPRINT 1
wini 0:e0adec41ad6b 45 #define SHARKSSL_SSL_SERVER_CODE 0
wini 0:e0adec41ad6b 46 #define SHARKSSL_USE_3DES 0
wini 0:e0adec41ad6b 47 #define SHARKSSL_USE_AES_128 0
wini 0:e0adec41ad6b 48 #define SHARKSSL_USE_ARC4 0
wini 0:e0adec41ad6b 49 #define SHARKSSL_USE_DES 0
wini 0:e0adec41ad6b 50 #define SHARKSSL_USE_ECC 1
wini 0:e0adec41ad6b 51 #define SHARKSSL_USE_MD5 0
wini 0:e0adec41ad6b 52 #define SHARKSSL_USE_NULL_CIPHER 0
wini 0:e0adec41ad6b 53 #define SHARKSSL_USE_RNG_TINYMT 1
wini 0:e0adec41ad6b 54 #define SHARKSSL_USE_SHA1 0
wini 0:e0adec41ad6b 55 #define SHARKSSL_USE_SHA_256 0
wini 0:e0adec41ad6b 56 #define SHARKSSL_USE_SHA_512 0
wini 0:e0adec41ad6b 57 #define SHARKSSL_USE_SHA_384 0
wini 0:e0adec41ad6b 58 #define SHARKSSL_ENABLE_CLIENT_AUTH 0
wini 0:e0adec41ad6b 59 #define SHARKSSL_ENABLE_SECURE_RENEGOTIATION 0
wini 0:e0adec41ad6b 60 #define SHARKSSL_ENABLE_CERT_KEYUSAGE 0
wini 0:e0adec41ad6b 61 #define SHARKSSL_DISABLE_INBUF_EXPANSION 0
wini 0:e0adec41ad6b 62 #define SHARKSSL_ONLY_POLYCHACHA 1
wini 0:e0adec41ad6b 63 #define SHARKSSL_ECC_VERIFY_POINT 0
wini 0:e0adec41ad6b 64 #define SHARKSSL_ECC_TIMING_RESISTANT 0
wini 0:e0adec41ad6b 65 #define SHARKSSL_ENABLE_INFO_API 0
wini 0:e0adec41ad6b 66 #define SHARKSSL_USE_AES_256 0
wini 0:e0adec41ad6b 67 #define SHARKSSL_ENABLE_ECDSA 1
wini 0:e0adec41ad6b 68 #define SHARKSSL_ENABLE_ECDHE_ECDSA 1
wini 0:e0adec41ad6b 69 #define SHARKSSL_ENABLE_CA_LIST 1
wini 0:e0adec41ad6b 70
wini 0:e0adec41ad6b 71 #define BASIC_TRUST_CHECK
wini 0:e0adec41ad6b 72
wini 0:e0adec41ad6b 73 #ifndef NDEBUG
wini 0:e0adec41ad6b 74 #define NDEBUG
wini 0:e0adec41ad6b 75 #endif