X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/d0fd08fab7a646c47fae21491c8d8f1c2b790a2c..a8eae82dbcc70ecb4380cf6393c6b594b9abe995:/sigcheck.c?ds=inline diff --git a/sigcheck.c b/sigcheck.c index e5e8ccd..a0f4feb 100644 --- a/sigcheck.c +++ b/sigcheck.c @@ -27,6 +27,7 @@ #ifdef HAVE_NETTLE #include +#include #include #else #include "md5.h" @@ -42,6 +43,9 @@ int check_packet_sighash(struct openpgp_publickey *key, size_t siglen, unhashedlen; struct sha1_ctx sha1_context; struct md5_ctx md5_context; +#ifdef NETTLE_WITH_RIPEMD160 + struct ripemd160_ctx ripemd160_context; +#endif #ifdef NETTLE_WITH_SHA224 struct sha224_ctx sha224_context; #endif @@ -57,7 +61,7 @@ int check_packet_sighash(struct openpgp_publickey *key, uint8_t keyheader[3]; uint8_t packetheader[5]; uint8_t v4trailer[6]; - uint8_t hash[20]; + uint8_t hash[64]; uint8_t *hashdata[8]; size_t hashlen[8]; int chunks, i; @@ -165,6 +169,19 @@ int check_packet_sighash(struct openpgp_publickey *key, } sha1_digest(&sha1_context, 20, hash); break; + case OPENPGP_HASH_RIPEMD160: +#ifdef NETTLE_WITH_RIPEMD160 + ripemd160_init(&ripemd160_context); + for (i = 0; i < chunks; i++) { + ripemd160_update(&ripemd160_context, hashlen[i], + hashdata[i]); + } + ripemd160_digest(&ripemd160_context, RIPEMD160_DIGEST_SIZE, + hash); +#else + logthing(LOGTHING_INFO, "RIPEMD160 support not available."); + return -1; +#endif case OPENPGP_HASH_SHA224: #ifdef NETTLE_WITH_SHA224 sha224_init(&sha224_context);