UNPKG

@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
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