aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/hmac_sha256/README.md
blob: a8bf2c71bbfc875c1d8a7a011ad82a69412c9ec5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# hmac_sha256
*Minimal HMAC-SHA256 implementation in C / C++*

This repository provides minimal HMAC-Sha256 code you can copy into your own projects.
The `hmac_sha256` function looks like this:
```cpp
size_t // Returns the number of bytes written to `out`
hmac_sha256(
    // [in]: The key and its length.
    //      Should be at least 32 bytes long for optimal security.
    const void* key, const size_t keylen,

    // [in]: The data to hash alongside the key.
    const void* data, const size_t datalen,

    // [out]: The output hash.
    //      Should be 32 bytes long. If it's less than 32 bytes,
    //      the resulting hash will be truncated to the specified length.
    void* out, const size_t outlen
);
```

## Contributing
All contributions are welcome, feature requests, or issues.
I aim to tailor this code not only for myself, but for other's use cases too.

## Usage Example (C++)
https://github.com/h5p9sl/hmac_sha256/blob/79a57d2a85aaab32449e5179a4f08f37e38cdee5/examples/simple_example.cpp#L13-L26

## Sha256 Implementation
Big thank you to [WjCryptLib](https://github.com/WaterJuice/WjCryptLib) for providing the Sha256 implementation of which this project is based off.
If you need more public domain cryptographic functions in C (sha, aes, md5), check them out.