JavaScript generic ASN.1 parser (mirror)
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Parse PEMs from file. ESLint fixes.

+13 -5
+13 -5
dumpASN1.js
··· 2 2 'use strict'; 3 3 4 4 const 5 + fs = require('fs'), 5 6 Base64 = require('./base64.js'), 6 7 ASN1 = require('./asn1.js'), 7 8 rfc = require('./rfcasn1.json'), ··· 12 13 if (def?.type?.type) 13 14 def = def.type; 14 15 while (def?.type == 'defined') { 15 - let name = def.name; 16 + const name = def.name; 16 17 try { 17 - def = rfc['1.3.6.1.5.5.7.0.18'].types[def.name].type; 18 + def = rfc['1.3.6.1.5.5.7.0.18'].types[name].type; 18 19 } catch (e) { 19 - throw 'Type not found: ' + def.name; 20 + throw 'Type not found: ' + name; 20 21 } 21 22 } 22 23 return def ?? {}; ··· 62 63 s += print(value.sub[i], deftype?.content?.[deftype?.typeOf ? 0 : i], indent); 63 64 } 64 65 return s; 65 - }; 66 + } 66 67 67 - let result = ASN1.decode(Base64.decode(process.argv[2])); 68 + let content = fs.readFileSync(process.argv[2]); 69 + let result; 70 + try { // try PEM first 71 + result = ASN1.decode(Base64.unarmor(content)); 72 + } catch (e) { // try DER/BER then 73 + result = ASN1.decode(Base64.unarmor(content)); 74 + } 75 + content = null; 68 76 console.log(print(result, rfc['1.3.6.1.5.5.7.0.18'].types.Certificate));