Commit graph

346 commits

Author SHA1 Message Date
Daniel Cousens 1d0fd3e9a4 TxBuilder: add more failing cases and error handling 2014-08-31 14:43:35 +10:00
Daniel Cousens e1479b6fa5 scripts: add error for >n signatures with multisig 2014-08-30 13:13:12 +10:00
Daniel Cousens 1c744cfa5a TxBuilder: add failing test for non-zero vin inputs 2014-08-30 12:09:31 +10:00
Daniel Cousens f9fed3c815 TxBuilder: adds fromTransaction impl. and basic tests 2014-08-18 08:54:46 +10:00
Daniel Cousens 31ea956e8e TxBuilder: add invalid nulldata case 2014-08-18 08:54:45 +10:00
Daniel Cousens d0ac9b405a tests: add TxBuilder pubKey test fixture 2014-08-18 08:54:45 +10:00
Daniel Cousens 36b225a3df TxBuilder: use data fixtures for invalid tests 2014-08-18 08:54:45 +10:00
Daniel Cousens bcbcd58964 TxBuilder: Initial commit and tests 2014-08-18 08:54:45 +10:00
Daniel Cousens 52689fc98b tests: adds r = s = -n ecdsa verify test case 2014-07-30 14:47:21 +10:00
Daniel Cousens 5657dcf2aa ecdsa: add improved test coverage for recoverPubKey 2014-07-29 23:45:50 +10:00
Daniel Cousens be3ce88a3a ecdsa: enforce positive integers 2014-07-29 23:45:25 +10:00
Daniel Cousens 13c2d377e7 package: use bs58check 2014-07-02 14:37:32 +10:00
Wei Lu d9e240bbb1 Merge pull request #224 from dcousens/classify
Script classification fixes
2014-06-29 12:05:39 -07:00
Daniel Cousens 9d2784a441 crypto: add RIPEMD160 tests 2014-06-26 19:26:21 +10:00
Daniel Cousens 759bba5c21 scripts: add falsy classifications and fix multisig 2014-06-26 16:22:29 +10:00
Daniel Cousens 13d41f67e9 Script: adds toASM/fromASM 2014-06-25 15:44:15 +10:00
Daniel Cousens 924ecfb998 scripts: add missing test data 2014-06-25 15:20:28 +10:00
Daniel Cousens 62b6a407a6 scripts: break tests down from type structure 2014-06-24 17:30:37 +10:00
Daniel Cousens 63ce1fdfb2 ECSignature: add missing tests for R,S length 2014-06-22 01:19:19 +10:00
Daniel Cousens 53595784e1 ECSignature: fixes for canonical signatures 2014-06-20 15:52:04 +10:00
Daniel Cousens ebe670475e network: moves tests to fixtures 2014-06-18 17:28:28 +10:00
Daniel Cousens 8eaf44881a Transaction: improve hash length checking + tests 2014-06-17 20:18:39 +10:00
Daniel Cousens 6ea89eeaae Transaction: data driven tests 2014-06-17 11:55:43 +10:00
Daniel Cousens 626f8fb220 ECSignature: add tests for scriptSignature 2014-06-16 15:47:41 +10:00
Daniel Cousens eb3d9a25f7 ecdsa: moved all signature encoding to ECSignature 2014-06-16 15:47:41 +10:00
Daniel Cousens 576d5dfa3f Scripts: move test data to fixtures 2014-06-15 00:40:28 +10:00
Daniel Cousens 4f8040f8d4 ecdsa: add invalid test fixtures for recoverPubKey 2014-06-15 00:40:21 +10:00
Daniel Cousens 38a2475bf5 scripts: adds example multisig inputScript 2014-06-14 01:01:11 +10:00
Daniel Cousens b68b1d5da4 Script: fixes pubKeyInput and adds a test 2014-06-14 00:39:25 +10:00
Daniel Cousens 7e5af52cd1 Transaction: mass rename from SPK/SS to Input/Output
I think it is important we maintain some reasoning that an Input script
is actually a script signature, but in the end, these names are more
coherent and understandable when reasoning with our code.  So I think
its OK we break tradition with bitcoind.
2014-06-13 11:36:31 +10:00
Daniel Cousens be29f50457 Address: fix consistent casing 2014-06-13 10:52:07 +10:00
Daniel Cousens 4ce9015f3b use ecurve instead of custom ec 2014-06-10 17:58:13 +10:00
Daniel Cousens f20ffec8b3 tests: always use for, it testing style 2014-06-07 19:46:06 +10:00
Daniel Cousens 61b4216afb script: fix capitalization in test fixture 2014-06-07 19:34:09 +10:00
Daniel Cousens eb3a6bcb31 all: rename D to d as per SEC convention 2014-06-07 18:24:16 +10:00
Kyle Drake 9b5dfbd865 Merge pull request #206 from dcousens/base58rework
Base58 Check rework
2014-06-04 16:54:18 -07:00
Daniel Cousens 8433d73d06 convert: use Buffers and add more tests 2014-06-04 15:46:40 +10:00
Daniel Cousens d39662e375 Base58check: no longer encodes version separately 2014-06-04 15:23:37 +10:00
Wei Lu 63e6cf987f Merge pull request #203 from dcousens/hdwallettests
HDWallet tests and strict constructor
2014-06-04 13:05:15 +08:00
Daniel Cousens 64e307b13f HDWallet: rename to HDNode 2014-06-03 17:08:42 +10:00
Daniel Cousens 99bb69bf20 HDWallet: moves hardened info to test data more explicitly 2014-06-03 16:12:36 +10:00
Wei Lu c76d3cef37 Merge pull request #202 from dcousens/ecneg
ECKey -D test and light cleanup
2014-06-03 13:38:25 +08:00
Daniel Cousens 938c43649d HDWallet: remove unnecessary Base58 context on fromBuffer tests 2014-06-01 16:48:41 +10:00
Daniel Cousens 260705a24a HDWallet: consistent test data ordering
Also adds network parameter for later moving the network specific tests
to be data driven.
2014-06-01 16:42:01 +10:00
Daniel Cousens 0e61f41a52 HDWallet: fix test data descriptions 2014-06-01 16:41:44 +10:00
Daniel Cousens e8e862f632 HDWallet: adds PubKey validation 2014-05-31 20:40:57 +10:00
Daniel Cousens 759aeb9abc HDWallet: remove repeated assertion 2014-05-31 20:40:57 +10:00
Daniel Cousens c0006c299f HDWallet: use new constructor 2014-05-31 20:40:57 +10:00
Daniel Cousens 58dd86bda1 HDWallet: moves fromBuffer tests to data driven style 2014-05-31 15:44:06 +10:00
Daniel Cousens 2b2081bed9 base58check: buffers only, remove explicit 0
Undefined is treated as zero if it ever gets to this point anyway, so no
value is added by having this default param here.

A test fixture to verify this behaviour is added.
2014-05-31 15:05:33 +10:00
Daniel Cousens 978f0c5406 ECKey: adds test to ensure throws on negative D 2014-05-31 15:05:33 +10:00
Daniel Cousens 5b7873d05b bufferutils: test fixture filename copies parent 2014-05-31 14:24:43 +10:00
Daniel Cousens b9bdf21cbe bufferutils: use verifuint for 64 bit integers
Taken from browserify-buffer.

Also adds a few more tests to assert this is working correctly from both
read and write perspectives.
The assertion in for writePushDataInt in the 32 bit case was
unnecessary as that is handled by buffer.writeUInt32LE anyway.
2014-05-31 14:24:43 +10:00
Daniel Cousens 80da2ed2d5 HDWallet: add fromBase58 exception checks 2014-05-30 19:01:03 +10:00
Daniel Cousens bda1a8321c bufferutils: unrolls tests and adds more 16 bit test fixtures 2014-05-29 16:26:15 +10:00
Daniel Cousens d18f2dba00 bufferutils: add PUSHDATA implementation 2014-05-29 16:06:19 +10:00
Daniel Cousens 36a1d579f8 coretests: reverse inputs for simplicity of testing
To save on us building a hash map with which to check the inputs,
instead I just ensure that the order of the inputs is the same as it is
in the serialized transaction.
2014-05-29 16:06:19 +10:00
Daniel Cousens 12a2dc3cc2 tests: adds Bitcoin core test data 2014-05-29 16:06:19 +10:00
Daniel Cousens 7494a146a6 ECKey: fix exception tests
These weren't broken as such, but they weren't distinctly checking that
the right exception was thrown either.
2014-05-29 16:01:04 +10:00
Daniel Cousens 6cfa729dae ecdsa: fix missing exceptions 2014-05-29 15:42:52 +10:00
Daniel Cousens 2fc69b0834 address/base58check: fix missing exceptions/tests
All the `invalid2` tests have been removed as they were not invalid
base58check.  They were actually valid in some cases.
They will be re-integrated in more specific bitcoin core tests in
relation to Address/ECKey respectively.
2014-05-29 14:43:44 +10:00
Daniel Cousens 8514bbfabd Address: remove Address.Error
By removing Address.Error, we remove a code smell.
This part of the code base was also not under any form of test.
Test data and tests have therefore been added verifying its behaviour in
both Wallet and Address tests.
2014-05-28 13:17:07 +10:00
Wei Lu c5704cfd44 Merge pull request #193 from dcousens/hdtests
HDWallet: move test vectors to fixtures
2014-05-25 02:09:31 +00:00
Kyle Drake dd3e171212 Merge pull request #188 from dcousens/ecsig
ecdsa: always use signature object
2014-05-25 11:57:09 +10:00
Daniel Cousens d2e921fce6 HDWallet: move test vectors to fixtures 2014-05-25 11:48:34 +10:00
Daniel Cousens 08951be66f Script: add createPubKeyScriptPubKey 2014-05-25 10:21:06 +10:00
Daniel Cousens 58fd12e66d ecdsa: always use signature object 2014-05-24 16:25:38 +10:00
Daniel Cousens 37d5147cac ecdsa: add invalid tests for verifyRaw 2014-05-24 14:33:25 +10:00
Daniel Cousens 2114deba95 message: data-driven tests 2014-05-24 13:50:27 +10:00
Daniel Cousens b2351f9026 tests: use JSON fixtures exclusively 2014-05-24 00:52:24 +10:00
Daniel Cousens 0fcda5835e tests: remove bigi test fixture 2014-05-24 00:52:24 +10:00
Daniel Cousens 1c76bdf9c3 ec: add better test vectors for ECPointFp encode/decode
These test vectors were generated internally.
2014-05-18 17:52:49 +10:00
Daniel Cousens 4c7108d561 ecdsa: add serializeSigCompact and tests
This also adds tests for all other ECDSA serialize/parsing functions.
The k, r, s and D values were sourced from test vectors on
https://bitcointalk.org/index.php?topic=285142.40 .

The compact signatures (aka, i values) were generated from bitcoinjslib, but they
are straight forward anyway.
2014-05-18 17:52:49 +10:00
Daniel Cousens b208a6ab78 crypto/ecdsa: moves HmacSHA256 to crypto 2014-05-18 17:52:49 +10:00
Daniel Cousens 6b5990c6e2 message: support alternate networks 2014-05-18 17:51:36 +10:00
Daniel Cousens 10fe4474d1 ECKey: remove *Buffer/*Hex functions
An ECKey is a composition of a private key (D), a public key (Q) and its
compression flag.

These functions gave the impression of serialization of this
composition, when really they only serialized `D`.
They have therefore been removed in favour of always using a sane
serialization format (WIF) that matches the needed behaviour.

If a user needs the previous functionality, simply use `privKey.D.*`
instead of `privKey.*`, as BigInteger supports `*Buffer/*Hex` functions
as expected.
2014-05-18 17:50:10 +10:00
Daniel Cousens bf109f32a9 ECPubKey: improve tests and extract test data to fixtures
The use of fixtures allows for more behavioural driven tests and simpler
addition of more test cases in future.

However, as ECPubKey is just a wrapper around other strenuously tested
modules, the test data is currently limited to testing a subset of the
total wrapper.

This should probably be done better by using mocked out modules instead.
2014-05-18 17:50:10 +10:00
Daniel Cousens 842b075e75 Address: consistent json formatting 2014-05-17 00:09:13 +10:00
Daniel Cousens 39d042d058 syncscript: general cleanup 2014-05-17 00:09:12 +10:00
Daniel Cousens 276a339d60 crypto: HMACSHA512 into crypto and add tests 2014-05-12 10:18:39 +10:00
Daniel Cousens cace8316e4 Script: extract test data to fixture 2014-05-09 12:56:35 +10:00
Daniel Cousens 5e0d38ba54 Address: add Address.*ScriptPubKey and tests
The introduction of these two functions allow for the all the network
related code to be eventually removed from Transaction and Script.

Previously the result for non-standard transactions was undefined
behaviour.  This change mandates that an exception is thrown if a
non-standard transaction is input.
2014-05-08 10:59:58 +10:00
Wei Lu e59f824c3a move fixture sync script into fixtures folder
Also fixes require paths & dev dependency
2014-05-05 13:46:00 +08:00
Daniel Cousens c8bda6dde6 Adds Buffer extensions 2014-05-04 17:30:59 +10:00
Daniel Cousens c3e9d568c5 Adds RFC6979 test vectors and fixes ecdsa.sign/detGenK 2014-04-26 02:17:28 +10:00
Daniel Cousens d8883e8d32 Adds BI.toPaddedBuffer and toBuffer 2014-04-24 07:22:23 +10:00
Kyle Drake 1b66976d92 Merge pull request #146 from dcousens/magictests
MagicHash Tests
2014-04-21 09:39:50 -07:00
Daniel Cousens c178804356 Updates test fixtures to use bitcoin core test data 2014-04-22 00:24:20 +10:00
Daniel Cousens 231ccdd721 Now shares base58 data with Address base58 tests 2014-04-22 00:24:03 +10:00
Daniel Cousens 1bcc7cfd95 Adds shared base58 test vectors 2014-04-22 00:24:02 +10:00
Daniel Cousens dd049fc764 Adds magicHash test fixtures 2014-04-22 00:23:12 +10:00
Daniel Cousens 1d1306b054 Removes Address.fromPubKey and improves test vectors 2014-04-20 04:38:33 +10:00
Daniel Cousens 682ec133bb Migrates Address to stricter API subset 2014-04-18 17:12:29 +10:00
Daniel Cousens d12a2cde49 Adds tests and fixtures for ./crypto 2014-04-08 23:39:22 +10:00
Wei Lu b7d65fb757 Transaction is able to estimate fees 2014-03-26 08:43:31 +08:00
Wei Lu dbb5681366 add tests and refactor wallet.processTx 2014-03-26 08:43:31 +08:00