feat: add publickey.ts

This commit is contained in:
2025-01-19 00:49:39 +08:00
parent 89e16b77d4
commit b2a0b817e8
2 changed files with 42 additions and 0 deletions

35
single-scripts/publickey.ts Executable file
View File

@@ -0,0 +1,35 @@
#!/usr/bin/env -S deno run --allow-env
// Reference:
// - https://docs.deno.com/examples/command_line_arguments/
// - https://docs.deno.com/api/node/crypto/~/X509Certificate#property_issuercertificate
// - https://docs.deno.com/api/node/crypto/~/createPublicKey
const {X509Certificate, createPublicKey} = await import('node:crypto');
if (Deno.args.length === 0) {
console.log("Usage: certificate.ts <certificate>");
Deno.exit(1);
}
// function tryParseCertificate() {
// const x509 = new X509Certificate(Deno.args[0]);
//
// const exportedJwk = x509.publicKey.export({format: "jwk"});
// console.log(JSON.stringify(exportedJwk, null, 4));
//
// console.log(x509.publicKey.export({format: "pem", type: "spki"}));
// }
try {
const publicKey = createPublicKey(Deno.args[0]);
console.log('JWK:');
const exportedJwk = publicKey.export({format: "jwk"});
console.log(JSON.stringify(exportedJwk, null, 4));
console.log();
console.log("PEM:");
console.log(publicKey.export({format: "pem", type: "spki"}));
} catch (e) {
console.error(`Parse certificate or public key failed: ${e}`);
}