diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-06-23 16:33:38 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-06-27 23:42:20 +0200 |
commit | 8e6c1415d87272c0221ce328715fc0dd1dd3e032 (patch) | |
tree | b873e8b22ddd2c486f428fae15bc18f95755f78e | |
parent | 8dc6c387852bb9505be44567a5f56913633cc23a (diff) | |
download | guix-8e6c1415d87272c0221ce328715fc0dd1dd3e032.tar guix-8e6c1415d87272c0221ce328715fc0dd1dd3e032.tar.gz |
daemon: Recognize SHA3 and BLAKE2s.
* nix/libutil/hash.hh (HashType): Add htSHA3_256, htSHA3_512, and
htBLAKE2s_256.
* nix/libutil/hash.cc (parseHashType, printHashType): Recognize them.
* tests/store.scm ("add-to-store"): Test these algorithms.
-rw-r--r-- | nix/libutil/hash.cc | 6 | ||||
-rw-r--r-- | nix/libutil/hash.hh | 5 | ||||
-rw-r--r-- | tests/store.scm | 4 |
3 files changed, 12 insertions, 3 deletions
diff --git a/nix/libutil/hash.cc b/nix/libutil/hash.cc index 20d2e4b724..7853acdd49 100644 --- a/nix/libutil/hash.cc +++ b/nix/libutil/hash.cc @@ -321,6 +321,9 @@ HashType parseHashType(const string & s) else if (s == "sha1") return htSHA1; else if (s == "sha256") return htSHA256; else if (s == "sha512") return htSHA512; + else if (s == "sha3-256") return htSHA3_256; + else if (s == "sha3-512") return htSHA3_512; + else if (s == "blake2s-256") return htBLAKE2s_256; else return htUnknown; } @@ -331,6 +334,9 @@ string printHashType(HashType ht) else if (ht == htSHA1) return "sha1"; else if (ht == htSHA256) return "sha256"; else if (ht == htSHA512) return "sha512"; + else if (ht == htSHA3_256) return "sha3-256"; + else if (ht == htSHA3_512) return "sha3-512"; + else if (ht == htBLAKE2s_256) return "blake2s-256"; else throw Error("cannot print unknown hash type"); } diff --git a/nix/libutil/hash.hh b/nix/libutil/hash.hh index 7357a34e1d..ac58651a02 100644 --- a/nix/libutil/hash.hh +++ b/nix/libutil/hash.hh @@ -16,7 +16,10 @@ typedef enum { htMD5 = GCRY_MD_MD5, htSHA1 = GCRY_MD_SHA1, htSHA256 = GCRY_MD_SHA256, - htSHA512 = GCRY_MD_SHA512 + htSHA512 = GCRY_MD_SHA512, + htSHA3_256 = GCRY_MD_SHA3_256, + htSHA3_512 = GCRY_MD_SHA3_512, + htBLAKE2s_256 = GCRY_MD_BLAKE2S_256 } HashType; struct Hash diff --git a/tests/store.scm b/tests/store.scm index 06f7939657..ee3e01f33b 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -116,7 +116,7 @@ (list (stat:uid s) (stat:perms s)))) (test-equal "add-to-store" - '("sha1" "sha256" "sha512") + '("sha1" "sha256" "sha512" "sha3-256" "sha3-512" "blake2s-256") (let* ((file (search-path %load-path "guix.scm")) (content (call-with-input-file file get-bytevector-all))) (map (lambda (hash-algo) @@ -125,7 +125,7 @@ (bytevector=? (call-with-input-file file get-bytevector-all) content) hash-algo))) - '("sha1" "sha256" "sha512")))) + '("sha1" "sha256" "sha512" "sha3-256" "sha3-512" "blake2s-256")))) (test-equal "add-data-to-store" #vu8(1 2 3 4 5) |