EMbedded Secure HAshing library. https://docs.shimmering-clarity.net/emsha/
Go to file
Kyle Isom 59e6abff06 Refactor to standard layout. 2023-10-19 20:41:55 -07:00
.circleci code cleanups and CI updates. 2023-10-19 10:43:04 -07:00
.idea Refactor to standard layout. 2023-10-19 20:41:55 -07:00
.trunk Major refactoring effort underway. 2023-10-17 23:43:18 -07:00
cmake Fix broken scripts, add script to run and test via CMake. 2023-10-18 04:34:48 -07:00
debian Miscellaneous packaging fixes. 2016-01-29 16:38:18 -08:00
docs Cut a release. 2023-10-18 03:39:27 -07:00
include/emsha Refactor to standard layout. 2023-10-19 20:41:55 -07:00
scripts CircleCI work and support Raspbian. 2023-10-18 04:44:37 -07:00
src Refactor to standard layout. 2023-10-19 20:41:55 -07:00
test Refactor to standard layout. 2023-10-19 20:41:55 -07:00
.clang-format Major refactoring effort underway. 2023-10-17 23:43:18 -07:00
.clang-tidy Cut a release. 2023-10-18 03:39:27 -07:00
.gitignore Setting up CircleCI 2023-10-18 04:21:32 -07:00
CHANGELOG Major refactoring effort underway. 2023-10-17 23:43:18 -07:00
CMakeLists.txt Refactor to standard layout. 2023-10-19 20:41:55 -07:00
LICENSE Initial import. 2015-12-17 01:54:10 -08:00
README.md README: point badges appropriately. 2023-10-19 11:14:47 -07:00
TODO.rst Add Debian package, finish TODOs. 2016-01-27 21:41:02 -08:00
emsha.pc.in Major refactoring effort underway. 2023-10-17 23:43:18 -07:00

README.md

libemsha

CircleCI

image

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.

Getting and Building the Source

The source code is available via Github; each version should be git tagged. :

git clone https://github.com/kisom/libemsha
git clone git@github.com:kisom/libemsha

The current release is 1.0.1.

The project is built using Autotools and make.

When building from a git checkout, the [autobuild]{.title-ref} script will bootstrap the project from the autotools sources (e.g. via autoreconf -i), run configure (by default to use clang), and attempt to build the library and run the unit tests.

Once the autotools infrastructure has been bootstrapped, the following should work: :

./configure && make && make check && make install

There are three flags to configure that might be useful:

  • --disable-hexstring disables the provided hexstring function; while this might be useful in many cases, it also adds extra size to the code.
  • --disable-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.
  • --disable-selftest disables the internal self-tests, which can reclaim some additional program space.

Documentation

Documentation is currently done with Sphinx. See doc/.

See also

Footnotes


  1. 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 base. ↩︎