簡體   English   中英

如何從 javascript 獲取證書的模數?

[英]How to get the modulus of a certificate from javascript?

我正在嘗試從公鑰和證書中獲取“模數”以驗證這些密鑰對和證書在簽名之前是否匹配但我不能

我在 Angular 中構建了一個 web 應用程序,我使用https://www.npmjs.com/package/node-forge 。這是一個 snnipet,但我不知道如何獲得 mudulus。

    var buffer = forge.util.createBuffer(FirmaUtil.Key, 'raw');
    var asn1 = forge.asn1.fromDer(buffer);
    var info = forge.pki.decryptPrivateKeyInfo(asn1, 'password');
    var privateK = forge.pki.privateKeyFromAsn1(info);

最后我可以實現比較 cer 和 key 的模數的目標

  doesCertMatchKey: function privateKeyMatchesCertificate(model) {

            certificate = {};
            certificate.Cer = model.Cert; //AsArrayBuffer .cer file
            certificate.Key = model.Key;  //AsArrayBuffer .key file
            certificate.Pass = model.Pass

            let bufferCer = forge.util.createBuffer(certificate.Cer, 'raw');
            let asn1Cert = forge.asn1.fromDer(bufferCer);
            let cer = forge.pki.certificateFromAsn1(asn1Cert);
                        
            let nHexPublicK = cer.publicKey.n.toString(16);
            let eHexPublicK = cer.publicKey.e.toString(16);
            
            var bufferKey = forge.util.createBuffer(certificate.Key, 'raw');
            var asn1Key = forge.asn1.fromDer(bufferKey);
            //Before the next step check password to void exception.
            var info = forge.pki.decryptPrivateKeyInfo(asn1Key, certificate.Pass);
            var privateKey = forge.pki.privateKeyFromAsn1(info);

            var nHexPrivateK = privateKey.n.toString(16);
            var eHexPrivaetK = privateKey.e.toString(16);

            //If they are identical then the private key matches the certificate.
            return nHexPublicK === nHexPrivateK;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM