130 lines
3.9 KiB
TypeScript
130 lines
3.9 KiB
TypeScript
import assert from "assert";
|
|
import * as core from "webcrypto-core";
|
|
import { Crypto } from "../src";
|
|
import { DesCbcParams } from "../src/mechs";
|
|
import { testCrypto } from "./helper";
|
|
|
|
context("DES", () => {
|
|
|
|
const crypto = new Crypto();
|
|
|
|
testCrypto(crypto, [
|
|
{
|
|
name: "DES-CBC",
|
|
actions: {
|
|
generateKey: [
|
|
{
|
|
algorithm: { name: "DES-CBC", length: 64 } as core.DesKeyGenParams,
|
|
extractable: false,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
|
},
|
|
],
|
|
encrypt: [
|
|
{
|
|
algorithm: {
|
|
name: "DES-CBC",
|
|
iv: Buffer.from("12345678"),
|
|
} as DesCbcParams,
|
|
data: Buffer.from("test message"),
|
|
encData: Buffer.from("3af3f901ff01fe0102dfbbf37d9bdb94", "hex"),
|
|
key: {
|
|
format: "raw" as KeyFormat,
|
|
algorithm: { name: "DES-CBC" },
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt"] as KeyUsage[],
|
|
data: Buffer.from("12345678"),
|
|
},
|
|
},
|
|
],
|
|
import: [
|
|
{
|
|
name: "raw",
|
|
format: "raw" as KeyFormat,
|
|
data: Buffer.from("12345678"),
|
|
algorithm: "DES-CBC",
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
|
},
|
|
{
|
|
name: "jwk",
|
|
format: "jwk" as KeyFormat,
|
|
data: {
|
|
kty: "oct",
|
|
alg: "DES-CBC",
|
|
k: "MTIzNDU2Nzg",
|
|
ext: true,
|
|
key_ops: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
|
},
|
|
algorithm: "DES-CBC",
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
|
},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: "DES-EDE3-CBC",
|
|
actions: {
|
|
generateKey: [
|
|
{
|
|
algorithm: { name: "DES-EDE3-CBC", length: 192 } as core.DesKeyGenParams,
|
|
extractable: false,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
|
},
|
|
],
|
|
encrypt: [
|
|
{
|
|
algorithm: {
|
|
name: "DES-EDE3-CBC",
|
|
iv: Buffer.from("12345678"),
|
|
} as DesCbcParams,
|
|
data: Buffer.from("test message"),
|
|
encData: Buffer.from("b9ef20e7db926490e4ff8680d99d2141", "hex"),
|
|
key: {
|
|
format: "raw" as KeyFormat,
|
|
algorithm: { name: "DES-EDE3-CBC" },
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt"] as KeyUsage[],
|
|
data: Buffer.from("1234567890abcdef12345678"),
|
|
},
|
|
},
|
|
],
|
|
import: [
|
|
{
|
|
name: "raw",
|
|
format: "raw" as KeyFormat,
|
|
data: Buffer.from("1234567890abcdef12345678"),
|
|
algorithm: "DES-EDE3-CBC",
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
|
},
|
|
{
|
|
name: "wrong key size",
|
|
error: core.OperationError,
|
|
format: "raw",
|
|
data: Buffer.from("12345678"),
|
|
algorithm: "DES-EDE3-CBC",
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
|
},
|
|
{
|
|
name: "jwk",
|
|
format: "jwk",
|
|
data: {
|
|
kty: "oct",
|
|
alg: "3DES-CBC",
|
|
k: "MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4",
|
|
ext: true,
|
|
key_ops: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
|
},
|
|
algorithm: "DES-EDE3-CBC",
|
|
extractable: true,
|
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
|
},
|
|
],
|
|
},
|
|
},
|
|
]);
|
|
|
|
});
|