derive method
The magic of parent-to-child key-pair derivation happens here. If a parent signing key is provided, a child signing key is generated. If a parent verify key is provided and the index is NOT hardened, then a child verify key is also included. If hardened and no signingKey is provied, it returns an empty pair (i.e. error condition).
Implementation
Bip32KeyPair derive({required Bip32KeyPair keys, required int index}) {
// computes a child extended private key from the parent extended private key.
Bip32SigningKey? signingKey = keys.signingKey != null
? _derivator.ckdPriv(keys.signingKey!, index) as Bip32SigningKey
: null;
Bip32VerifyKey? verifyKey = isHardened(index)
? null
: keys.verifyKey != null
? _derivator.ckdPub(keys.verifyKey!, index) as Bip32VerifyKey
: _derivator.neuterPriv(signingKey!) as Bip32VerifyKey;
return Bip32KeyPair(signingKey: signingKey, verifyKey: verifyKey);
}