/opt/canhelp/node_modules/jose/dist/webapi/lib
NameSizeModeActions
aesgcmkw.js6000644editdlrm
aeskw.js11890644editdlrm
asn1.js87170644editdlrm
base64.js6730644editdlrm
buffer_utils.js13450644editdlrm
check_key_type.js47680644editdlrm
content_encryption.js76360644editdlrm
crypto_key.js45660644editdlrm
deflate.js15250644editdlrm
ecdhes.js20290644editdlrm
helpers.js5960644editdlrm
invalid_key_input.js9740644editdlrm
is_key_like.js4930644editdlrm
jwk_to_key.js40090644editdlrm
jwt_claims_set.js82080644editdlrm
key_management.js80750644editdlrm
key_to_jwk.js9430644editdlrm
normalize_key.js52830644editdlrm
pbes2kw.js16140644editdlrm
rsaes.js9300644editdlrm
signing.js25210644editdlrm
type_checks.js14700644editdlrm
validate_algorithms.js3560644editdlrm
validate_crit.js15830644editdlrm
Edit: /opt/canhelp/node_modules/jose/dist/webapi/lib/jwk_to_key.js (4009B)
import { JOSENotSupported } from '../util/errors.js'; const unsupportedAlg = 'Invalid or unsupported JWK "alg" (Algorithm) Parameter value'; function subtleMapping(jwk) { let algorithm; let keyUsages; switch (jwk.kty) { case 'AKP': { switch (jwk.alg) { case 'ML-DSA-44': case 'ML-DSA-65': case 'ML-DSA-87': algorithm = { name: jwk.alg }; keyUsages = jwk.priv ? ['sign'] : ['verify']; break; default: throw new JOSENotSupported(unsupportedAlg); } break; } case 'RSA': { switch (jwk.alg) { case 'PS256': case 'PS384': case 'PS512': algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` }; keyUsages = jwk.d ? ['sign'] : ['verify']; break; case 'RS256': case 'RS384': case 'RS512': algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` }; keyUsages = jwk.d ? ['sign'] : ['verify']; break; case 'RSA-OAEP': case 'RSA-OAEP-256': case 'RSA-OAEP-384': case 'RSA-OAEP-512': algorithm = { name: 'RSA-OAEP', hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`, }; keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey']; break; default: throw new JOSENotSupported(unsupportedAlg); } break; } case 'EC': { switch (jwk.alg) { case 'ES256': case 'ES384': case 'ES512': algorithm = { name: 'ECDSA', namedCurve: { ES256: 'P-256', ES384: 'P-384', ES512: 'P-521' }[jwk.alg], }; keyUsages = jwk.d ? ['sign'] : ['verify']; break; case 'ECDH-ES': case 'ECDH-ES+A128KW': case 'ECDH-ES+A192KW': case 'ECDH-ES+A256KW': algorithm = { name: 'ECDH', namedCurve: jwk.crv }; keyUsages = jwk.d ? ['deriveBits'] : []; break; default: throw new JOSENotSupported(unsupportedAlg); } break; } case 'OKP': { switch (jwk.alg) { case 'Ed25519': case 'EdDSA': algorithm = { name: 'Ed25519' }; keyUsages = jwk.d ? ['sign'] : ['verify']; break; case 'ECDH-ES': case 'ECDH-ES+A128KW': case 'ECDH-ES+A192KW': case 'ECDH-ES+A256KW': algorithm = { name: jwk.crv }; keyUsages = jwk.d ? ['deriveBits'] : []; break; default: throw new JOSENotSupported(unsupportedAlg); } break; } default: throw new JOSENotSupported('Invalid or unsupported JWK "kty" (Key Type) Parameter value'); } return { algorithm, keyUsages }; } export async function jwkToKey(jwk) { if (!jwk.alg) { throw new TypeError('"alg" argument is required when "jwk.alg" is not present'); } const { algorithm, keyUsages } = subtleMapping(jwk); const keyData = { ...jwk }; if (keyData.kty !== 'AKP') { delete keyData.alg; } delete keyData.use; return crypto.subtle.importKey('jwk', keyData, algorithm, jwk.ext ?? (jwk.d || jwk.priv ? false : true), jwk.key_ops ?? keyUsages); }