checkKasAddress static method
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;
}
}