UNPKG

keygentoolshed

Version:

Key generation utilities for cryptographic operations. QUANTUM ENCRYPTION FOLDER UPDATE!!! See its folder for all <3

39 lines (33 loc) 1.32 kB
import { generateKeyPair, exportJWK } from 'jose'; import { program } from 'commander'; import fs from 'fs'; async function generateJwk(keyType, keySize, keyId) { let keyPair; if (keyType === 'RSA') { keyPair = await generateKeyPair('RS256', { modulusLength: keySize }); } else if (keyType === 'EC') { keyPair = await generateKeyPair('ES256', { crv: keySize }); } else { throw new Error('Unsupported key type. Use RSA or EC.'); } const jwk = await exportJWK(keyPair.publicKey); jwk.kid = keyId; jwk.use = 'sig'; return jwk; } program .version('1.0.0') .description('Generate a JSON Web Key (JWK)') .requiredOption('-t, --type <type>', 'Key type (RSA or EC)') .requiredOption('-s, --size <size>', 'Key size (e.g., 2048 for RSA, P-256 for EC)') .requiredOption('-i, --id <id>', 'Key ID') .action(async (options) => { try { const jwk = await generateJwk(options.type, options.size, options.id); fs.writeFileSync('./jwk.json', JSON.stringify(jwk, null, 4)); console.log('JWK generated and saved to jwk.json'); } catch (error) { console.error('Error generating JWK:', error.message); } }); program.parse(process.argv);