isValid method
Verify the structure of an address
Implementation
bool isValid() {
if (address == null) {
return false;
}
if (address!.length != kAddressLength) {
return false;
}
if (address!.length >= 4 && isHex(address!)) {
final curveType = address!.substring(0, 2);
if (curveType != '00' && curveType != '01' && curveType != '02') {
return false;
}
var digestSize = 0;
switch (address!.substring(2, 4)) {
/// 00 = sha256
case '00':
digestSize = Digest('SHA-256').digestSize;
break;
/// 01 = sha512
case '01':
digestSize = Digest('SHA-512').digestSize;
break;
/// 02 = sha3-256
case '02':
digestSize = Digest('SHA3-256').digestSize;
break;
/// 03 = sha3-512
case '03':
digestSize = Digest('SHA3-512').digestSize;
break;
/// 04 = blake2b
case '04':
digestSize = Digest('Blake2b').digestSize;
break;
default:
return false;
}
try {
if (Uint8List.fromList(hexToUint8List(address!.substring(4))).length !=
digestSize) {
return false;
} else {
return true;
}
} catch (e) {
return false;
}
} else {
return false;
}
}