forked from olcxjas-softworks/LarpixClient
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
# `@peculiar/asn1-schema`
|
|
|
|
[](https://github.com/PeculiarVentures/asn1-schema/blob/master/packages/schema/LICENSE)
|
|
[](https://badge.fury.io/js/%40peculiar%2Fasn1-schema)
|
|
|
|
[](https://nodei.co/npm/@peculiar/asn1-schema/)
|
|
|
|
Decorators and helper APIs for declaring ASN.1 schemas in TypeScript.
|
|
|
|
This is the core package used by the schema modules in this repository. It lets you describe DER structures with decorators and convert them with `AsnConvert`, `AsnParser`, and `AsnSerializer`.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
npm install @peculiar/asn1-schema
|
|
```
|
|
|
|
## Overview
|
|
|
|
Abstract Syntax Notation One (ASN.1) is widely used across X.509, PKCS, CMS, OCSP, and related standards. This package keeps those mappings declarative and type-friendly by attaching schema metadata directly to classes.
|
|
|
|
## TypeScript Example
|
|
|
|
```ts
|
|
import {
|
|
AsnConvert,
|
|
AsnProp,
|
|
AsnPropTypes,
|
|
AsnType,
|
|
AsnTypeTypes,
|
|
} from "@peculiar/asn1-schema";
|
|
|
|
@AsnType({ type: AsnTypeTypes.Sequence })
|
|
class BasicConstraints {
|
|
@AsnProp({ type: AsnPropTypes.Boolean, defaultValue: false })
|
|
public cA = false;
|
|
}
|
|
|
|
const basicConstraints = new BasicConstraints();
|
|
basicConstraints.cA = true;
|
|
|
|
const encoded = AsnConvert.serialize(basicConstraints);
|
|
const decoded = AsnConvert.parse(encoded, BasicConstraints);
|
|
|
|
console.log(decoded.cA);
|
|
```
|
|
|
|
## Related Links
|
|
|
|
- [Decorators overview](https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841)
|
|
- [ASN.1 playground](http://lapo.it/asn1js/)
|