about summary refs log tree commit diff
path: root/third_party/nix/src/libutil/hash.hh
diff options
context:
space:
mode:
authorKane York <kanepyork@gmail.com>2020-07-27T23·50-0700
committerkanepyork <rikingcoding@gmail.com>2020-07-28T02·04+0000
commit31f9ee58d0c91d02d96d29ea6e09bf0e4f9c5b92 (patch)
tree82b2b35d194839860240985a99f2a0e32d18c4e6 /third_party/nix/src/libutil/hash.hh
parent976a36c2e482f416acd79a624e6d96cce2564b5b (diff)
fix(3p/nix/hash): provide a Status-returning constructor r/1504
Additionally, add IsValidBase16() to restore the behavior of rejecting invalid base16, which absl's HexStringToBytes does not do.

Change-Id: I777a36f5dc787aa54a2aa316d6728f68da129768
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1484
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'third_party/nix/src/libutil/hash.hh')
-rw-r--r--third_party/nix/src/libutil/hash.hh10
1 files changed, 10 insertions, 0 deletions
diff --git a/third_party/nix/src/libutil/hash.hh b/third_party/nix/src/libutil/hash.hh
index 58f808896fe2..0b7b11edd072 100644
--- a/third_party/nix/src/libutil/hash.hh
+++ b/third_party/nix/src/libutil/hash.hh
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <absl/status/statusor.h>
+
 #include "libutil/serialise.hh"
 #include "libutil/types.hh"
 
@@ -36,6 +38,10 @@ struct Hash {
      string. */
   Hash(const std::string& s, HashType type = htUnknown);
 
+  /* Status-returning version of above constructor */
+  static absl::StatusOr<Hash> deserialize(const std::string& s,
+                                          HashType type = htUnknown);
+
   void init();
 
   /* Check whether a hash is set. */
@@ -64,6 +70,10 @@ struct Hash {
      (e.g. "sha256:"). */
   std::string to_string(Base base = Base32, bool includeType = true) const;
 
+  /* Returns whether the passed string contains entirely valid base16
+     characters. */
+  static bool IsValidBase16(absl::string_view s);
+
   /* Returns whether the passed string contains entirely valid base32
      characters. */
   static bool IsValidBase32(absl::string_view s);