This commit is contained in:
Stas Ukolov 2016-11-11 23:25:34 +05:00
Родитель 7d46d9d9c1
Коммит ce5876f7f7
2 изменённых файлов: 37 добавлений и 9 удалений

32
lib/enumsync.js Normal file
Просмотреть файл

@ -0,0 +1,32 @@
//
// Enumerate system root CAs synchronously
//
var forge = require('node-forge')
var crypt = require('./crypt32')
var asn1 = forge.asn1
var pki = forge.pki
module.exports = me
me.pki = pki
function me(cb)
{
var store = crypt.CertOpenSystemStoreA(null, 'ROOT')
try {
var ctx = null
while(1)
{
ctx = crypt.CertEnumCertificatesInStore(store, ctx)
if(ctx.isNull())
break
var res = ctx.deref()
res = res.pbCertEncoded.reinterpret(res.cbCertEncoded)
res = asn1.fromDer(res.toString('binary'))
res = pki.certificateFromAsn1(res)
cb(res)
}
} finally {
crypt.CertCloseStore(store, 0)
}
}

Просмотреть файл

@ -1,23 +1,19 @@
var https = require('https')
var x = require('./enum')
setTimeout(run, 1000)
var x = require('./enumsync')
https.get('https://ya.ru')
var ca = https.globalAgent.options
ca = ca.ca || (ca.ca = [])
x()
.on('crt', function(crt)
console.time('cas')
x(function(crt)
{
ca.push(x.pki.certificateToPem(crt))
})
console.timeEnd('cas')
function run()
{
https.get('https://ekb.ru', got)
}
https.get('https://ekb.ru', got)
function got(resp)
{