@peculiar/webcrypto-test
v2.0.0
Published
Vitest and Mocha tests of WebCrypto API
Readme
webcrypto-test
This module allows you to test cryptographic modules.
It works with Vitest and Mocha. By default the SDK looks for describe and it on the active test runtime, and you can also pass an explicit platform adapter when you need to wire it manually.
If your test runtime does not expose globals, pass a platform adapter:
const { describe, it } = require("vitest");
const { WebcryptoTest } = require("@peculiar/webcrypto-test");
const { Crypto } = require("@peculiar/webcrypto");
WebcryptoTest.check(new Crypto(), undefined, { describe, it });Table Of Contents
Installing
npm install @peculiar/webcrypto-testUsing
Run all tests
const { WebcryptoTest } = require("@peculiar/webcrypto-test");
const { Crypto } = require("@peculiar/webcrypto");
WebcryptoTest.check(new Crypto());Run selected tests
const { WebcryptoTest } = require("@peculiar/webcrypto-test");
const vectors = require("./vectors");
const { Crypto } = require("@peculiar/webcrypto");
WebcryptoTest.check(new Crypto(), [vectors.ECDSA, vectors.ECDH]);Disable tests
To exclude vectors, you must set them to true
const { WebcryptoTest } = require("@peculiar/webcrypto-test");
const { Crypto } = require("@peculiar/webcrypto");
WebcryptoTest.check(new Crypto(), {
ECDSA: true,
ECDH: true,
});Run custom test
const { WebcryptoTest } = require("@peculiar/webcrypto-test");
const { Crypto } = require("@peculiar/webcrypto");
const myVector = {
name: "AES-128-CBC",
actions: {
generateKey: [
{
algorithm: { name: "AES-CBC", length: 128 },
extractable: true,
keyUsages: ["encrypt", "decrypt"],
},
],
encrypt: [
{
algorithm: {
name: "AES-CBC",
iv: Buffer.from("1234567890abcdef"),
},
data: Buffer.from("test message"),
encData: Buffer.from("d5df3ea1598defe7446420802baef28e", "hex"),
key: {
format: "raw",
data: Buffer.from("1234567890abcdef"),
algorithm: { name: "AES-CBC" },
extractable: true,
keyUsages: ["encrypt", "decrypt"],
},
},
]
}
}
WebcryptoTest.add(new Crypto(), myVector);