Skip to content

Commit b213fdc

Browse files
olegabrafk11
authored andcommitted
fixes setCheckerCreator always throws
1 parent cbbbf35 commit b213fdc

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/Transaction/Factory/Signer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public function __construct(TransactionInterface $tx, EcAdapterInterface $ecAdap
8787
*/
8888
public function setCheckerCreator(CheckerCreatorBase $checker)
8989
{
90-
if (null === $this->signatureCreator) {
90+
if (count($this->signatureCreator) === 0) {
9191
$this->checkerCreator = $checker;
9292
return $this;
9393
} else {

tests/Transaction/Factory/SignerTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,33 @@ public function testRejectsInvalidSigHashType()
331331
$input->getSigHash(20);
332332
}
333333

334+
public function testSetCheckerCreatorNoInputs()
335+
{
336+
$signer = new Signer((new TxBuilder())
337+
->get(), Bitcoin::getEcAdapter());
338+
$ecAdapter = Bitcoin::getEcAdapter();
339+
$checkerCreator = \BitWasp\Bitcoin\Transaction\Factory\Checker\CheckerCreator::fromEcAdapter($ecAdapter);
340+
$signer->setCheckerCreator($checkerCreator);
341+
}
342+
343+
public function testSetCheckerCreator()
344+
{
345+
$outpoint = new OutPoint(new Buffer('', 32), 0xffffffff);
346+
$txOut = new TransactionOutput(5000000000, ScriptFactory::scriptPubKey()->p2pkh((new Random())->bytes(20)));
347+
$signer = new Signer((new TxBuilder())
348+
->inputs([new TransactionInput($outpoint, new Script())])
349+
->outputs([new TransactionOutput(4900000000, new Script)])
350+
->get(), Bitcoin::getEcAdapter());
351+
$input = $signer->input(0, $txOut);
352+
$ecAdapter = Bitcoin::getEcAdapter();
353+
$checkerCreator = \BitWasp\Bitcoin\Transaction\Factory\Checker\CheckerCreator::fromEcAdapter($ecAdapter);
354+
355+
$this->expectException(SignerException::class);
356+
$this->expectExceptionMessage("Cannot change CheckerCreator after inputs have been parsed");
357+
358+
$signer->setCheckerCreator($checkerCreator);
359+
}
360+
334361
public function testDiscouragesInvalidKeysInScripts()
335362
{
336363
$caught = false;

0 commit comments

Comments
 (0)