ASN.1/DER, PEM for Browser.
Forked from @fidm/asn1 and modified to run on browser.
Install
npm i --save @sardinefish/asn1
Documentation
https://fidm.github.io/asn1/
Example
Parse a private key from PEM file with ASN.1 Template
const fs = require('fs')
const { PEM, ASN1, Class, Tag } = require('@sardinefish/asn1')
const privateKeyValidator = {
name: 'PrivateKeyInfo',
class: Class.UNIVERSAL,
tag: Tag.SEQUENCE,
capture: 'privateKeyInfo',
value: [{
name: 'PrivateKeyInfo.Version',
class: Class.UNIVERSAL,
tag: Tag.INTEGER,
capture: 'privateKeyVersion'
}, {
name: 'PrivateKeyInfo.AlgorithmIdentifier',
class: Class.UNIVERSAL,
tag: Tag.SEQUENCE,
value: [{
name: 'PrivateKeyAlgorithmIdentifier.algorithm',
class: Class.UNIVERSAL,
tag: Tag.OID,
capture: 'privateKeyOID'
}]
}, {
name: 'PrivateKeyInfo.PrivateKey',
class: Class.UNIVERSAL,
tag: Tag.OCTETSTRING,
capture: 'privateKey'
}]
}
const rootkey = PEM.parse(fs.readFileSync('./test/cert/rootkey.pem'))[0]
const captures = ASN1.parseDERWithTemplate(rootkey.body, privateKeyValidator)
console.log(captures)
Build PKCS#8 private key ASN1 object from PKCS#1 private key ASN1 object
const { ASN1, Class, Tag } = require('@sardinefish/asn1')
const rsaPrivateKeyASN1 = getSomeRSAPrivateKeyASN1()
const privateKeyASN1 = ASN1.Seq([
rsaPrivateKeyASN1.value[0],
ASN1.Seq([
ASN1.OID('1.2.840.113549.1.1.1'),
ASN1.Null(),
]),
new ASN1(Class.UNIVERSAL, Tag.OCTETSTRING, rsaPrivateKeyASN1.DER),
])
Parse a certificate from PEM file
const fs = require('fs')
const { PEM, ASN1 } = require('@sardinefish/asn1')
const pems = PEM.parse(fs.readFileSync('./test/cert/github.crt'))
const asn1 = ASN1.fromDER(pems[0].body)
console.log(asn1)
License
@fidm/asn1 is licensed under the MIT license.
Copyright © 2018-2019 FIdM.