如何从节点 js 中的 RSA public 密钥生成 SKI?

How can I produce a SKI from RSA public Key in node js?

我正在尝试修改 fabric-sdk-node 项目以将其与 RSA 证书和密钥一起使用。

现在我不知道如何使用 RSA public 密钥生成 SKI(X509v3 主题密钥标识符)。

该项目正在使用 jsrsasign package 加密货币。

我在 Github.com 的 jsrsasign issue 页面中找到了可以 produce SKI with ECDSA,但在 RSA 中仍然没有任何线索。

欢迎任何建议!

谢谢!

jsrsasign中的所有方法我几乎都测试过了,但还是没找到有用的东西。

所以我跳出框框思考,X509V3 主题密钥标识符 (SKI) 是由默认的 sha1 哈希算法生成的。但是,我们在 hyperledger/fabric 中所做的定义哈希算法为 sha256。那么,如果 jsrsasign 使用 sha1 对哈希算法进行了硬编码怎么办? (此为猜测,如有错误请指正。)

带着这样的想法,我尝试了另一个包 node-forge,它正好解决了我的问题。

这是演示:

const nodeForge = require("node-forge");
const pki = nodeForge.pki;

const jsrsa = require("jsrsasign");
const KEYUTIL = jsrsa.KEYUTIL;


const rsaPubKeyPem = `-----BEGIN CERTIFICATE-----
MIID<.........>Y/gRUg==
-----END CERTIFICATE-----
`;

const pubKey = KEYUTIL.getKey(rsaPubKeyPem);
const publicKey = pki.rsa.setPublicKey(pubKey.n,pubKey.e);

console.log(pki.getPublicKeyFingerprint(publicKey,{
    md: nodeForge.sha256.create(),
    encoding: 'hex',
    delimiter: ':'}));

而且我们得到了与 openssl 完全相同的 SKI。 这将导入另一个加密包,它看起来很难看。 有什么好的想法请指教

谢谢!