summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/util/sha1/sha1_util.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/libs/dxvk-native-1.9.2a/src/util/sha1/sha1_util.cpp48
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