diff options
author | Kane York <kanepyork@gmail.com> | 2020-07-27T23·50-0700 |
---|---|---|
committer | kanepyork <rikingcoding@gmail.com> | 2020-07-28T02·04+0000 |
commit | 31f9ee58d0c91d02d96d29ea6e09bf0e4f9c5b92 (patch) | |
tree | 82b2b35d194839860240985a99f2a0e32d18c4e6 /third_party/nix/src/libutil/hash.hh | |
parent | 976a36c2e482f416acd79a624e6d96cce2564b5b (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.hh | 10 |
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); |