From 706c07fa1d069290992bd31d53b0c89324992f9c Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 28 Nov 2019 00:46:34 +0100 Subject: implement JS-only Taler, remove emscripten --- src/crypto/talerCrypto-test.ts | 44 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'src/crypto/talerCrypto-test.ts') diff --git a/src/crypto/talerCrypto-test.ts b/src/crypto/talerCrypto-test.ts index 3f9d6f398..59949dbd3 100644 --- a/src/crypto/talerCrypto-test.ts +++ b/src/crypto/talerCrypto-test.ts @@ -29,8 +29,8 @@ import { rsaUnblind, rsaVerify, } from "./talerCrypto"; -import { hmacSha512, sha512, kdf } from "./kdf"; -import nacl = require("./nacl-fast"); +import { sha512, kdf } from "./primitives/kdf"; +import nacl = require("./primitives/nacl-fast"); function hexToBytes(hex: string) { for (var bytes = [], c = 0; c < hex.length; c += 2) @@ -159,3 +159,43 @@ test("taler-exchange-tvg blind signing", t => { const v = rsaVerify(decodeCrock(messageHash), decodeCrock(sig), decodeCrock(rsaPublicKey)); t.true(v); }); + + +test("incremental hashing #1", (t) => { + const n = 1024; + const d = nacl.randomBytes(n); + + const h1 = nacl.hash(d); + const h2 = new nacl.HashState().update(d).finish(); + + const s = new nacl.HashState(); + for (let i = 0; i < n; i++) { + const b = new Uint8Array(1); + b[0] = d[i]; + s.update(b); + } + + const h3 = s.finish(); + + t.deepEqual(encodeCrock(h1), encodeCrock(h2)); + t.deepEqual(encodeCrock(h1), encodeCrock(h3)); +}); + +test("incremental hashing #2", (t) => { + const n = 10; + const d = nacl.randomBytes(n); + + const h1 = nacl.hash(d); + const h2 = new nacl.HashState().update(d).finish(); + const s = new nacl.HashState(); + for (let i = 0; i < n; i++) { + const b = new Uint8Array(1); + b[0] = d[i]; + s.update(b); + } + + const h3 = s.finish(); + + t.deepEqual(encodeCrock(h1), encodeCrock(h3)); + t.deepEqual(encodeCrock(h1), encodeCrock(h2)); +}); \ No newline at end of file -- cgit v1.2.3