summaryrefslogtreecommitdiff
path: root/Source/Core/Common
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common')
-rw-r--r--Source/Core/Common/Crypto/SHA1.cpp4
-rw-r--r--Source/Core/Common/Crypto/SHA1.h27
2 files changed, 26 insertions, 5 deletions
diff --git a/Source/Core/Common/Crypto/SHA1.cpp b/Source/Core/Common/Crypto/SHA1.cpp
index 44d5f9c3dd..bca90ec079 100644
--- a/Source/Core/Common/Crypto/SHA1.cpp
+++ b/Source/Core/Common/Crypto/SHA1.cpp
@@ -394,8 +394,4 @@ std::string DigestToString(const Digest& digest)
return fmt::format("{:02X}", fmt::join(digest, ""));
}
-std::string DigestToSource(const Digest& digest)
-{
- return fmt::format("{{0x{:02X}}}", fmt::join(digest, ", 0x"));
-}
} // namespace Common::SHA1
diff --git a/Source/Core/Common/Crypto/SHA1.h b/Source/Core/Common/Crypto/SHA1.h
index feb92f31fd..cbd287edd5 100644
--- a/Source/Core/Common/Crypto/SHA1.h
+++ b/Source/Core/Common/Crypto/SHA1.h
@@ -58,5 +58,30 @@ inline Digest CalculateDigest(const std::array<T, Size>& msg)
}
std::string DigestToString(const Digest& digest);
-std::string DigestToSource(const Digest& digest);
+
+constexpr Digest StringToDigest(std::string_view str)
+{
+ Digest digest{};
+ ASSERT(str.size() == digest.size() * 2);
+
+ for (size_t i = 0; i < str.size(); ++i)
+ {
+ const char c = str[i];
+ u8 quartet;
+ if (c >= '0' && c <= '9')
+ quartet = c - '0';
+ else if (c >= 'A' && c <= 'F')
+ quartet = c - 'A' + 10;
+ else if (c >= 'a' && c <= 'f')
+ quartet = c - 'a' + 10;
+ else
+ ASSERT(false);
+
+ if (i % 2 == 0)
+ digest[i / 2] = quartet << 4;
+ else
+ digest[i / 2] |= quartet;
+ }
+ return digest;
+}
} // namespace Common::SHA1