wolf-crypto 0.1.0-alpha.4

Safe and thin API for wolfSSL's wolfcrypt
Documentation

# Table of Contents

1.  [`wolf-crypto`]#org7e85d3e
2.  [Current Priorities]#orgeb1dcb9
3.  [License]#org767daa7
4.  [Notes]#org225dcfd
5.  [Roadmap <code>[0/5]</code>]#orgbaa6c62
    1.  [Hashing <code>[5/6]</code>]#org0f47777
        1.  [SHA2 <code>[6/6]</code>]#org46716c5
        2.  [SHA3 <code>[5/5]</code>]#orgbb6bfdf
        3.  [SHA <code>[1/1]</code>]#org6883056
        4.  [RIPEMD-160 <code>[1/1]</code>]#orgd571cc3
        5.  [MD <code>[2/2]</code>]#orgea01bf9
        6.  [BLAKE2 <code>[1/2]</code>]#org737eae0
    2.  [AEAD <code>[1/5]</code>]#orgb10f2fb
        1.  [AES-GCM <code>[3/3]</code>]#orga22a233
        2.  [ChaCha20-Poly1305 <code>[0/2]</code>]#orga49d53b
        3.  [AES-CCM <code>[0/3]</code>]#org152bee3
        4.  [AES-EAX <code>[0/3]</code>]#org194a8e5
        5.  [AES-SIV <code>[0/3]</code>]#org9d1d2bd
    3.  [Symmetric Encryption <code>[0/3]</code>]#org2748b6f
        1.  [AES <code>[1/4]</code>]#org14bc9af
        2.  [ChaCha20 <code>[0/2]</code>]#orgad8306d
        3.  [3DES <code>[0/1]</code>]#orgc1be5da
    4.  [MAC <code>[0/2]</code>]#org35f816b
        1.  [HMAC <code>[0/9]</code>]#org26434a3
        2.  [Poly1305 <code>[0/1]</code>]#org0a99d7c
    5.  [Writing the Remaining Sections (asymmetric, password, padding, etc)]#org2aec607

**WARNING - THIS LIBRARY IS IN ITS EARLY STAGES, IT IS NOT READY FOR PRODUCTION USE, USE AT YOUR OWN RISK.**


<a id="org7e85d3e"></a>

# `wolf-crypto`

This library seeks to provide a safe, zero-cost, API for `wolfcrypt` by wolfSSL. It is in its very early stages, some
feature flags are misleading, for instance `allow-non-fips` implies that when disabled only FIPS 140-3 certified
cryptography is used. This is not currently the case due to the associated `wolf-crypto-sys` not currently leveraging
the `FIPS-MODE` feature. This feature will eventually be enabled, as it was my original reason for beginning to work on
this, though the library as previously mentioned is incredibly immature.

Currently, the `hash` module is the most tested segment of this codebase, outside of this module and the `aes` module
I personally would not be comfortable using anything in a general purpose application (not any of my professional
work in security).


<a id="orgeb1dcb9"></a>

# Current Priorities

-   Focus on implementing and stabilizing the core FIPS 140-3 compatible algorithms.
-   Improve test coverage in hashing, symmetric encryption, and AEAD modules.
-   Incrementally implement and test asymmetric cryptographic functions (RSA, ECDSA, ECDH).
-   Enable `FIPS-MODE` support in `wolf-crypto-sys` to align with the FIPS compliance goals.


<a id="org767daa7"></a>

# License

This library is under GPLv2 licensing **unless** you purchased a commercial license from wolfSSL.


<a id="org225dcfd"></a>

# Notes

-   Affiliation: I am not affiliated with wolfSSL, I just enjoy security and have appreciation for their work.
-   Why is this named `wolf-crypto` and not `wolfcrypt`: I did not want to take the official name by wolfSSL.


<a id="orgbaa6c62"></a>

# TODO Roadmap <code>[0/5]</code>


<a id="org0f47777"></a>

## TODO Hashing <code>[5/6]</code>


<a id="org46716c5"></a>

### DONE SHA2 <code>[6/6]</code>

1.  DONE SHA-224

2.  DONE SHA-256

3.  DONE SHA-384

4.  DONE SHA-512

5.  DONE SHA-512/224

6.  DONE SHA-512/256


<a id="orgbb6bfdf"></a>

### DONE SHA3 <code>[5/5]</code>

1.  DONE SHA3-224

2.  DONE SHA3-256

3.  DONE SHA3-384

4.  DONE SHA3-512

5.  DONE SHAKE <code>[2/2]</code>

    1.  DONE SHAKE128
    
    2.  DONE SHAKE256


<a id="org6883056"></a>

### DONE SHA <code>[1/1]</code>


<a id="orgd571cc3"></a>

### DONE RIPEMD-160 <code>[1/1]</code>


<a id="orgea01bf9"></a>

### DONE MD <code>[2/2]</code>

1.  DONE MD5

2.  DONE MD4


<a id="org737eae0"></a>

### TODO BLAKE2 <code>[1/2]</code>

1.  DONE BLAKE2b

2.  TODO BLAKE2s


<a id="orgb10f2fb"></a>

## TODO AEAD <code>[1/5]</code>


<a id="orga22a233"></a>

### DONE AES-GCM <code>[3/3]</code>

1.  DONE 256

2.  DONE 192

3.  DONE 128


<a id="orga49d53b"></a>

### TODO ChaCha20-Poly1305 <code>[0/2]</code>

1.  TODO 256

2.  TODO 128


<a id="org152bee3"></a>

### TODO AES-CCM <code>[0/3]</code>

1.  DONE 256

2.  DONE 192

3.  DONE 128


<a id="org194a8e5"></a>

### TODO AES-EAX <code>[0/3]</code>

1.  TODO 256

2.  TODO 192

3.  TODO 128


<a id="org9d1d2bd"></a>

### TODO AES-SIV <code>[0/3]</code>

1.  TODO 256

2.  TODO 192

3.  TODO 128


<a id="org2748b6f"></a>

## TODO Symmetric Encryption <code>[0/3]</code>


<a id="org14bc9af"></a>

### TODO AES <code>[1/4]</code>

1.  DONE CTR <code>[3/3]</code>

    1.  DONE 256
    
    2.  DONE 192
    
    3.  DONE 128

2.  TODO CBC <code>[0/3]</code>

    1.  TODO 256
    
    2.  TODO 192
    
    3.  TODO 128

3.  TODO XTS <code>[0/2]</code>

    1.  TODO 256
    
    2.  TODO 128

4.  TODO CFB <code>[0/3]</code>

    1.  TODO 256
    
    2.  TODO 192
    
    3.  TODO 128


<a id="orgad8306d"></a>

### TODO ChaCha20 <code>[0/2]</code>

1.  TODO 256

2.  TODO 128


<a id="orgc1be5da"></a>

### TODO 3DES <code>[0/1]</code>

1.  TODO 168


<a id="org35f816b"></a>

## TODO MAC <code>[0/2]</code>


<a id="org26434a3"></a>

### TODO HMAC <code>[0/9]</code>

1.  TODO SHA-256

2.  TODO SHA-384

3.  TODO SHA-512

4.  TODO SHA3-224

5.  TODO SHA3-256

6.  TODO SHA3-384

7.  TODO SHA3-512

8.  TODO SHA

9.  TODO MD5


<a id="org0a99d7c"></a>

### TODO Poly1305 <code>[0/1]</code>


<a id="org2aec607"></a>

## TODO Writing the Remaining Sections (asymmetric, password, padding, etc)