@credo-ts/core
Version:
<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1
62 lines (61 loc) • 3.11 kB
JavaScript
import { KeyManagementError } from "../error/KeyManagementError.mjs";
import { getJwkHumanDescription } from "./humanDescription.mjs";
import { zUniqueArray } from "../../../utils/zod.mjs";
import { z as z$1 } from "zod";
//#region src/modules/kms/jwk/keyOps.ts
const zKnownJwkUse = z$1.union([z$1.literal("sig").describe("signature"), z$1.literal("enc").describe("encryption")]);
const zJwkUse = z$1.union([zKnownJwkUse, z$1.string()]);
const zKnownJwkKeyOps = z$1.union([
z$1.literal("sign").describe("compute digital signature or MAC"),
z$1.literal("verify").describe("verify digital signature or MAC"),
z$1.literal("encrypt").describe("encrypt content"),
z$1.literal("decrypt").describe("decrypt content and validate decryption, if applicable"),
z$1.literal("wrapKey").describe("encrypt key"),
z$1.literal("unwrapKey").describe("decrypt key and validate decryption, if applicable"),
z$1.literal("deriveKey").describe("derive key"),
z$1.literal("deriveBits").describe("derive bits not to be used as a key")
]);
const zJwkKeyOps = zUniqueArray(z$1.union([zKnownJwkKeyOps, z$1.string()]));
function keyAllowsDerive(key) {
if (key.use && key.use !== "enc") return false;
if (key.key_ops && !key.key_ops.includes("deriveKey")) return false;
return true;
}
function assertKeyAllowsDerive(jwk) {
if (!keyAllowsDerive(jwk)) throw new KeyManagementError(`${getJwkHumanDescription(jwk)} usage does not allow key derivation operations`);
}
function keyAllowsVerify(key) {
if (key.use && key.use !== "sig") return false;
if (key.key_ops && !key.key_ops.includes("verify")) return false;
return true;
}
function assertKeyAllowsVerify(jwk) {
if (!keyAllowsVerify(jwk)) throw new KeyManagementError(`${getJwkHumanDescription(jwk)} usage does not allow verification operations`);
}
function keyAllowsSign(key) {
if (key.use && key.use !== "sig") return false;
if (key.key_ops && !key.key_ops.includes("sign")) return false;
return true;
}
function assertKeyAllowsSign(jwk) {
if (!keyAllowsSign(jwk)) throw new KeyManagementError(`${getJwkHumanDescription(jwk)} usage does not allow signing operations`);
}
function keyAllowsEncrypt(key) {
if (key.use && key.use !== "enc") return false;
if (key.key_ops && !key.key_ops.includes("encrypt")) return false;
return true;
}
function assertKeyAllowsEncrypt(jwk) {
if (!keyAllowsEncrypt(jwk)) throw new KeyManagementError(`${getJwkHumanDescription(jwk)} usage does not allow encryption operations`);
}
function keyAllowsDecrypt(key) {
if (key.use && key.use !== "enc") return false;
if (key.key_ops && !key.key_ops.includes("decrypt")) return false;
return true;
}
function assertKeyAllowsDecrypt(jwk) {
if (!keyAllowsDecrypt(jwk)) throw new KeyManagementError(`${getJwkHumanDescription(jwk)} usage does not allow decryption operations`);
}
//#endregion
export { assertKeyAllowsDecrypt, assertKeyAllowsDerive, assertKeyAllowsEncrypt, assertKeyAllowsSign, assertKeyAllowsVerify, keyAllowsDecrypt, keyAllowsDerive, keyAllowsEncrypt, keyAllowsSign, keyAllowsVerify, zJwkKeyOps, zJwkUse, zKnownJwkKeyOps, zKnownJwkUse };
//# sourceMappingURL=keyOps.mjs.map