diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/hash.ts | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cli/tests/hash.ts b/cli/tests/hash.ts new file mode 100644 index 000000000..9c230dcfc --- /dev/null +++ b/cli/tests/hash.ts @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/camelcase, @typescript-eslint/no-explicit-any */ + +const { args } = Deno; +import { createHash, SupportedAlgorithm } from "../../std/hash/mod.ts"; +import { Md5 } from "../../std/hash/md5.ts"; +import { Sha1 } from "../../std/hash/sha1.ts"; +import { Sha256 } from "../../std/hash/sha256.ts"; +import { Sha512 } from "../../std/hash/sha512.ts"; +import { Sha3_224, Sha3_256, Sha3_384, Sha3_512 } from "../../std/hash/sha3.ts"; + +if (args.length < 3) Deno.exit(0); + +const method = args[0]; +const alg = args[1]; +const inputFile = args[2]; + +function getJsHash(alg: string): any { + switch (alg) { + case "md5": + return new Md5(); + case "sha1": + return new Sha1(); + case "sha224": + return new Sha256(true); + case "sha256": + return new Sha256(); + case "sha3-224": + return new Sha3_224(); + case "sha3-256": + return new Sha3_256(); + case "sha3-384": + return new Sha3_384(); + case "sha3-512": + return new Sha3_512(); + case "sha512": + return new Sha512(); + default: + return null; + } +} + +const f = Deno.openSync(inputFile, { read: true }); +const buffer = Deno.readAllSync(f); +f.close(); + +let hash = null; + +console.time("hash"); +if (method === "rust") { + hash = createHash(alg as SupportedAlgorithm); +} else if (method === "js") { + hash = getJsHash(alg); +} + +if (hash === null) { + console.log(`unknown hash: ${alg}`); + Deno.exit(1); +} + +hash.update(buffer); +hash.digest(); +console.timeEnd("hash"); |