emsha
1.1.1
A compact HMAC-SHA-256 C++11 library.
|
This library is an MIT-licensed HMAC-SHA-256 C++11 library designed for embedded systems. It is built following the JPL Power of Ten rules. It was written in response to a need for a standalone HMAC-SHA-256 package that could run on several platforms, including several memory- constrained embedded platforms.
The source code is available via Git; each version should be git tagged. There is also a mirror on Github.
The current release is 1.1.1.
The project is built using CMake. Packages are built using the RelWithDebInfo
configuration; artifacts are built using the sc3dev build script.
There are two cache variables that might be useful:
SET EMSHA_NO_HEXSTRING
disables the provided hexstring
function; while this might be useful in many cases, it also adds extra size to the code. For memory-constrained microcontrollers, this might be desirable.SET_EMSHA_NO_HEXLUT
disables the larger lookup table used by hexstring
, which can save around a kilobyte of program space. If the hexstring
function is disabled, this option has no effect.SET_EMSHA_NO_SELFTEST
disables the internal self-tests, which can reclaim some additional program space.The Hash pure virtual class defines a basic interface for programs:
There are two implementations provided for Hash: SHA256 and HMAC.
Documentation is currently done with Doxygen; documentation is available online.
This library came about after extracting the relevant C code from RFC 6234, and needing a C++ version. It draws heavy inspiration from that code. I also pulled a lot of test vectors from Go's crypto/sha256.