encodeBigInt method Null safety

Uint8List encodeBigInt(
  1. BigInt? number
)

Encode a BigInt into bytes using big-endian encoding. It encodes the integer to a minimal twos-compliment integer as defined by ASN.1 From pointycastle/src/utils

Implementation

static Uint8List encodeBigInt(BigInt? number) {
  if (number == BigInt.zero) {
    return Uint8List.fromList([0]);
  }

  int needsPaddingByte;
  int rawSize;

  if (number! > BigInt.zero) {
    rawSize = (number.bitLength + 7) >> 3;
    needsPaddingByte = ((number >> (rawSize - 1) * 8) & BigInt.from(0x80)) ==
            BigInt.from(0x80)
        ? 1
        : 0;
  } else {
    needsPaddingByte = 0;
    rawSize = (number.bitLength + 8) >> 3;
  }

  final size = rawSize + needsPaddingByte;
  var result = Uint8List(size);
  for (var i = 0; i < rawSize; i++) {
    result[size - i - 1] = (number! & BigInt.from(0xff)).toInt();
    number = number >> 8;
  }
  return result;
}