aboutsummaryrefslogtreecommitdiff
path: root/shard/test/mkltree_test.exs
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2018-11-02 16:26:59 +0100
committerAlex Auvolat <alex@adnab.me>2018-11-02 16:26:59 +0100
commita26dd9284352000cca6338b68c03594dcd900494 (patch)
treeb51c1a9ba734d0fba9a7d4a97df4ddca85dafbca /shard/test/mkltree_test.exs
parent353769402b6fd2ca4ea1807c2733e161a768f85e (diff)
downloadshard-a26dd9284352000cca6338b68c03594dcd900494.tar.gz
shard-a26dd9284352000cca6338b68c03594dcd900494.zip
WIP for file upload (Merkle tree for signatures)
Diffstat (limited to 'shard/test/mkltree_test.exs')
-rw-r--r--shard/test/mkltree_test.exs27
1 files changed, 27 insertions, 0 deletions
diff --git a/shard/test/mkltree_test.exs b/shard/test/mkltree_test.exs
new file mode 100644
index 0000000..248a37f
--- /dev/null
+++ b/shard/test/mkltree_test.exs
@@ -0,0 +1,27 @@
+defmodule ShardTest.MklTree do
+ use ExUnit.Case
+ doctest Shard.Application
+
+ test "merkle tree" do
+ alias SData.MerkleTree, as: MT
+
+ nblk = 14119
+
+ {:ok, path} = Briefly.create
+ fh = File.open!(path, [:write])
+ hashes = for i <- 0..nblk do
+ block = :enacl.randombytes 4096
+ :file.write(fh, block)
+ :crypto.hash(:sha256, block)
+ end
+ lastblock = :enacl.randombytes 128
+ :file.write(fh, lastblock)
+ hashes = hashes ++ [:crypto.hash(:sha256, lastblock)]
+ :file.close fh
+
+ mt = MT.create(path)
+ hashes2 = 0..(nblk+1) |> Enum.map(&(MT.get(mt, &1)))
+
+ assert hashes == hashes2
+ end
+end