UNPKG

asn1-ts

Version:

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

24 lines (23 loc) 836 B
import * as errors from "../errors.mjs"; import { MIN_UINT_32, MAX_UINT_32 } from "../values.mjs"; import { Buffer } from "node:buffer"; export default function encodeUnsignedBigEndianInteger(value) { if (value < MIN_UINT_32) { throw new errors.ASN1OverflowError(`Number ${value} too small to be encoded as a big-endian unsigned integer.`); } if (value > MAX_UINT_32) { throw new errors.ASN1OverflowError(`Number ${value} too big to be encoded as a big-endian unsigned integer.`); } const bytes = Buffer.alloc(4); bytes.writeUInt32BE(value); let startOfNonPadding = 0; for (let i = 0; i < bytes.length - 1; i++) { if (bytes[i] === 0x00) { startOfNonPadding++; } else { break; } } return bytes.subarray(startOfNonPadding); }