base58Decode function

Uint8List base58Decode(
  1. String b58
)

Decodes a checksumed base58 string. This will throw a InvalidBase58 exception if the base58 encoding is invalid, or InvalidBase58Checksum if the checksum is wrong.

Implementation

Uint8List base58Decode(String b58) {

  late Uint8List fullData;
  try {
    fullData = _codec.decode(b58);
  } on Exception {
    throw InvalidBase58();
  }

  // Check room for checksum
  if (fullData.length < 4) throw InvalidBase58();

  final data = fullData.sublist(0, fullData.length-4);
  final expChecksum = fullData.sublist(fullData.length-4);
  final actualChecksum = _checksum(data);

  if (
    expChecksum[0] != actualChecksum[0]
    || expChecksum[1] != actualChecksum[1]
    || expChecksum[2] != actualChecksum[2]
    || expChecksum[3] != actualChecksum[3]
  ) {
    throw InvalidBase58Checksum();
  }

  return data;

}