asn1-ts
Version:
ASN.1 encoding and decoding, including BER, CER, and DER.
131 lines (130 loc) • 6.85 kB
text/typescript
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;
}