UNPKG

asn1-ts

Version:

ASN.1 encoding and decoding, including BER, CER, and DER.

131 lines (130 loc) 6.85 kB
import { ASN1Construction, ASN1TagClass } from "./values.mjs"; import type Byteable from "./interfaces/Byteable.mjs"; import type Named from "./interfaces/Named.mjs"; import type Long from "./interfaces/Long.mjs"; import type CharacterString from "./types/CharacterString.mjs"; import type Elementable from "./interfaces/Elementable.mjs"; import type { BOOLEAN, INTEGER, BIT_STRING, OCTET_STRING, OBJECT_IDENTIFIER, ObjectDescriptor, EXTERNAL, REAL, ENUMERATED, EMBEDDED_PDV, UTF8String, RELATIVE_OID, SEQUENCE, SET, GraphicString, NumericString, VisibleString, PrintableString, TeletexString, GeneralString, UniversalString, VideotexString, BMPString, IA5String, UTCTime, GeneralizedTime, TIME, DATE, TIME_OF_DAY, DATE_TIME, DURATION, OID_IRI, RELATIVE_OID_IRI } from "./macros.mjs"; import { Buffer } from "node:buffer"; export default abstract class ASN1Element implements Byteable, Elementable, Named, Long { recursionCount: number; protected static readonly nestingRecursionLimit: number; name: string; tagClass: ASN1TagClass; construction: ASN1Construction; private _tagNumber; get tagNumber(): number; set tagNumber(value: number); abstract get value(): Uint8Array; abstract set value(v: Uint8Array); abstract construct(els: ASN1Element[]): void; abstract tagAndLengthBytes(): Uint8Array; abstract toBuffers(): Uint8Array[]; tagLength(): number; abstract lengthLength(valueLength?: number): number; abstract valueLength(): number; abstract tlvLength(): number; toBytes(): Buffer; get length(): number; abstract fromBytes(bytes: Uint8Array): number; abstract set boolean(value: BOOLEAN); abstract get boolean(): BOOLEAN; abstract set integer(value: INTEGER); abstract get integer(): INTEGER; abstract set bitString(value: BIT_STRING); abstract get bitString(): BIT_STRING; abstract set octetString(value: OCTET_STRING); abstract get octetString(): OCTET_STRING; abstract set objectIdentifier(value: OBJECT_IDENTIFIER); abstract get objectIdentifier(): OBJECT_IDENTIFIER; abstract set objectDescriptor(value: ObjectDescriptor); abstract get objectDescriptor(): ObjectDescriptor; abstract set external(value: EXTERNAL); abstract get external(): EXTERNAL; abstract set real(value: REAL); abstract get real(): REAL; abstract set enumerated(value: ENUMERATED); abstract get enumerated(): ENUMERATED; abstract set embeddedPDV(value: EMBEDDED_PDV); abstract get embeddedPDV(): EMBEDDED_PDV; abstract set utf8String(value: UTF8String); abstract get utf8String(): UTF8String; abstract set relativeObjectIdentifier(value: RELATIVE_OID); abstract get relativeObjectIdentifier(): RELATIVE_OID; abstract set time(value: TIME); abstract get time(): TIME; abstract set sequence(value: SEQUENCE<ASN1Element>); abstract get sequence(): SEQUENCE<ASN1Element>; abstract set set(value: SET<ASN1Element>); abstract get set(): SET<ASN1Element>; abstract set sequenceOf(value: SEQUENCE<ASN1Element>); abstract get sequenceOf(): SEQUENCE<ASN1Element>; abstract set setOf(value: SET<ASN1Element>); abstract get setOf(): SET<ASN1Element>; abstract set numericString(value: NumericString); abstract get numericString(): NumericString; abstract set printableString(value: PrintableString); abstract get printableString(): PrintableString; abstract set teletexString(value: TeletexString); abstract get teletexString(): TeletexString; abstract set videotexString(value: VideotexString); abstract get videotexString(): VideotexString; abstract set ia5String(value: IA5String); abstract get ia5String(): IA5String; abstract set utcTime(value: UTCTime); abstract get utcTime(): UTCTime; abstract set generalizedTime(value: GeneralizedTime); abstract get generalizedTime(): GeneralizedTime; abstract set graphicString(value: GraphicString); abstract get graphicString(): GraphicString; abstract set visibleString(value: VisibleString); abstract get visibleString(): VisibleString; abstract set generalString(value: GeneralString); abstract get generalString(): GeneralString; abstract set universalString(value: UniversalString); abstract get universalString(): UniversalString; abstract set characterString(value: CharacterString); abstract get characterString(): CharacterString; abstract set bmpString(value: BMPString); abstract get bmpString(): BMPString; abstract set date(value: DATE); abstract get date(): DATE; abstract set timeOfDay(value: TIME_OF_DAY); abstract get timeOfDay(): TIME_OF_DAY; abstract set dateTime(value: DATE_TIME); abstract get dateTime(): DATE_TIME; abstract set duration(value: DURATION); abstract get duration(): DURATION; abstract set oidIRI(value: OID_IRI); abstract get oidIRI(): OID_IRI; abstract set relativeOIDIRI(value: RELATIVE_OID_IRI); abstract get relativeOIDIRI(): RELATIVE_OID_IRI; private validateSize; private validateRange; sizeConstrainedBitString(min: number, max?: number): BIT_STRING; sizeConstrainedOctetString(min: number, max?: number): OCTET_STRING; sizeConstrainedObjectDescriptor(min: number, max?: number): ObjectDescriptor; sizeConstrainedUTF8String(min: number, max?: number): UTF8String; sizeConstrainedSequenceOf(min: number, max?: number): SEQUENCE<ASN1Element>; sizeConstrainedSetOf(min: number, max?: number): SET<ASN1Element>; sizeConstrainedNumericString(min: number, max?: number): NumericString; sizeConstrainedPrintableString(min: number, max?: number): PrintableString; sizeConstrainedTeletexString(min: number, max?: number): TeletexString; sizeConstrainedVideotexString(min: number, max?: number): VideotexString; sizeConstrainedIA5String(min: number, max?: number): IA5String; sizeConstrainedGraphicString(min: number, max?: number): GraphicString; sizeConstrainedVisibleString(min: number, max?: number): VisibleString; sizeConstrainedGeneralString(min: number, max?: number): GeneralString; sizeConstrainedUniversalString(min: number, max?: number): UniversalString; sizeConstrainedBMPString(min: number, max?: number): BMPString; rangeConstrainedInteger(min: bigint, max?: bigint): INTEGER; rangeConstrainedReal(min: bigint, max?: bigint): REAL; abstract deconstruct(dataType: string): Uint8Array; validateTag(permittedClasses: ASN1TagClass[], permittedConstruction: ASN1Construction[], permittedNumbers: number[]): number; abstract get inner(): ASN1Element; abstract get components(): ASN1Element[]; toElement(): ASN1Element; fromElement(el: ASN1Element): void; toString(): string; toJSON(recurse?: boolean): unknown; }