I am trying to extract the signatures from a transaction. What is the best way to do this given a com.google.bitcoin.core.Transaction
object I just received from the network?
1 Answer
This works for P2PK, and P2PKH, but multisig will not work.
int index = (the index you want);
List<TransactionInput> inputs = Transaction.getInputs()
TransactionInput input = inputs.get(index);
Script scriptSig = input.getScriptSig();
List<ScriptChunk> signature_and_pubkey = scriptSig.getChunks();
ScriptChunk sig_chunk = signature_and_pubkey.get(0);
bytes[] sig_bytes = sig_chunk.data;
If you want a TransactionSignature object instead of raw bytes:
TransactionSignature ts = TransactionSignature.decodeFromBitcoin(sig_bytes, false)
-
how can I get a
TransactionSignature
object from this? I triedcom.google.bitcoin.crypto.TransactionSignature.decodeFromBitcoin(sig_chunk.data, false)
but sometimes it gives an error.– Jus12Feb 23, 2015 at 18:16 -
-
Here is the error I got (happens in few cases only):
java.lang.RuntimeException: java.io.IOException: DER length more than 4 bytes: 112 at com.google.bitcoin.core.ECKey$ECDSASignature.decodeFromDER(ECKey.java:358)
– Jus12Feb 23, 2015 at 18:23