guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

28/295: daemon: Map directly to gcrypt hash functions.


From: guix-commits
Subject: 28/295: daemon: Map directly to gcrypt hash functions.
Date: Mon, 27 Jul 2020 06:25:09 -0400 (EDT)

dannym pushed a commit to branch wip-desktop
in repository guix.

commit 3fb6b8f30444d41963ba5bdd441123a6d2df17bd
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Tue Jun 23 11:46:05 2020 +0200

    daemon: Map directly to gcrypt hash functions.
    
    * nix/libutil/hash.hh (HashType): Map directly to GCRY_MD_ values.
    (md5HashSize, sha1HashSize, sha256HashSize, sha512HashSize): Remove.
    * nix/libutil/hash.cc (Hash::Hash): Use 'gcry_md_get_algo_dlen'.
---
 nix/libutil/hash.cc |  8 +++-----
 nix/libutil/hash.hh | 17 +++++++++--------
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/nix/libutil/hash.cc b/nix/libutil/hash.cc
index ea69aa6..251f18f 100644
--- a/nix/libutil/hash.cc
+++ b/nix/libutil/hash.cc
@@ -38,11 +38,9 @@ Hash::Hash()
 Hash::Hash(HashType type)
 {
     this->type = type;
-    if (type == htMD5) hashSize = md5HashSize;
-    else if (type == htSHA1) hashSize = sha1HashSize;
-    else if (type == htSHA256) hashSize = sha256HashSize;
-    else if (type == htSHA512) hashSize = sha512HashSize;
-    else throw Error("unknown hash type");
+    hashSize = gcry_md_get_algo_dlen(type);
+
+    if (hashSize == 0) throw Error("unknown hash type");
     assert(hashSize <= maxHashSize);
     memset(hash, 0, maxHashSize);
 }
diff --git a/nix/libutil/hash.hh b/nix/libutil/hash.hh
index 6b5e47c..7357a34 100644
--- a/nix/libutil/hash.hh
+++ b/nix/libutil/hash.hh
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <gcrypt.h>
+
 #include "types.hh"
 #include "serialise.hh"
 
@@ -7,16 +9,15 @@
 namespace nix {
 
 
-typedef enum { htUnknown, htMD5, htSHA1, htSHA256, htSHA512 } HashType;
-
-
-const int md5HashSize = 16;
-const int sha1HashSize = 20;
-const int sha256HashSize = 32;
-const int sha512HashSize = 64;
-
 extern const string base32Chars;
 
+typedef enum {
+    htUnknown = 0,
+    htMD5 = GCRY_MD_MD5,
+    htSHA1 = GCRY_MD_SHA1,
+    htSHA256 = GCRY_MD_SHA256,
+    htSHA512 = GCRY_MD_SHA512
+} HashType;
 
 struct Hash
 {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]