aboutsummaryrefslogtreecommitdiff
path: root/zencore/blake3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zencore/blake3.cpp')
-rw-r--r--zencore/blake3.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/zencore/blake3.cpp b/zencore/blake3.cpp
index ec5d496d5..090eb6897 100644
--- a/zencore/blake3.cpp
+++ b/zencore/blake3.cpp
@@ -2,10 +2,11 @@
#include <zencore/blake3.h>
+#include <zencore/compositebuffer.h>
#include <zencore/string.h>
#include <zencore/zencore.h>
-#include "../3rdparty/BLAKE3/c/blake3.h"
+#include "../3rdparty/BLAKE3/c/blake3.h"
#pragma comment(lib, "blake3.lib")
#include <doctest/doctest.h>
@@ -36,6 +37,24 @@ BLAKE3::HashMemory(const void* data, size_t byteCount)
}
BLAKE3
+BLAKE3::HashBuffer(const CompositeBuffer& Buffer)
+{
+ BLAKE3 Hash;
+
+ blake3_hasher Hasher;
+ blake3_hasher_init(&Hasher);
+
+ for (const SharedBuffer& Segment : Buffer.GetSegments())
+ {
+ blake3_hasher_update(&Hasher, Segment.GetData(), Segment.GetSize());
+ }
+
+ blake3_hasher_finalize(&Hasher, Hash.Hash, sizeof Hash.Hash);
+
+ return Hash;
+}
+
+BLAKE3
BLAKE3::FromHexString(const char* string)
{
BLAKE3 b3;