diff options
author | Alex Auvolat <alex@adnab.me> | 2018-11-02 16:26:59 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2018-11-02 16:26:59 +0100 |
commit | a26dd9284352000cca6338b68c03594dcd900494 (patch) | |
tree | b51c1a9ba734d0fba9a7d4a97df4ddca85dafbca /shard/test/mkltree_test.exs | |
parent | 353769402b6fd2ca4ea1807c2733e161a768f85e (diff) | |
download | shard-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.exs | 27 |
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 |