UNPKG

@gaonengwww/jose

Version:

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

95 lines (91 loc) 2.99 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/key/generate_secret.ts var generate_secret_exports = {}; __export(generate_secret_exports, { generateSecret: () => generateSecret }); module.exports = __toCommonJS(generate_secret_exports); // src/util/errors.ts var JOSEError = class extends Error { /** * A unique error code for the particular error subclass. * * @ignore */ static code = "ERR_JOSE_GENERIC"; /** A unique error code for {@link JOSEError}. */ code = "ERR_JOSE_GENERIC"; /** @ignore */ constructor(message, options) { super(message, options); this.name = this.constructor.name; Error.captureStackTrace?.(this, this.constructor); } }; var JOSENotSupported = class extends JOSEError { /** @ignore */ static code = "ERR_JOSE_NOT_SUPPORTED"; /** A unique error code for {@link JOSENotSupported}. */ code = "ERR_JOSE_NOT_SUPPORTED"; }; // src/key/generate_secret.ts async function generateSecret(alg, options) { let length; let algorithm; let keyUsages; switch (alg) { case "HS256": case "HS384": case "HS512": length = parseInt(alg.slice(-3), 10); algorithm = { name: "HMAC", hash: `SHA-${length}`, length }; keyUsages = ["sign", "verify"]; break; case "A128CBC-HS256": case "A192CBC-HS384": case "A256CBC-HS512": length = parseInt(alg.slice(-3), 10); return crypto.getRandomValues(new Uint8Array(length >> 3)); case "A128KW": case "A192KW": case "A256KW": length = parseInt(alg.slice(1, 4), 10); algorithm = { name: "AES-KW", length }; keyUsages = ["wrapKey", "unwrapKey"]; break; case "A128GCMKW": case "A192GCMKW": case "A256GCMKW": case "A128GCM": case "A192GCM": case "A256GCM": length = parseInt(alg.slice(1, 4), 10); algorithm = { name: "AES-GCM", length }; keyUsages = ["encrypt", "decrypt"]; break; default: throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value'); } return crypto.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { generateSecret });