From b4b1d30cb940262c0a340112aef705a34b3439d9 Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Mon, 5 Feb 2007 11:17:30 +0000 Subject: [PATCH] lib/gc.h, lib/gc-libgcrypt.c: Support SHA-256/384/512. --- ChangeLog | 4 ++++ lib/gc-libgcrypt.c | 42 ++++++++++++++++++++++++++++++++++++++++++ lib/gc.h | 10 ++++++++-- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 25c94ae52..6969438d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-02-05 Simon Josefsson + + * lib/gc.h, lib/gc-libgcrypt.c: Support SHA-256/384/512. + 2007-02-04 Paul Eggert * lib/getsubopt.c [!_LIBC]: Include config.h and getsubopt.h. diff --git a/lib/gc-libgcrypt.c b/lib/gc-libgcrypt.c index 4a583495c..6649660c4 100644 --- a/lib/gc-libgcrypt.c +++ b/lib/gc-libgcrypt.c @@ -269,6 +269,18 @@ gc_hash_open (Gc_hash hash, Gc_hash_mode mode, gc_hash_handle * outhandle) gcryalg = GCRY_MD_SHA1; break; + case GC_SHA256: + gcryalg = GCRY_MD_SHA256; + break; + + case GC_SHA384: + gcryalg = GCRY_MD_SHA384; + break; + + case GC_SHA512: + gcryalg = GCRY_MD_SHA512; + break; + case GC_RMD160: gcryalg = GCRY_MD_RMD160; break; @@ -356,6 +368,18 @@ gc_hash_digest_length (Gc_hash hash) len = GC_SHA1_DIGEST_SIZE; break; + case GC_SHA256: + len = GC_SHA256_DIGEST_SIZE; + break; + + case GC_SHA384: + len = GC_SHA384_DIGEST_SIZE; + break; + + case GC_SHA512: + len = GC_SHA512_DIGEST_SIZE; + break; + default: return 0; } @@ -453,6 +477,24 @@ gc_hash_buffer (Gc_hash hash, const void *in, size_t inlen, char *resbuf) break; #endif +#ifdef GNULIB_GC_SHA256 + case GC_SHA256: + gcryalg = GCRY_MD_SHA256; + break; +#endif + +#ifdef GNULIB_GC_SHA384 + case GC_SHA384: + gcryalg = GCRY_MD_SHA384; + break; +#endif + +#ifdef GNULIB_GC_SHA512 + case GC_SHA512: + gcryalg = GCRY_MD_SHA512; + break; +#endif + #ifdef GNULIB_GC_RMD160 case GC_RMD160: gcryalg = GCRY_MD_RMD160; diff --git a/lib/gc.h b/lib/gc.h index 84e4e635c..d06b07e13 100644 --- a/lib/gc.h +++ b/lib/gc.h @@ -1,5 +1,5 @@ /* gc.h --- Header file for implementation agnostic crypto wrapper API. - * Copyright (C) 2002, 2003, 2004, 2005 Simon Josefsson + * Copyright (C) 2002, 2003, 2004, 2005, 2007 Simon Josefsson * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published @@ -45,7 +45,10 @@ enum Gc_hash GC_MD5, GC_SHA1, GC_MD2, - GC_RMD160 + GC_RMD160, + GC_SHA256, + GC_SHA384, + GC_SHA512 }; typedef enum Gc_hash Gc_hash; @@ -62,6 +65,9 @@ typedef void *gc_hash_handle; #define GC_MD5_DIGEST_SIZE 16 #define GC_RMD160_DIGEST_SIZE 20 #define GC_SHA1_DIGEST_SIZE 20 +#define GC_SHA256_DIGEST_SIZE 32 +#define GC_SHA384_DIGEST_SIZE 48 +#define GC_SHA512_DIGEST_SIZE 64 /* Cipher types. */ enum Gc_cipher -- 2.11.0