bitcoinj/bitcoinj — pull request #173 by troggy (2014-08-15 16:31:31+00:00)
Title: Make LocalTransactionSigner to sign P2SH inputs.

The idea is that LocalTransactionSigner should be the only signer using
local keys to sign, so that other signers need to care only about "external"
signatures.

Quick outline of changes:
Transaction inputs are now prepopulated with empty scriptSig. Each signer
is expected to update this scriptSig with a signature at a proper place.
This is a controversial solution. Another option is to have signatures collected
in PendingTransaction object (see below) and populate input scripts in the end.
I'm not sure personally which solution is better.

There is a new method in RedeemData to locate index of the key/signature
within scriptSig/program. To generalize an above approach for all supported types
of inputs, RedeemData class can now represent data for any type of input. For
pay-to-address and pay-to-pubkey inputs it is expected to contain single
key and CHECKSIG program.

Signers now accept ProposedTransaction object that can carry additional
metadata shared between signers. For now it shares derivation path of the
signing key.

To preserve the dummy sig feature, a new flag was introduced in a SendRequest.
It specifies whether to fill empty sigs with dummies during tx completion
or not. Default value is true (for backward compatibility).

There is a CustomTransactionSigner class that may be used as a base for
simple third-party signers (or may be not). It is used in a unit test which
could be treated as a usage example.