diff --git a/cli/tests/unit_node/crypto/crypto_cipher_test.ts b/cli/tests/unit_node/crypto/crypto_cipher_test.ts index 417f5035cc1e90..0eecaacf062d15 100644 --- a/cli/tests/unit_node/crypto/crypto_cipher_test.ts +++ b/cli/tests/unit_node/crypto/crypto_cipher_test.ts @@ -199,3 +199,27 @@ Deno.test({ assertEquals(await text(stream), "foo".repeat(15)); }, }); + +Deno.test({ + name: "createCipheriv - invalid algorithm", + fn() { + assertThrows( + () => + crypto.createCipheriv("foo", new Uint8Array(16), new Uint8Array(16)), + TypeError, + "Unknown cipher", + ); + }, +}); + +Deno.test({ + name: "createDecipheriv - invalid algorithm", + fn() { + assertThrows( + () => + crypto.createDecipheriv("foo", new Uint8Array(16), new Uint8Array(16)), + TypeError, + "Unknown cipher", + ); + }, +}); diff --git a/ext/node/polyfills/internal/crypto/cipher.ts b/ext/node/polyfills/internal/crypto/cipher.ts index 3a8b41f0697aed..5622576cd979b3 100644 --- a/ext/node/polyfills/internal/crypto/cipher.ts +++ b/ext/node/polyfills/internal/crypto/cipher.ts @@ -162,6 +162,9 @@ export class Cipheriv extends Transform implements Cipher { }); this.#cache = new BlockModeCache(false); this.#context = ops.op_node_create_cipheriv(cipher, toU8(key), toU8(iv)); + if (this.#context == 0) { + throw new TypeError("Unknown cipher"); + } } final(encoding: string = getDefaultEncoding()): Buffer | string { @@ -278,6 +281,9 @@ export class Decipheriv extends Transform implements Cipher { }); this.#cache = new BlockModeCache(true); this.#context = ops.op_node_create_decipheriv(cipher, toU8(key), toU8(iv)); + if (this.#context == 0) { + throw new TypeError("Unknown cipher"); + } } final(encoding: string = getDefaultEncoding()): Buffer | string {