diff options
author | Luca Casonato <hello@lcas.dev> | 2024-06-24 11:47:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-24 11:47:12 +0200 |
commit | 1e8a6b94b1dcf98a2ae4de97b3e98e7b3e4e8f7f (patch) | |
tree | 89ae2bc343dea6bf17ca9d512ea80b51540347ca /tests/unit_node | |
parent | ff535061077d2b67e20154a7dfefe8ca92502c5a (diff) |
fix(ext/node): rewrite crypto.Hash (#24302)
Changes in this PR:
- Added new fixed size hash algorithms (blake2b512, blake2s256,
sha512-224, sha512-256, sha3-224, sha3-256, sha3-384, sha3-512, sm3)
- Added variable size hash algorithms (the concept), with the algorithms
shake128 and shake256
- Use cppgc instead of resources for the hasher
- Enable Node's crypto.Hash tests and fix found bugs
Diffstat (limited to 'tests/unit_node')
-rw-r--r-- | tests/unit_node/crypto/crypto_hash_test.ts | 26 | ||||
-rw-r--r-- | tests/unit_node/crypto/crypto_misc_test.ts | 18 |
2 files changed, 26 insertions, 18 deletions
diff --git a/tests/unit_node/crypto/crypto_hash_test.ts b/tests/unit_node/crypto/crypto_hash_test.ts index 74223067e..96bc1d51b 100644 --- a/tests/unit_node/crypto/crypto_hash_test.ts +++ b/tests/unit_node/crypto/crypto_hash_test.ts @@ -1,11 +1,5 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - createHash, - createHmac, - getHashes, - randomFillSync, - randomUUID, -} from "node:crypto"; +import { createHash, createHmac, getHashes } from "node:crypto"; import { Buffer } from "node:buffer"; import { Readable } from "node:stream"; import { assert, assertEquals } from "@std/assert/mod.ts"; @@ -123,17 +117,13 @@ Deno.test("[node/crypto.getHashes]", () => { } }); -Deno.test("[node/crypto.getRandomUUID] works the same way as Web Crypto API", () => { - assertEquals(randomUUID().length, crypto.randomUUID().length); - assertEquals(typeof randomUUID(), typeof crypto.randomUUID()); +Deno.test("[node/crypto.hash] supports buffer args", () => { + const buffer = Buffer.from("abc"); + const d = createHash("sha1").update(buffer).digest("hex"); + assertEquals(d, "a9993e364706816aba3e25717850c26c9cd0d89d"); }); -Deno.test("[node/crypto.randomFillSync] supported arguments", () => { - const buf = new Uint8Array(10); - - assert(randomFillSync(buf)); - assert(randomFillSync(buf, 0)); - // @ts-ignore: arraybuffer arguments are valid. - assert(randomFillSync(buf.buffer)); - assert(randomFillSync(new DataView(buf.buffer))); +Deno.test("[node/crypto.hash] does not leak", () => { + const hasher = createHash("sha1"); + hasher.update("abc"); }); diff --git a/tests/unit_node/crypto/crypto_misc_test.ts b/tests/unit_node/crypto/crypto_misc_test.ts new file mode 100644 index 000000000..8132f2e99 --- /dev/null +++ b/tests/unit_node/crypto/crypto_misc_test.ts @@ -0,0 +1,18 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { randomFillSync, randomUUID } from "node:crypto"; +import { assert, assertEquals } from "../../unit/test_util.ts"; + +Deno.test("[node/crypto.getRandomUUID] works the same way as Web Crypto API", () => { + assertEquals(randomUUID().length, crypto.randomUUID().length); + assertEquals(typeof randomUUID(), typeof crypto.randomUUID()); +}); + +Deno.test("[node/crypto.randomFillSync] supported arguments", () => { + const buf = new Uint8Array(10); + + assert(randomFillSync(buf)); + assert(randomFillSync(buf, 0)); + // @ts-ignore: arraybuffer arguments are valid. + assert(randomFillSync(buf.buffer)); + assert(randomFillSync(new DataView(buf.buffer))); +}); |