# ASN1.js ASN.1 DER Encoder/Decoder and DSL for Node.js with no dependencies ## Acknowledgement This is a fork of [@indutny's](https://github.com/indutny) `asn.js` library with the following changes made: - all `.int()` returns are native `BigInt` values - lint using [`standard`](https://github.com/standard/standard) ## Example Define model: ```js const asn = require('@panva/asn1.js') const Human = asn.define('Human', function () { this.seq().obj( this.key('firstName').octstr(), this.key('lastName').octstr(), this.key('age').int(), this.key('gender').enum({ 0: 'male', 1: 'female' }), this.key('bio').seqof(Bio) ) }) const Bio = asn.define('Bio', function () { this.seq().obj( this.key('time').gentime(), this.key('description').octstr() ) }) ``` Encode data: ```js const output = Human.encode({ firstName: 'Thomas', lastName: 'Anderson', age: 28, gender: 'male', bio: [ { time: new Date('31 March 1999').getTime(), description: 'freedom of mind' } ] }, 'der') ``` Decode data: ```js const human = Human.decode(output, 'der') console.log(human) /* { firstName: , lastName: , age: 28n, gender: 'male', bio: [ { time: 922820400000, description: } ] } */ ``` ### Partial decode Its possible to parse data without stopping on first error. In order to do it, you should call: ```js const human = Human.decode(output, 'der', { partial: true }) console.log(human) /* { result: { ... }, errors: [ ... ] } */ ```