| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js// Fedor, you are amazing.'use strict'var asn1 = require('asn1.js')exports.certificate = require('./certificate')var RSAPrivateKey = asn1.define('RSAPrivateKey', function () {  this.seq().obj(    this.key('version').int(),    this.key('modulus').int(),    this.key('publicExponent').int(),    this.key('privateExponent').int(),    this.key('prime1').int(),    this.key('prime2').int(),    this.key('exponent1').int(),    this.key('exponent2').int(),    this.key('coefficient').int()  )})exports.RSAPrivateKey = RSAPrivateKeyvar RSAPublicKey = asn1.define('RSAPublicKey', function () {  this.seq().obj(    this.key('modulus').int(),    this.key('publicExponent').int()  )})exports.RSAPublicKey = RSAPublicKeyvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {  this.seq().obj(    this.key('algorithm').use(AlgorithmIdentifier),    this.key('subjectPublicKey').bitstr()  )})exports.PublicKey = PublicKeyvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {  this.seq().obj(    this.key('algorithm').objid(),    this.key('none').null_().optional(),    this.key('curve').objid().optional(),    this.key('params').seq().obj(      this.key('p').int(),      this.key('q').int(),      this.key('g').int()    ).optional()  )})var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {  this.seq().obj(    this.key('version').int(),    this.key('algorithm').use(AlgorithmIdentifier),    this.key('subjectPrivateKey').octstr()  )})exports.PrivateKey = PrivateKeyInfovar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {  this.seq().obj(    this.key('algorithm').seq().obj(      this.key('id').objid(),      this.key('decrypt').seq().obj(        this.key('kde').seq().obj(          this.key('id').objid(),          this.key('kdeparams').seq().obj(            this.key('salt').octstr(),            this.key('iters').int()          )        ),        this.key('cipher').seq().obj(          this.key('algo').objid(),          this.key('iv').octstr()        )      )    ),    this.key('subjectPrivateKey').octstr()  )})exports.EncryptedPrivateKey = EncryptedPrivateKeyInfovar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {  this.seq().obj(    this.key('version').int(),    this.key('p').int(),    this.key('q').int(),    this.key('g').int(),    this.key('pub_key').int(),    this.key('priv_key').int()  )})exports.DSAPrivateKey = DSAPrivateKeyexports.DSAparam = asn1.define('DSAparam', function () {  this.int()})var ECPrivateKey = asn1.define('ECPrivateKey', function () {  this.seq().obj(    this.key('version').int(),    this.key('privateKey').octstr(),    this.key('parameters').optional().explicit(0).use(ECParameters),    this.key('publicKey').optional().explicit(1).bitstr()  )})exports.ECPrivateKey = ECPrivateKeyvar ECParameters = asn1.define('ECParameters', function () {  this.choice({    namedCurve: this.objid()  })})exports.signature = asn1.define('signature', function () {  this.seq().obj(    this.key('r').int(),    this.key('s').int()  )})
 |