derivePublicKey method

PublicKey derivePublicKey(
  1. int index
)

BIP32 public child derivation:

I  = HMAC-SHA512(key=chainCode, data=pubKey || index_be32)
IL = I[0..31]
child = parent + IL*G

Implementation

PublicKey derivePublicKey(int index) {
  final pubKeyBytes = notificationPublicKey;
  final data = Uint8List(37);
  data.setRange(0, 33, pubKeyBytes);
  data.buffer.asByteData().setUint32(33, index, Endian.big);

  final I = hmacSha512(chainCode, data);
  final IL = I.sublist(0, 32);

  final parentPubKey = PublicKey(pubKeyBytes);
  final childPubKey = parentPubKey.tweak(IL);
  if (childPubKey == null) {
    throw StateError('Invalid child key derivation at index $index');
  }
  return childPubKey;
}