Initial Commit
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* Native-impl stubs currently throw `PrimitiveNotImplemented`. They ship
|
||||
* alongside the noble impls so `crypto.config.ts` can be flipped to
|
||||
* `'native'` per primitive once in-house implementations land. Until then
|
||||
* this suite holds the stubs at the documented throw-contract and keeps
|
||||
* them off the 0%-coverage list without silencing them via istanbul
|
||||
* excludes.
|
||||
*/
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import { argon2id } from "../src/primitives/argon2id/impl/argon2id.native/argon2id.native.js";
|
||||
import { hkdf } from "../src/primitives/hkdf/impl/hkdf.native/hkdf.native.js";
|
||||
import { hmac } from "../src/primitives/hmac/impl/hmac.native/hmac.native.js";
|
||||
import { pbkdf2 } from "../src/primitives/pbkdf2/impl/pbkdf2.native/pbkdf2.native.js";
|
||||
import { sha256 } from "../src/primitives/sha256/impl/sha256.native/sha256.native.js";
|
||||
import { sha384 } from "../src/primitives/sha384/impl/sha384.native/sha384.native.js";
|
||||
import { sha512 } from "../src/primitives/sha512/impl/sha512.native/sha512.native.js";
|
||||
|
||||
const NOT_IMPLEMENTED_CODE = "CRYPTO.UTILS.PRIMITIVE_NOT_IMPLEMENTED";
|
||||
const data = new Uint8Array([1, 2, 3]);
|
||||
const salt = new Uint8Array([4, 5, 6]);
|
||||
|
||||
function assertNotImplemented(fn: () => unknown, id: string): void {
|
||||
try {
|
||||
fn();
|
||||
throw new Error(`${id}.native did not throw`);
|
||||
} catch (err) {
|
||||
expect((err as { code?: string }).code).toBe(NOT_IMPLEMENTED_CODE);
|
||||
}
|
||||
}
|
||||
|
||||
describe("crypto-hash native stubs", () => {
|
||||
it("sha256.native throws PrimitiveNotImplemented", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
assertNotImplemented(() => sha256(data), "sha256");
|
||||
});
|
||||
|
||||
it("sha384.native throws PrimitiveNotImplemented", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
assertNotImplemented(() => sha384(data), "sha384");
|
||||
});
|
||||
|
||||
it("sha512.native throws PrimitiveNotImplemented", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
assertNotImplemented(() => sha512(data), "sha512");
|
||||
});
|
||||
|
||||
it("hmac.native throws PrimitiveNotImplemented", { timeout: 5000 }, () => {
|
||||
assertNotImplemented(() => hmac("SHA-256", data, data), "hmac");
|
||||
});
|
||||
|
||||
it("hkdf.native throws PrimitiveNotImplemented", { timeout: 5000 }, () => {
|
||||
assertNotImplemented(
|
||||
() => hkdf("SHA-256", data, { salt, info: data, length: 32 }),
|
||||
"hkdf"
|
||||
);
|
||||
});
|
||||
|
||||
it("pbkdf2.native throws PrimitiveNotImplemented", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
assertNotImplemented(
|
||||
() =>
|
||||
pbkdf2("SHA-256", data, {
|
||||
salt,
|
||||
iterations: 1000,
|
||||
length: 32,
|
||||
}),
|
||||
"pbkdf2"
|
||||
);
|
||||
});
|
||||
|
||||
it("argon2id.native throws PrimitiveNotImplemented", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
assertNotImplemented(
|
||||
() =>
|
||||
argon2id(data, {
|
||||
salt,
|
||||
timeCost: 2,
|
||||
memoryCost: 4096,
|
||||
parallelism: 1,
|
||||
length: 32,
|
||||
}),
|
||||
"argon2id"
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user