<commit_before># QPolarSSL

## Table of contents
- [About](#about)
- [Features](#features)
    - [Hash](#hash)
    - [Cipher](#cipher)
    - [Random](#random)
    - [Pki / RSA](#pki)
- [Setup](#setup)
- [Tests](#tests)
- [License](#license)
    

## About
`QPolarSSL` is a thin wrapper (`Qt5` / `c++11`) around [polarssl](https://github.com/polarssl/polarssl) library who implements a wide range of cryptographic algorithms including hashing (message digest), deterministic random bits generator (drbg), ciphers (symmetric) and public-key (asymmetric) infrastructure.

thanks to efficiency of `polarssl`, the `QPolarSSL` is less than `200KB` when compiled as a dynamic library. `polarssl` is highly configurable, so adding/removing features and algorithms into/from `QPolarSSL` is quite easy, simply tweak  [polarssl_config.h](./library/polarssl_config.h) and [polarssl.pri](./library/polarssl).

tested platforms:

 * Ubuntu 14.04 (64bit), Ubuntu 14.10 (32bit)
 * OSX (10.9 / 10.10)

[TOC](#table-of-contents)

## Features
at the moment current features from `polarssl` are included in *default build* of `QPolarSSL`:

### Hash & HMAC
creating message-digest and HMAC:
```cpp
const QByteArray source  = fetchSourceDataFromSomewhere();
//  check algorithm availability
bool check    = qpolarssl::Hash::supports("SHA512");
//  select a hash method by name
auto hashSha1 = qpolarssl::Hash::hash(source, "SHA1");
//  select a hash method by type
auto hashMd5  = qpolarssl::Hash::hash(source, qpolarssl::THash::MD5);
    
// or
qpolarssl::Hash hash("SHA256");<commit_msg>fix a missed link in README.md<commit_after># QPolarSSL

## Table of contents
- [About](#about)
- [Features](#features)
    - [Hash](#hash)
    - [Cipher](#cipher)
    - [Random](#random)
    - [Pki / RSA](#pki)
- [Setup](#setup)
- [Tests](#tests)
- [License](#license)
    

## About
`QPolarSSL` is a thin wrapper (`Qt5` / `c++11`) around [polarssl](https://github.com/polarssl/polarssl) library who implements a wide range of cryptographic algorithms including hashing (message digest), deterministic random bits generator (drbg), ciphers (symmetric) and public-key (asymmetric) infrastructure.

thanks to efficiency of `polarssl`, the `QPolarSSL` is less than `200KB` when compiled as a dynamic library. `polarssl` is highly configurable, so adding/removing features and algorithms into/from `QPolarSSL` is quite easy, simply tweak  [polarssl_config.h](./library/polarssl_config.h) and [polarssl.pri](./library/polarssl.pri).

tested platforms:

 * Ubuntu 14.04 (64bit), Ubuntu 14.10 (32bit)
 * OSX (10.9 / 10.10)

[TOC](#table-of-contents)

## Features
at the moment current features from `polarssl` are included in *default build* of `QPolarSSL`:

### Hash & HMAC
creating message-digest and HMAC:
```cpp
const QByteArray source  = fetchSourceDataFromSomewhere();
//  check algorithm availability
bool check    = qpolarssl::Hash::supports("SHA512");
//  select a hash method by name
auto hashSha1 = qpolarssl::Hash::hash(source, "SHA1");
//  select a hash method by type
auto hashMd5  = qpolarssl::Hash::hash(source, qpolarssl::THash::MD5);
    
// or
qpolarssl::Hash hash("SHA256");
{'fraction_non_alphanumeric': 0.14199683042789224, 'fraction_numerical': 0.022187004754358162, 'mean_word_length': 4.759124087591241, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1806535', 'n_tokens_mistral': 1120, 'n_tokens_neox': 980, 'n_words': 308}