/** * @file der.ts * @description Minimal ASN.1 DER encoder/decoder for X.509 certificate generation. * @module crypto/der * * Implements just enough of ITU-T X.690 DER to build and read the structures * WebRTC needs: self-signed ECDSA certificates and SubjectPublicKeyInfo. * * All encoders return Buffers. The TLV length is always encoded in the * minimal (definite, shortest-form) representation required by DER. */ export declare const TAG: Readonly<{ BOOLEAN: 1; INTEGER: 2; BIT_STRING: 3; OCTET_STRING: 4; NULL: 5; OID: 6; UTF8_STRING: 12; PRINTABLE_STRING: 19; IA5_STRING: 22; UTC_TIME: 23; GENERALIZED_TIME: 24; SEQUENCE: 48; SET: 49; }>; /** * Encode a DER length in definite, shortest form. * @param {number} len * @returns {Buffer} */ export declare function encodeLength(len: number): Buffer; /** * Wrap a body in a TLV with the given tag. * @param {number} tag * @param {Buffer} body * @returns {Buffer} */ export declare function tlv(tag: number, body: Buffer): Buffer; /** * Encode an unsigned big-endian integer (from a Buffer) as a DER INTEGER, * adding a leading 0x00 when the high bit is set so it stays positive. * @param {Buffer} buf - Big-endian magnitude. * @returns {Buffer} */ export declare function encodeIntegerFromBuffer(buf: Buffer): Buffer; /** * Encode a small non-negative JS integer as a DER INTEGER. * @param {number} value * @returns {Buffer} */ export declare function encodeInteger(value: number): Buffer; /** * Encode an OBJECT IDENTIFIER from its dotted-decimal string. * @param {string} oid - e.g. "1.2.840.10045.2.1" * @returns {Buffer} */ export declare function encodeOID(oid: string): Buffer; /** * Encode a BIT STRING with zero unused bits. * @param {Buffer} data * @returns {Buffer} */ export declare function encodeBitString(data: Buffer): Buffer; /** * Encode an OCTET STRING. * @param {Buffer} data * @returns {Buffer} */ export declare function encodeOctetString(data: Buffer): Buffer; /** * Encode a SEQUENCE from already-encoded components. * @param {Buffer[]} components * @returns {Buffer} */ export declare function encodeSequence(components: Buffer[]): Buffer; /** * Encode a SET from already-encoded components. * @param {Buffer[]} components * @returns {Buffer} */ export declare function encodeSet(components: Buffer[]): Buffer; /** * Encode NULL. * @returns {Buffer} */ export declare function encodeNull(): Buffer; /** * Encode a UTF8String. * @param {string} str * @returns {Buffer} */ export declare function encodeUTF8String(str: string): Buffer; /** * Encode a context-specific [n] explicit wrapper (constructed). * @param {number} n - context tag number * @param {Buffer} body * @returns {Buffer} */ export declare function encodeExplicit(n: number, body: Buffer): Buffer; /** * Encode an X.509 time. Uses UTCTime for years < 2050, else GeneralizedTime, * per RFC 5280 ยง4.1.2.5. * @param {Date} date * @returns {Buffer} */ export declare function encodeTime(date: Date): Buffer;