derive method

Bip32KeyPair derive({
  1. required Bip32KeyPair keys,
  2. required int index,
})

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);
}