deriveOutputKey static method

Uint8List deriveOutputKey({
  1. required Uint8List txSecretKey,
  2. required Uint8List recipientViewKey,
  3. required Uint8List recipientSpendKey,
  4. required int outputIndex,
})

Implementation

static Uint8List deriveOutputKey({
  required Uint8List txSecretKey,
  required Uint8List recipientViewKey,
  required Uint8List recipientSpendKey,
  required int outputIndex,
}) {
  final ed = VaultKeeper.vault.ed25519;

  // Cofactor-cleared ECDH: 8 * (r * viewKey)
  final rV = ed.scalarMult(txSecretKey, recipientViewKey);
  final shared = ed.scalarMult(_cofactor8, rV);

  final hs = _hashToScalar(ed, shared, outputIndex);
  final hsG = ed.scalarMultBase(hs);
  final outputPoint = ed.pointAdd(hsG, recipientSpendKey);
  return outputPoint;
}