deriveOutputPrivateKey static method

Uint8List deriveOutputPrivateKey({
  1. required Uint8List privateSpendKey,
  2. required Uint8List privateViewKey,
  3. required Uint8List txPublicKey,
  4. required int outputIndex,
})

x = Hs(viewKey * R || i) + spendKey (mod l)

Implementation

static Uint8List deriveOutputPrivateKey({
  required Uint8List privateSpendKey,
  required Uint8List privateViewKey,
  required Uint8List txPublicKey,
  required int outputIndex,
}) {
  final ed = VaultKeeper.vault.ed25519;

  final aR = ed.scalarMult(privateViewKey, txPublicKey);
  final shared = ed.scalarMult(_cofactor8, aR);

  final hs = _hashToScalar(ed, shared, outputIndex);
  return ed.scalarAdd(hs, privateSpendKey);
}