UNPKG

jose

Version:

JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes

75 lines (74 loc) • 1.76 kB
import { JOSENotSupported } from "../util/errors.js"; import { table } from "./key_descriptor.js"; const sig = [["verify"], ["sign"]]; function hmac(bits) { const subtle = { name: "HMAC", hash: `SHA-${bits}` }; return { kty: ["oct"], secret: !0, subtle, signing: subtle, usages: sig }; } function rsa(bits, saltLength) { const subtle = { name: saltLength ? "RSA-PSS" : "RSASSA-PKCS1-v1_5", hash: `SHA-${bits}` }; return { kty: ["RSA"], subtle, signing: saltLength ? { ...subtle, saltLength } : subtle, usages: sig, minRsaBits: 2048 }; } function ecdsa(crv, bits) { return { kty: ["EC"], crv, subtle: { name: "ECDSA", namedCurve: crv }, signing: { name: "ECDSA", hash: `SHA-${bits}` }, usages: sig }; } function eddsa() { const subtle = { name: "Ed25519" }; return { kty: ["OKP"], crv: "Ed25519", subtle, signing: subtle, usages: sig }; } function mldsa(parameterSet) { const subtle = { name: `ML-DSA-${parameterSet}` }; return { kty: ["AKP"], subtle, signing: subtle, usages: sig }; } const JWS = table({ HS256: hmac(256), HS384: hmac(384), HS512: hmac(512), RS256: rsa(256), RS384: rsa(384), RS512: rsa(512), PS256: rsa(256, 32), PS384: rsa(384, 48), PS512: rsa(512, 64), ES256: ecdsa("P-256", 256), ES384: ecdsa("P-384", 384), ES512: ecdsa("P-521", 512), EdDSA: eddsa(), Ed25519: eddsa(), "ML-DSA-44": mldsa(44), "ML-DSA-65": mldsa(65), "ML-DSA-87": mldsa(87) }); function jwsAlgorithm(alg) { const entry = typeof alg == "string" ? JWS[alg] : void 0; if (!entry) throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`); return entry; } export { JWS, jwsAlgorithm };