wolf-crypto 0.1.0-alpha.6

Safe and thin API for wolfSSL's wolfcrypt
Documentation

# Table of Contents

1.  [`wolf-crypto`]#org08cbf70
2.  [Current Priorities]#org8407ef1
3.  [License]#org8ca1b81
4.  [Notes]#orgc0d723c
5.  [Roadmap <code>[1/5]</code>]#orga982e3e

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


<a id="org08cbf70"></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="org8407ef1"></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="org8ca1b81"></a>

# License

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


<a id="orgc0d723c"></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="orga982e3e"></a>

# Roadmap <code>[1/5]</code>

-   [X] Hashing <code>[6/6]</code>
    -   [X] SHA2 <code>[6/6]</code>
        -   [X] SHA-224
        -   [X] SHA-256
        -   [X] SHA-384
        -   [X] SHA-512
        -   [X] SHA-512/224
        -   [X] SHA-512/256
    -   [X] SHA3 <code>[5/5]</code>
        -   [X] SHA3-224
        -   [X] SHA3-256
        -   [X] SHA3-384
        -   [X] SHA3-512
        -   [X] SHAKE <code>[2/2]</code>
            -   [X] SHAKE128
            -   [X] SHAKE256
    -   [X] SHA <code>[1/1]</code>
    -   [X] RIPEMD-160 <code>[1/1]</code>
    -   [X] MD <code>[2/2]</code>
        -   [X] MD5
        -   [X] MD4
    -   [X] BLAKE2 <code>[2/2]</code>
        -   [X] BLAKE2b
        -   [X] BLAKE2s

-   [ ] AEAD <code>[1/5]</code>
    -   [X] AES-GCM <code>[3/3]</code>
        -   [X] 256
        -   [X] 192
        -   [X] 128
    -   [ ] ChaCha20-Poly1305 <code>[0/2]</code>
        -   [ ] 256
        -   [ ] 128
    -   [ ] AES-CCM <code>[0/3]</code>
        -   [X] 256
        -   [X] 192
        -   [X] 128
    -   [ ] AES-EAX <code>[0/3]</code>
        -   [ ] 256
        -   [ ] 192
        -   [ ] 128
    -   [ ] AES-SIV <code>[0/3]</code>
        -   [ ] 256
        -   [ ] 192
        -   [ ] 128

-   [ ] Symmetric Encryption <code>[0/3]</code>
    -   [ ] AES <code>[1/4]</code>
        -   [X] CTR <code>[3/3]</code>
            -   [X] 256
            -   [X] 192
            -   [X] 128
        -   [ ] CBC <code>[0/3]</code>
            -   [ ] 256
            -   [ ] 192
            -   [ ] 128
        -   [ ] XTS <code>[0/2]</code>
            -   [ ] 256
            -   [ ] 128
        -   [ ] CFB <code>[0/3]</code>
            -   [ ] 256
            -   [ ] 192
            -   [ ] 128
    -   [ ] ChaCha20 <code>[0/2]</code>
        -   [ ] 256
        -   [ ] 128
    -   [ ] 3DES <code>[0/1]</code>
        -   [ ] 168

-   [ ] MAC <code>[0/2]</code>
    -   [ ] HMAC <code>[0/9]</code>
        -   [ ] SHA-256
        -   [ ] SHA-384
        -   [ ] SHA-512
        -   [ ] SHA3-224
        -   [ ] SHA3-256
        -   [ ] SHA3-384
        -   [ ] SHA3-512
        -   [ ] SHA
        -   [ ] MD5
    -   [ ] Poly1305 <code>[0/1]</code>
        -   [ ] Poly1305

-   [ ] Writing the Remaining Sections (asymmetric, password, padding, etc)