Server IP : 92.205.26.207 / Your IP : 216.73.216.16 Web Server : Apache System : Linux 207.26.205.92.host.secureserver.net 4.18.0-553.60.1.el8_10.x86_64 #1 SMP Thu Jul 10 04:01:16 EDT 2025 x86_64 User : zikryat ( 1002) PHP Version : 8.3.23 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/zikryat/public_html/node_modules/jwks-rsa/src/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
const jose = require('jose'); const crypto = require('crypto'); async function retrieveSigningKeys(jwks) { const results = []; jwks = jwks .filter(({ use }) => use === 'sig' || use === undefined) .filter(({ kty }) => kty === 'RSA' || kty === 'EC' || kty === 'OKP'); for (const jwk of jwks) { try { // The algorithm is actually not used in the Node.js KeyObject-based runtime // passing an arbitrary value here and checking that KeyObject was returned // later const keyObject = await jose.importJWK(jwk, 'RS256'); if (!(keyObject instanceof crypto.KeyObject) || keyObject.type !== 'public') { continue; } const getSpki = () => keyObject.export({ format: 'pem', type: 'spki' }); results.push({ get publicKey() { return getSpki(); }, get rsaPublicKey() { return getSpki(); }, getPublicKey() { return getSpki(); }, ...(typeof jwk.kid === 'string' && jwk.kid ? { kid: jwk.kid } : undefined), ...(typeof jwk.alg === 'string' && jwk.alg ? { alg: jwk.alg } : undefined) }); } catch (err) { continue; } } return results; } module.exports = { retrieveSigningKeys };