ledgerMaster static method
derive path for dot ed25519.
Implementation
static Uint8List ledgerMaster(Uint8List seed, String path) {
final chainCode = Hmac(sha256, utf8.encode(ED25519_CRYPTO))
.convert(Uint8List.fromList([1, ...seed]))
.bytes;
List<int> priv = [];
while (priv.length == 0 || (priv[31] & 32) != 0) {
List<int> convertBytes = priv;
if (priv.length == 0) {
convertBytes = seed;
}
priv =
Hmac(sha512, utf8.encode(ED25519_CRYPTO)).convert(convertBytes).bytes;
}
priv[0] &= 248;
priv[31] &= 127;
priv[31] |= 64;
var result = Uint8List.fromList([...priv, ...chainCode]);
List<String> segments = path.split('/');
segments = segments.sublist(1);
for (String segment in segments) {
int index = int.parse(segment.replaceAll("'", ""));
result = _ledgerDerivePrivate(result, index);
}
return dynamicToUint8List(result.sublist(0, 32));
}