From 24aa46946349529bf36d3569796a28917d3e756f Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Wed, 9 Aug 2017 18:55:37 +0200 Subject: build, lib, ipcpd, irmd: Add support for libgcrypt This adds support for libgcrypt. If at least version 1.7.0 of libgcrypt is present, it may be used for secure random number generation and is used for hashing in the irmd/ipcp. The hash definitions are moved to the internal hash.h header, and defined independently of the hashes that are defined as part of the directory policy for the normal IPCP. The translation is moved from the IRMd to ipcpd/ipcp.h. The bootstrap call from the IRMd expects the IPCP to return the correct hash algorithm with a dif_info struct, which is in line with the behavior of the enroll call. This also improves how some platform checks in the build system are handled. --- include/ouroboros/hash.h | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'include/ouroboros/hash.h') diff --git a/include/ouroboros/hash.h b/include/ouroboros/hash.h index 456a93f3..6d3f98a3 100644 --- a/include/ouroboros/hash.h +++ b/include/ouroboros/hash.h @@ -25,11 +25,30 @@ #define OUROBOROS_LIB_HASH_H #include -#include -#include -#include -#include +#ifdef HAVE_LIBGCRYPT +#include +#endif +#include + +/* Hash algorithms */ +enum hash_algo { +#ifdef HAVE_LIBGCRYPT + HASH_CRC32 = GCRY_MD_CRC32, + HASH_MD5 = GCRY_MD_MD5, + HASH_SHA3_224 = GCRY_MD_SHA3_224, + HASH_SHA3_256 = GCRY_MD_SHA3_256, + HASH_SHA3_384 = GCRY_MD_SHA3_384, + HASH_SHA3_512 = GCRY_MD_SHA3_512 +#else + HASH_CRC32 = 0, + HASH_MD5, + HASH_SHA3_224, + HASH_SHA3_256, + HASH_SHA3_384, + HASH_SHA3_512 +#endif +}; #define HASH_FMT "%02x%02x%02x%02x" #define HASH_VAL(hash) \ -- cgit v1.2.3