diff options
Diffstat (limited to '')
-rw-r--r-- | src/libs/dxvk-native-1.9.2a/src/util/sha1/sha1_util.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/libs/dxvk-native-1.9.2a/src/util/sha1/sha1_util.cpp b/src/libs/dxvk-native-1.9.2a/src/util/sha1/sha1_util.cpp new file mode 100644 index 00000000..eefc9275 --- /dev/null +++ b/src/libs/dxvk-native-1.9.2a/src/util/sha1/sha1_util.cpp @@ -0,0 +1,48 @@ +#include "sha1.h" +#include "sha1_util.h" + +namespace dxvk { + + std::string Sha1Hash::toString() const { + static const char nibbles[] + = { '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + + std::string result; + result.resize(2 * m_digest.size()); + + for (uint32_t i = 0; i < m_digest.size(); i++) { + result.at(2 * i + 0) = nibbles[(m_digest[i] >> 4) & 0xF]; + result.at(2 * i + 1) = nibbles[(m_digest[i] >> 0) & 0xF]; + } + + return result; + } + + + Sha1Hash Sha1Hash::compute( + const void* data, + size_t size) { + Sha1Data chunk = { data, size }; + return compute(1, &chunk); + } + + + Sha1Hash Sha1Hash::compute( + size_t numChunks, + const Sha1Data* chunks) { + Sha1Digest digest; + + SHA1_CTX ctx; + SHA1Init(&ctx); + + for (size_t i = 0; i < numChunks; i++) { + auto ptr = reinterpret_cast<const uint8_t*>(chunks[i].data); + SHA1Update(&ctx, ptr, chunks[i].size); + } + + SHA1Final(digest.data(), &ctx); + return Sha1Hash(digest); + } + +}
\ No newline at end of file |