Skip to content
This repository was archived by the owner on Apr 3, 2019. It is now read-only.

Commit 559520a

Browse files
Braydon Fullerbraydonf
authored andcommitted
Bitcoin core tests for witness uncompressed public keys
1 parent 2bc76b1 commit 559520a

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

test/transaction/transaction.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,6 +1533,91 @@ describe('Transaction', function() {
15331533
check = interpreter.verify(scriptSig, scriptPubkey, input1, 0, flags, witnesses, satoshis);
15341534
check.should.equal(true);
15351535
});
1536+
it('will verify witness pay-to-uncompressed-pubkey (v1) part 1', function() {
1537+
var flags;
1538+
var check;
1539+
var interpreter;
1540+
var output1 = bitcore.Transaction('01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01010000000000000016001449ca7f5980799857e4cc236a288b95dc7e647de200000000');
1541+
var input1 = bitcore.Transaction('010000000001014cc98b43a012d8cb56cee7e2011e041c23a622a69a8b97d6f53144e5eb319d1c0000000000ffffffff010100000000000000000248304502210085fb71eecc4b65fd31102bc93f46ec564fce6d22f749ad2d9b4adf4d9477c52602204c4fb00a48bafb4f1c0d7a397d3e0ae12bb8ae394d8b5632e894eafccabf4b160141047dc77183e8fef00c7839a272c4dc2c9b25fb109c0eebe74b27fa98cfd6fa83c76c44a145827bf880162ff7ae48574b5d42595601eee5b8733f1507f028ba401000000000');
1542+
var input2 = bitcore.Transaction('0100000000010170ccaf8888099cee3cb869e768f6f24a85838a936cfda787186b179392144cbc0000000000ffffffff010100000000000000000247304402206667f8681ecdc66ad160ff4916c6f3e2946a1eda9e031535475f834c11d5e07c022064360fce49477fa0898b3928eb4503ca71043c67df9229266316961a6bbcc2ef014104a8288183cc741b814a286414ee5fe81ab189ecae5bb1c42794b270c33ac9702ab279fd97a5ed87437659b45197bbd3a87a449fa5b244a6941303683aa68bd11e00000000');
1543+
var scriptPubkey = output1.outputs[0].script;
1544+
var scriptSig = input1.inputs[0].script;
1545+
var witnesses = input1.inputs[0].getWitnesses();
1546+
var satoshis = 1;
1547+
1548+
interpreter = new Interpreter();
1549+
flags = Interpreter.SCRIPT_VERIFY_P2SH;
1550+
check = interpreter.verify(scriptSig, scriptPubkey, input1, 0, flags, witnesses, satoshis);
1551+
check.should.equal(true);
1552+
1553+
interpreter = new Interpreter();
1554+
flags = Interpreter.SCRIPT_VERIFY_P2SH | Interpreter.SCRIPT_VERIFY_WITNESS;
1555+
check = interpreter.verify(scriptSig, scriptPubkey, input1, 0, flags, witnesses, satoshis);
1556+
check.should.equal(true);
1557+
});
1558+
it('will verify witness pay-to-uncompressed-pubkey (v1) part 2', function() {
1559+
var flags;
1560+
var check;
1561+
var interpreter;
1562+
var output1 = bitcore.Transaction('01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01010000000000000016001449ca7f5980799857e4cc236a288b95dc7e647de200000000');
1563+
var input2 = bitcore.Transaction('0100000000010170ccaf8888099cee3cb869e768f6f24a85838a936cfda787186b179392144cbc0000000000ffffffff010100000000000000000247304402206667f8681ecdc66ad160ff4916c6f3e2946a1eda9e031535475f834c11d5e07c022064360fce49477fa0898b3928eb4503ca71043c67df9229266316961a6bbcc2ef014104a8288183cc741b814a286414ee5fe81ab189ecae5bb1c42794b270c33ac9702ab279fd97a5ed87437659b45197bbd3a87a449fa5b244a6941303683aa68bd11e00000000');
1564+
var scriptPubkey = output1.outputs[0].script;
1565+
var scriptSig = input2.inputs[0].script;
1566+
var witnesses = input2.inputs[0].getWitnesses();
1567+
var satoshis = 1;
1568+
1569+
interpreter = new Interpreter();
1570+
flags = Interpreter.SCRIPT_VERIFY_P2SH;
1571+
check = interpreter.verify(scriptSig, scriptPubkey, input2, 0, flags, witnesses, satoshis);
1572+
check.should.equal(true);
1573+
1574+
interpreter = new Interpreter();
1575+
flags = Interpreter.SCRIPT_VERIFY_P2SH | Interpreter.SCRIPT_VERIFY_WITNESS;;
1576+
check = interpreter.verify(scriptSig, scriptPubkey, input2, 0, flags, witnesses, satoshis);
1577+
check.should.equal(false);
1578+
});
1579+
it('will verify p2sh witness pay-to-uncompressed-pubkey (v1) part 1', function() {
1580+
var flags;
1581+
var check;
1582+
var interpreter;
1583+
var output1 = bitcore.Transaction('01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01010000000000000017a9147b615f35c476c8f3c555b4d52e54760b2873742f8700000000');
1584+
var input1 = bitcore.Transaction('01000000000101160aa337bd325875674904f80d706b4d02cec9888eb2dbae788e18ed01f7712d0000000017160014eff6eebd0dcd3923ca3ab3ea57071fa82ea1faa5ffffffff010100000000000000000247304402205c87348896d3a9de62b1a646c29c4728bec62e384fa16167e302357883c04134022024a98e0fbfde9c24528fbe8f36e05a19a6f37dea16822b80259fcfc8ab2358fb0141048b4e234c057e32d2304697b4d2273679417355bb6bf2d946add731de9719d6801892b6154291ce2cf45c106a6d754c76f81e4316187aa54938af224d9eddb36400000000');
1585+
var scriptPubkey = output1.outputs[0].script;
1586+
var scriptSig = input1.inputs[0].script;
1587+
var witnesses = input1.inputs[0].getWitnesses();
1588+
var satoshis = 1;
1589+
1590+
interpreter = new Interpreter();
1591+
flags = Interpreter.SCRIPT_VERIFY_P2SH;
1592+
check = interpreter.verify(scriptSig, scriptPubkey, input1, 0, flags, witnesses, satoshis);
1593+
check.should.equal(true);
1594+
1595+
interpreter = new Interpreter();
1596+
flags = Interpreter.SCRIPT_VERIFY_P2SH | Interpreter.SCRIPT_VERIFY_WITNESS;;
1597+
check = interpreter.verify(scriptSig, scriptPubkey, input1, 0, flags, witnesses, satoshis);
1598+
check.should.equal(true);
1599+
});
1600+
it('will verify p2sh witness pay-to-uncompressed-pubkey (v1) part 2', function() {
1601+
var flags;
1602+
var check;
1603+
var interpreter;
1604+
var output1 = bitcore.Transaction('01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff00ffffffff01010000000000000017a9147b615f35c476c8f3c555b4d52e54760b2873742f8700000000');
1605+
var input2 = bitcore.Transaction('01000000000101eefb67109c118e958d81f3f98638d48bc6c14eae97cedfce7c397eabb92b4e320000000017160014eff6eebd0dcd3923ca3ab3ea57071fa82ea1faa5ffffffff010100000000000000000247304402200ed4fa4bc8fbae2d1e88bbe8691b21233c23770e5eebf9767853de8579f5790a022015cb3f3dc88720199ee1ed5a9f4cf3186a29a0c361512f03b648c9998b3da7b4014104dfaee8168fe5d1ead2e0c8bb12e2d3ba500ade4f6c4983f3dbe5b70ffeaca1551d43c6c962b69fb8d2f4c02faaf1d4571aae7bbd209df5f3b8cd153e60e1627300000000');
1606+
var scriptPubkey = output1.outputs[0].script;
1607+
var scriptSig = input2.inputs[0].script;
1608+
var witnesses = input2.inputs[0].getWitnesses();
1609+
var satoshis = 1;
1610+
1611+
interpreter = new Interpreter();
1612+
flags = Interpreter.SCRIPT_VERIFY_P2SH;
1613+
check = interpreter.verify(scriptSig, scriptPubkey, input2, 0, flags, witnesses, satoshis);
1614+
check.should.equal(true);
1615+
1616+
interpreter = new Interpreter();
1617+
flags = Interpreter.SCRIPT_VERIFY_P2SH | Interpreter.SCRIPT_VERIFY_WITNESS;;
1618+
check = interpreter.verify(scriptSig, scriptPubkey, input2, 0, flags, witnesses, satoshis);
1619+
check.should.equal(false);
1620+
});
15361621
});
15371622
});
15381623
describe('signing', function() {

0 commit comments

Comments
 (0)