checkKasAddress static method

bool checkKasAddress(
  1. String address,
  2. String prefix
)

Implementation

static bool checkKasAddress(String address, String prefix) {
  try {
    final eight0 = [0, 0, 0, 0, 0, 0, 0, 0];
    List<int> prefixDecode = [];
    switch (prefix) {
      case KAS_PREFIX:
        if (!address.startsWith(KAS_PREFIX)) return false;
        prefixDecode = KAS_DECODE;
        break;
      case KLS_PREFIX:
        if (!address.startsWith(KLS_PREFIX)) return false;
        prefixDecode = KLS_DECODE;
        break;
      default:
        return false;
    }
    // delete prefix
    final addressData = address.split(':').last;
    final addressBytes = Base32.decode(addressData);
    // split address
    final payloadData = addressBytes.sublist(0, addressBytes.length - 8);
    final decodedPolymodData = addressBytes.sublist(addressBytes.length - 8);
    // compute checksum
    final checksumData = [...prefixDecode, ...payloadData, ...eight0];
    final newPolymodData = checksumToArray(polymod(checksumData));
    // check
    for (int i = 0; i < 8; i++) {
      if (newPolymodData[i] != decodedPolymodData[i]) {
        return false;
      }
    }
    return true;
  } catch (error) {
    return false;
  }
}