Commit Graph

364 Commits

Author SHA1 Message Date
Christopher Jeffrey cc7657d843 paypro: treat pki_data as an array. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey 2e422c001e paypro: fix payment protocol for DER certs. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey 3dc7a4ab84 test: fix x509 tests for PayPro. 2014-07-21 14:54:03 -07:00
Christopher Jeffrey 13553a42d1 x509: try different certs/keys/pems. 2014-07-21 14:54:03 -07:00
Christopher Jeffrey c209e3172d paypro: x509 nonsense. 2014-07-21 14:54:03 -07:00
Christopher Jeffrey 1d0f01c133 paypro: first pass at implementing payment protocol for x509. 2014-07-21 14:54:03 -07:00
Ryan X. Charles 098c613cb0 SIN should call EncodedData constructor
Creating SINs was broken due to not calling the parent constructor, shich sets
"converts" and "_encoding". I've fixed the problem and added tests that reveal
the error.
2014-07-18 09:24:57 -07:00
Ryan X. Charles 0c8f7d4d21 move bitcore-dev.js -> bundle.js
To make it easier to test the master branch of bitcore with other apps,
especially Copay.
2014-07-17 16:30:47 -07:00
Ryan X. Charles 49ff6c7b76 add further tests for Key 2014-07-17 15:44:28 -07:00
Ryan X. Charles 57a55d0863 expose signature internal functions
"sign" and "genk" ... and add some signature tests
2014-07-17 15:24:19 -07:00
Ryan X. Charles 2c136d4dcc remove obsolete Curve class (G and n now accessible from Point) 2014-07-17 13:14:49 -07:00
Ryan X. Charles 5f6d02f5de add proper DER signature support to Key
both creating DER signature from the r and s values, and parsing a DER
signature into the r, s, and other properties.
2014-07-17 13:09:35 -07:00
Ryan X. Charles e485d0e331 Merge pull request #432 from ryanxcharles/feature/proto
Correct deprecated setting of __proto__
2014-07-16 16:24:22 -07:00
Ryan X. Charles c4e22bf5fd Merge pull request #431 from ryanxcharles/bug/SIGHASH_ANYONECANPAY
use correct constant & share between Transaction and ScriptInterpreter
2014-07-16 16:24:14 -07:00
Ryan X. Charles fc7b5b11c7 Merge pull request #429 from ryanxcharles/feature/update-bn.js
update bn.js to latest version
2014-07-16 16:23:53 -07:00
Ryan X. Charles 95d180c2a3 add ScriptInterpreter example to test 2014-07-16 11:39:12 -07:00
Ryan X. Charles 71f181efee add tests to EncodedData and fix hex conversion bug
...making sure the new changes to __proto__ are working correctly.
2014-07-15 18:21:38 -07:00
Ryan X. Charles 895bb6bab9 use correct constant & share between Transaction and ScriptInterpreter
Closes https://github.com/bitpay/bitcore/issues/424
2014-07-15 11:59:56 -07:00
Ryan X. Charles 0251d467c4 update bn.js to latest version
...and correspondingly get rid of Number->String conversion

See: https://github.com/indutny/bn.js/issues/17
2014-07-15 11:25:18 -07:00
Ryan X. Charles 92ac073035 run secp256k1 test vectors in Key where they also matter 2014-07-11 15:05:38 -07:00
Ryan X. Charles 572035fdd5 add some test vectors for secp256k1 2014-07-11 14:47:48 -07:00
Ryan X. Charles 0f0a1b1913 add some sanity checks to signature verification 2014-07-11 12:04:34 -07:00
Ryan X. Charles 8a199e26f3 allow Point to multiply things other than buffers
...i.e., bignums, numbers, and strings. Also, ensure that if you try to
multiply a buffer, it should be exactly 32 bytes. Eventually this "multiply"
function will be replaced with a more conventional "mul" function, but not yet.
2014-07-11 11:52:05 -07:00
Ryan X. Charles 3f75bea924 add tests for toCompressedPubKey 2014-07-10 19:03:40 -07:00
Ryan X. Charles 992e1cfcfb uncomment part of TransactionBuilder test 2014-07-10 18:56:43 -07:00
Ryan X. Charles 9c23256a16 add tests to make sure bignum interface works correctly 2014-07-10 18:45:09 -07:00
Ryan X. Charles 32cf5aa941 woops - add bignum back to browser tests 2014-07-10 18:27:02 -07:00
Ryan X. Charles fb3cc38046 make bignum tests run in node, not just browser 2014-07-10 18:17:11 -07:00
Ryan X. Charles af1d754bd8 make bignum interface backwards compatible
- fix cmp, mul, div, add, mod, sub functions to take numbers and strings
- fix Point class to use common folder correctly
2014-07-10 18:14:13 -07:00
Ryan X. Charles 9ca869b95b add "ECKey" to Key test so grepping is easier 2014-07-10 16:22:42 -07:00
Ryan X. Charles ac4d3186bf update sign function to use elliptic 2014-07-10 16:22:42 -07:00
Ryan X. Charles 15d4328b35 use elliptic in Point in the browser instead of cryptojs 2014-07-10 16:21:08 -07:00
Ryan X. Charles c8fe404402 replace bignumber.js with bn.js 2014-07-10 16:20:13 -07:00
Manuel Araoz 0e2df698cd fix SIN and add tests 2014-07-10 17:17:24 -03:00
Ryan X. Charles 65ab3a663a fix string/buffer sjcl issue
...by using sjcl.mode.cbc.encrypt/decrypt rather than sjcl.encrypt/decrypt. The
difference is that the sjcl.encrypt/decrypt functions are really convenience
methods designed to encrypt and decrypt strings, but don't play nice with
binary data, as revealed in the tests in this commit and the previous commit.
Basically, if you use them to encrypt and decrypt binary data as a string, it
will return the wrong result or an error.

The solution is to use the block cipher directly, in this case sjcl.mode.cbc.
This also has the advantage of fewer format conversions - no converting to
base64 and JSON strings. This makes things faster. Also, it is actually correct
unlike the previous method.
2014-07-09 16:25:48 -07:00
Ryan X. Charles dfc129b766 test vector that passes in node, but fails in browser/sjcl
There is some kind of problem either in bitcore or sjcl involving the
decodeURIComponent function. I discovered this issue while working on the
network protocol for Copay.  Decrypting binary data in sjcl produces problems
due to the way sjcl is interpreting data as strings. I will have to investigate
further tomorrow. For now I am producing this test vector to demonstrate the
issue.
2014-07-09 01:05:16 -07:00
Ryan X. Charles 153cb7ad50 add "real" 0.1.24 and 0.1.25, and...
In this commit I have added the 'official' versions 0.1.24 and 0.1.25 to the
repo, and also created a new bitcore-dev.js that is not included in the repo.
bitcoin-dev.js is what we will use for development. When we define a new
version, we create a new bitcore-x.x.x.js file, and point bitcore-latest.js to
that. Note that the bitcore-x.x.x.js files should always be the "main" bundle,
which does not include BIP39 or BIP70, or other large packages.
2014-07-07 19:50:57 -07:00
Ryan X. Charles 4e3b258f07 Merge remote-tracking branch 'maraoz/feature/bundle-name'
Conflicts:
	browser/bitcore-0.1.24.js
2014-07-07 19:00:26 -07:00
Ryan X. Charles 5cdc160dea Merge branch 'feature/bip70-signing' 2014-07-07 16:58:07 -07:00
Ryan X. Charles f3f94fc9d5 Merge remote-tracking branch 'devrandom/bip39a' 2014-07-07 16:51:46 -07:00
Manuel Araoz fcde4e84ad add new bundles and symbolic link 2014-07-04 15:15:35 -03:00
Ryan X. Charles e48561302b Merge pull request #401 from ryanxcharles/feature/bip70-protobuf
add BIP70 protobuf features in new PayPro lib file
2014-07-03 15:35:41 -07:00
Ryan X. Charles 39889476fb add sign/verify with pki_type SIN
...which is much easier to implement than X.509 certificates.
2014-07-03 15:35:32 -07:00
Ryan X. Charles e69d71924d add test for setObj 2014-07-03 15:35:32 -07:00
Ryan X. Charles 71e226b782 serialize payment request for signature 2014-07-03 15:35:32 -07:00
Ryan X. Charles 76804bef45 Fix checksum comparison error. Closes #402 2014-07-03 09:17:54 -07:00
Ryan X. Charles 0bea06f785 add BIP70 protobuf features in new PayPro lib file
...and add to the "main" bundle, but not the "all" bundle, since it adds
hundreds of kilobytes to the bundle.
2014-07-02 11:39:21 -07:00
Devrandom efb62b08b7 add check function for BIP39
fixes #393
2014-07-01 14:00:08 -07:00
Ryan X. Charles 15d0d1a333 add tests that confirm Message works with buffers 2014-06-25 14:30:28 -07:00
Ryan X. Charles ad5e83f9ff Merge branch 'bip39'
Conflicts:
	browser/bundle.js
2014-06-20 19:35:24 -07:00
Ryan X. Charles 266759ff60 Merge remote-tracking branch 'devrandom/bip39'
Conflicts:
	test/index.html
2014-06-20 19:34:21 -07:00
Ryan X. Charles 54c8e04738 remove unbuilding c code, and ...
* Remove c code that didn't compile on my machine
* Replace with sjcl code
* Minor modifications to mnemonic interface more bitcoreish
2014-06-20 19:09:21 -07:00
Ryan X. Charles a7270282d3 Merge pull request #384 from manan19/move-scriptForAddress
Move TransactionBuilder.scriptForAddress to Address.getScriptPubKey. Resolves #373
2014-06-19 20:33:36 -07:00
Manan Patel d83fc6e4b5 Resolves #373
Move TransactionBuilder.scriptForAddress to Address#getScriptPubKey (instance method)
2014-06-19 08:40:30 -07:00
Manan Patel 0d9317e2d4 adding few tests for Peer.js 2014-06-19 01:07:45 -07:00
Ryan X. Charles 83aada8648 Merge pull request #379 from ryanxcharles/feature/address-throw-error
throw error when using invalid length hash in Address constructor
2014-06-13 08:17:18 -07:00
Manuel Araoz 5c11ac3e87 malloc -> calloc, to fix linux version 2014-06-12 13:56:29 -03:00
Manuel Araoz d313ed037e trying to fix 2014-06-12 12:29:51 -03:00
Manuel Araoz a15962da88 fixing 2014-06-12 12:29:51 -03:00
Manuel Araoz d9a91e89c3 attempt to fix in linux 2014-06-12 12:29:51 -03:00
Manuel Araoz 9e46334d27 wierdest way of fixing the problem 2014-06-12 12:29:51 -03:00
Manuel Araoz 5428b1109e add problematic test 2014-06-12 12:29:50 -03:00
Ryan X. Charles c2e5a14eed throw error when using invalid length hash in Address
I have often made the error of using a public key rather than the hash of the
public key when creating an address, leading to invalid addresses. I'm sure I'm
not the only one. This commit follows the principle of "fail early, fail often"
and simply throws an error if you try to insert something other than 20 bytes
long when creating an address, which would be the case when using a public key.
This way that common mistake should be reduced.
2014-06-11 18:13:39 -07:00
Ryan X. Charles 772b12e471 Merge pull request #377 from cmgustavo/feature/fee-constant
Exporting a constant on TransactionBuilder for use on Copay
2014-06-11 15:38:50 -07:00
Gustavo Cortez 1d957b24d9 Exporting a constant on TransactionBuilder for use on Copay (to check available funds to spend). A simple test for this. 2014-06-11 19:00:11 -03:00
Ryan X. Charles 895a512e55 run HierarchicalKey tests in the browser
...not BIP32, which is the old name for HierarchicalKey
2014-06-11 14:28:30 -07:00
Devrandom b523eee812 Switch BIP-0039 to sjcl in browser 2014-06-08 13:30:47 -07:00
Devrandom 79d50e92d4 BIP39 in browser 2014-06-08 12:43:05 -07:00
Devrandom f2472e691b Separate out BIP39 2014-06-08 12:41:37 -07:00
Devrandom 63f7e3d062 BIP39 implementation 2014-06-08 12:40:28 -07:00
Ryan X. Charles 261a94d806 add ECIES example 2014-06-06 14:34:42 -07:00
Ryan X. Charles 80ccaa8396 rename "rand" to more explanatory "getRandomSeed" 2014-06-05 16:41:47 -07:00
Ryan X. Charles 5172b3160b add test to confirm correctness of sha512hmac 2014-06-04 18:57:26 -07:00
Ryan X. Charles af9fdff3a9 use SJCL AES to get ECIES working in the browser 2014-06-03 19:03:50 -07:00
Ryan X. Charles e963ff3c45 add ECIES support in node - not browser 2014-06-02 20:15:58 -07:00
Matias Alejo Garcia c9694c5768 rm console.log 2014-05-26 12:40:07 -03:00
Matias Alejo Garcia e60e389e43 add more strict checking, plus tests 2014-05-25 23:46:20 -03:00
Ryan X. Charles 9fb34f5033 print out string, not buffer 2014-05-23 16:51:32 -07:00
Ryan X. Charles c038abc8e7 rename BIP32 -> HierarchicalKey, deprecate BIP32
Sounds better.
2014-05-11 13:09:57 -04:00
olalonde af942f9b06 Armory: added tests 2014-05-08 07:54:12 +08:00
Ryan X. Charles d3a4cfa333 remove eval
eval is unsafe, and the way it was being used in Script and Script interpreter
was not a good enough reason. This commit removes both uses of eval, then
replaces all uses of OP_XXX with Opcode.map.OP_XXX since there's no reason for
those constants to be global.
2014-05-05 10:43:24 -04:00
Ryan X. Charles 46271de06e add some basic sanity tests for signatures and key generation
Signing a message with ECDSA involves using a random number, and this means
that two signatures should never be the same. This commit adds some basic tests
to Key.signSync and Message.sign to make sure this is the case. Also, a new
bitcore.Key should never have the same private key twice. This commit also adds
a basic test to make sure that is the case.
2014-05-01 12:27:55 -04:00
Ryan X. Charles b1f34d4015 iterate array correctly so that random number is actually used in signing 2014-05-01 10:09:33 -04:00
Ryan X. Charles 405ea0bf6f fix bignum issue
In the browser, sometimes the config for bignum wasn't being set up if (somehow
... still not sure how this is possible) you use bitcore without using
require('bitcore'). This would by pass the code that set the config for bignum.
Solution is to put the config for bignum in bignum itself (in the browser).

This fixes, in particular, an issue with base58 where it was depending on
bignum having the proper config.

Also I add the base58 tests to run in the browser which they weren't
previously.

And finally I add a small test for Bignum in the browser that makes sure the
config is set properly.
2014-04-29 17:59:24 -04:00
Ryan X. Charles c7218ea2fc Merge pull request #305 from maraoz/refactor/improve-BIP32
Refactor/improve bip32 and add test
2014-04-29 15:00:39 -04:00
Manuel Araoz ac719345e8 add tests for BIP32 2014-04-29 14:37:37 -03:00
Manuel Araoz ce00b77de0 name change forKey -> fromKey 2014-04-29 11:49:42 -03:00
Manuel Araoz a1a844c1e6 add Address.forKey convenience method and example vanity address generator 2014-04-29 11:49:42 -03:00
Ryan X. Charles 7f348ca0bd Move BigNumber to internal
...no longer relies on Manuel's repo hostig a version of "bignum" that actually
contained bignumber.js. This moves bignumber.js internally and removes bignum
from the browser build process. Also adds a bitcore.Bignum that links to the
right thing. In node, browser.Bignum is require('bignum'). And in the browser,
bitcore.Bignum is is now Bignumber.js (same as before ... except bignumber.js
is now inside bitcore).
2014-04-28 18:00:59 -04:00
Gordon Hall 602c94265b add test for config extending properly 2014-04-28 12:33:34 -04:00
Ruben de Vries 4860b8f3c7 updated naming for getMultiSigInfo 2014-04-25 15:02:19 +02:00
Ruben de Vries e301a14657 added Script.getMultiSigInfo as easy helper to return information about a multisig script 2014-04-25 14:58:44 +02:00
Ryan X. Charles 9575929162 Merge branch 'feature/secure-random'
Conflicts:
	lib/browser/Key.js
2014-04-24 09:19:58 -03:00
Ryan X. Charles 350f6ae998 Key should make sure new privkey is less than N
...this involves adding a Curve class, and significant refactoring to make this
possible in a clean way.
2014-04-23 21:15:55 -03:00
Manuel Araoz d8827cf9fd skip statistically failing tests 2014-04-23 15:55:35 -03:00
Manuel Araoz 17d0eeeb00 skip pending tests:wq 2014-04-23 15:45:00 -03:00
Manuel Araoz 2a829c4525 reduce number of cases for browser 2014-04-23 15:06:11 -03:00
Manuel Araoz 34ac69616a fix runs test 2014-04-23 15:01:04 -03:00
Manuel Araoz 532564461e testing RNG 2014-04-23 11:32:37 -03:00
Manuel Araoz 0095f5c9d0 rng statistic testswq 2014-04-23 11:32:37 -03:00