diff options
Diffstat (limited to 'Source/Core/Common')
| -rw-r--r-- | Source/Core/Common/Crypto/SHA1.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/Common/Crypto/SHA1.h | 27 |
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 |
