Sen descrición

Frank Denis 4473c4f25c Add explicit cast %!s(int64=9) %!d(string=hai) anos
impl 45e89ee937 Avoid negating unsigned values %!s(int64=9) %!d(string=hai) anos
tests 4473c4f25c Add explicit cast %!s(int64=9) %!d(string=hai) anos
.clang-format 513baeaf74 Init %!s(int64=9) %!d(string=hai) anos
.gitignore 751d5da7f2 Update .gitignore %!s(int64=9) %!d(string=hai) anos
.travis.yml bb4450eeba Travis: drop OSX CI builds %!s(int64=9) %!d(string=hai) anos
LICENSE 9d902424e7 Doc update, logo, Travis badge %!s(int64=9) %!d(string=hai) anos
Makefile fe18675d78 Do not use -flto in the Unix Makefile %!s(int64=9) %!d(string=hai) anos
Makefile.arduino 04094cb369 Prepare for x25519 signatures %!s(int64=9) %!d(string=hai) anos
README.md e4dc17810c Add a link to the wiki %!s(int64=9) %!d(string=hai) anos
hydrogen.c 8b11009768 Add a signature API %!s(int64=9) %!d(string=hai) anos
hydrogen.h 570d624fe8 Define __attribute__ on !GNUC %!s(int64=9) %!d(string=hai) anos
logo.png 9d902424e7 Doc update, logo, Travis badge %!s(int64=9) %!d(string=hai) anos

README.md

Build Status

libhydrogen

The Hydrogen library is a small, easy-to-use, hard-to-misuse cryptographic library for constrained environments.

Features:

  • Consistent high-level API, inspired by libsodium. Instead of low-level primitives, it exposes simple functions to solve common problems that cryptography can solve.
  • Under the hood, it uses modern cryptographic primitives (BLAKE2X, SipHash, XChaCha20, X25519) and follows the current best practices.
  • Small and easy to audit. Implemented as one tiny file for every set of operation, and adding a single .c file to your project is all it takes to use libhydrogen in your project.
  • The whole code is released under a single, very liberal license (ISC).
  • Zero dynamic memory allocations and low stack requirements. This makes it usable in constrained environments such as microcontrollers.
  • Portable: written in standard C99. Supports Linux, *BSD, MacOS, Windows, and the Arduino IDE out of the box.
  • Can generate cryptographically-secure random numbers, even on Arduino boards.
  • Attempts to mitigate the implications of accidental misuse.

Non-goals:

  • Having multiple primitives serving the same purpose, even to provide compatibility with other libraries.
  • Networking (but a simple API to complete a NOISE-inspired key exchange may be added).
  • Replacing libsodium. Libhydrogen focuses on being small and is for environments where libsodium cannot be used.

Libhydrogen documentation

The documentation is maintained in the libhydrogen wiki.

Warning

This is a work in progress -- Do not use yet.