aboutsummaryrefslogtreecommitdiff
path: root/src/libutil
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/hash.cc14
-rw-r--r--src/libutil/hash.hh6
2 files changed, 14 insertions, 6 deletions
diff --git a/src/libutil/hash.cc b/src/libutil/hash.cc
index 2087e3464..fcc0b9eb7 100644
--- a/src/libutil/hash.cc
+++ b/src/libutil/hash.cc
@@ -144,7 +144,10 @@ Hash Hash::fromSRI(std::string_view original) {
return Hash(rest, std::make_pair(parsedType, true));
}
-Hash::Hash(std::string_view s) : Hash(s, std::nullopt) {}
+Hash Hash::parseAnyPrefixed(std::string_view s)
+{
+ return parseAny(s, std::nullopt);
+}
static std::pair<HashType, bool> newFunction(std::string_view & original, std::optional<HashType> optType)
{
@@ -181,8 +184,11 @@ static std::pair<HashType, bool> newFunction(std::string_view & original, std::o
}
// mutates the string_view
-Hash::Hash(std::string_view original, std::optional<HashType> optType)
- : Hash(original, newFunction(original, optType)) {}
+Hash Hash::parseAny(std::string_view original, std::optional<HashType> optType)
+{
+ auto typeAndSRI = newFunction(original, optType);
+ return Hash(original, typeAndSRI);
+}
Hash::Hash(std::string_view rest, std::pair<HashType, bool> typeAndSRI)
: Hash(typeAndSRI.first)
@@ -249,7 +255,7 @@ Hash newHashAllowEmpty(std::string hashStr, std::optional<HashType> ht)
warn("found empty hash, assuming '%s'", h.to_string(SRI, true));
return h;
} else
- return Hash(hashStr, ht);
+ return Hash::parseAny(hashStr, ht);
}
diff --git a/src/libutil/hash.hh b/src/libutil/hash.hh
index 766009438..3e413a52c 100644
--- a/src/libutil/hash.hh
+++ b/src/libutil/hash.hh
@@ -39,9 +39,11 @@ struct Hash
Subresource Integrity hash expression). If the 'type' argument
is not present, then the hash type must be specified in the
string. */
- Hash(std::string_view s, std::optional<HashType> type);
+ static Hash parseAny(std::string_view s, std::optional<HashType> type);
// hash type must be part of string
- Hash(std::string_view s);
+ static Hash parseAnyPrefixed(std::string_view s);
+ // prefix parsed separately; non SRI hash
+ static Hash parseAnyUnprefixed(std::string_view s, HashType type);
static Hash fromSRI(std::string_view original);