WIF.fromString constructor
Decodes a wif string into the private key and version.
WifVersionMismatch is thrown if the specified version does not match
the WIF. InvalidWif is thrown if the base58 is valid but the data
doesn't meet the correct format. If no version is specified, any version
will be accepted. May throw InvalidBase58 or InvalidBase58Checksum
when decoding the WIF.
Implementation
factory WIF.fromString(String wif, { int? version }) {
final data = base58Decode(wif);
// Determine if the data meets the compressed or uncompressed formats
final compressed = data.length == 34;
if (!compressed && data.length != 33) throw InvalidWif();
if (compressed && data.last != 1) throw InvalidWif();
final decodedVersion = data.first;
if (version != null && version != decodedVersion) {
throw WifVersionMismatch();
}
final wifObj = WIF(
privkey: ECPrivateKey(data.sublist(1, 33), compressed: compressed),
version: decodedVersion,
);
wifObj._wifCache = wif;
return wifObj;
}