UNPKG

asn1-ts

Version:

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

37 lines (36 loc) 1.14 kB
import * as errors from "../errors.mjs"; import { MIN_SINT_32, MAX_SINT_32 } from "../values.mjs"; export default function encodeBigEndianSignedInteger(value) { if (value < MIN_SINT_32) { throw new errors.ASN1OverflowError(`Number ${value} too small to be encoded as a big-endian signed integer.`); } if (value > MAX_SINT_32) { throw new errors.ASN1OverflowError(`Number ${value} too big to be encoded as a big-endian signed integer.`); } if (value <= 127 && value >= -128) { return new Uint8Array([ (value & 255), ]); } else if (value <= 32767 && value >= -32768) { return new Uint8Array([ ((value >> 8) & 255), (value & 255), ]); } else if (value <= 8388607 && value >= -8388608) { return new Uint8Array([ ((value >> 16) & 255), ((value >> 8) & 255), (value & 255), ]); } else { return new Uint8Array([ ((value >> 24) & 255), ((value >> 16) & 255), ((value >> 8) & 255), (value & 255), ]); } }