Commit Graph

348 Commits

Author SHA1 Message Date
Yemel Jardi
ac525f226c Add BIP21 implementation 2014-08-11 17:57:28 -03:00
Ryan X. Charles
9f9e2f1d41 k should be 32 bytes, not 8 bytes
This is a bug with security implications. It is much easier to guess the value
of k within a 64 byte range. This would lead to compromised private keys.

The cryptography interface of bitcore is extremely poor. I recommend:
* Get rid of the C++ code, since it makes everything more difficult with little benefit
* Refactor all crypto, and have easily auditable bignum, point, ecdsa, and key classes
* Then actually audit the crypto
2014-08-10 21:25:52 -04:00
Manuel Aráoz
7d03056e09 Merge pull request #459 from ryanxcharles/feature/message-signing
add support for signing messages in compressed format
2014-08-06 10:56:07 -03:00
Manuel Aráoz
742edf9164 Merge pull request #478 from manan19/walletkey-params
setting networks.livenet as the default for WalletKey
2014-08-06 10:29:55 -03:00
Manan Patel
589418d66c setting networks.livenet as the default for WalletKey 2014-08-05 08:10:20 -07:00
Manuel Araoz
895046cc32 fix browser tests 2014-08-04 15:52:57 -03:00
Manuel Araoz
ca16817a1c generalize version numbers 2014-08-04 15:52:56 -03:00
Manuel Araoz
e44b2480aa add AuthMessage and fix browser tests 2014-08-04 15:52:56 -03:00
Ryan X. Charles
cd353ac02e Merge pull request #467 from maraoz/add/missing-tests
Add missing tests for new methods added
2014-07-30 14:50:52 -04:00
Christopher Jeffrey
124d1a2fc3 paypro: expose RootCerts on PayPro. 2014-07-29 10:58:35 -07:00
Manuel Araoz
80b5fcc614 add is* tests for Script 2014-07-28 14:40:16 -03:00
Manuel Araoz
b727cc0d7c add Script validation tests 2014-07-28 14:03:22 -03:00
Manuel Araoz
bed6ccaac0 start adding script tests 2014-07-28 10:20:11 -03:00
Ryan X. Charles
b9f3479b12 Merge pull request #455 from chjj/root-certs
Root certs
2014-07-25 19:19:47 -04:00
Ryan X. Charles
f87da3b5ba add support for signing messages in compressed format
...this is the standard way to sign messages in bitcoin-qt. Note that the
format of a compressed signature, for messages, is quite distinct from DER
format, which is used in transactions. This commit also adds support for
recovering the public key from a signature, which is necessary for this. The
code for public key recover is taken from bitcoinjs-lib.
2014-07-25 14:07:03 -07:00
Ryan X. Charles
9937ec6312 Merge pull request #458 from matiu/feature/builder03
Fix loosing signatures after from-toObj roundtrip
2014-07-25 16:29:53 -04:00
Matias Alejo Garcia
1c6ec69c48 fix lossing signatured after from-toObj roundtrip 2014-07-25 16:43:18 -03:00
Christopher Jeffrey
8a84092be9 root-certs: use hasOwnProperty check instead of __proto__=null. 2014-07-25 10:53:21 -07:00
Christopher Jeffrey
c533db4f42 minor: remove redundant toUpperCase calls. 2014-07-24 23:07:52 -07:00
Christopher Jeffrey
dd165ecf63 paypro: root certs - do not inherit from Object. 2014-07-24 23:07:52 -07:00
Christopher Jeffrey
5b4c4f3894 paypro: get root cert names. 2014-07-24 23:07:52 -07:00
Christopher Jeffrey
0020e289d8 paypro: allow identification of root certs. 2014-07-24 23:07:52 -07:00
Matias Alejo Garcia
1b37d88e9a accept amount a strings in setOutput 2014-07-24 20:02:41 -03:00
Manuel Aráoz
cbfd30af16 Merge pull request #453 from matiu/feature/builder01
fix checkMerge, and tests
2014-07-24 18:50:55 -03:00
Matias Alejo Garcia
8660120add fix checkMerge, and tests 2014-07-24 18:46:12 -03:00
Manuel Araoz
0cfd5e43a8 fix merge 2014-07-24 18:02:42 -03:00
Manuel Araoz
c0d51916df add support code for copay's new tx proposal check 2014-07-24 18:01:14 -03:00
Manuel Araoz
b222550dd0 add Transaction#getReceivingAddresses and send 2014-07-24 18:01:14 -03:00
Ryan X. Charles
552a18b760 Merge pull request #452 from matiu/feature/txproposal10
TransactionBuilder .fromObj .toObj rewrite
2014-07-24 16:57:36 -04:00
Manuel Araoz
f1d7662a70 fix browser tests 2014-07-24 17:44:57 -03:00
Manuel Araoz
8a88c3ccd0 finish basic tests 2014-07-24 17:44:57 -03:00
Manuel Araoz
2fb5d7d3a5 change test to use sinon 2014-07-24 17:44:57 -03:00
Manuel Araoz
837658034a one test passes 2014-07-24 17:44:57 -03:00
Manuel Araoz
f8d7d1da9d add Transaction#getReceivingAddresses and send 2014-07-24 17:44:56 -03:00
Manuel Araoz
486f2ae1dc starting NetworkMonitor implementation 2014-07-24 17:42:51 -03:00
Matias Alejo Garcia
68b1211c4c formated using js-beautify 2014-07-24 17:35:21 -03:00
Matias Alejo Garcia
8e1de31797 test passing. 2014-07-24 17:33:40 -03:00
Ryan X. Charles
0f737b4f00 Merge pull request #450 from matiu/feature/sin03
Feature/sin03
2014-07-24 16:25:02 -04:00
Matias Alejo Garcia
2f97390849 formatted with js-beautify 2014-07-24 16:48:45 -03:00
Matias Alejo Garcia
397fc8607f new to/from Obj. WIP 2014-07-24 16:34:57 -03:00
Matias Alejo Garcia
71f992138b add check in constructor of Address 2014-07-24 01:40:56 -03:00
Matias Alejo Garcia
19584e1f26 add check in constructor 2014-07-24 01:40:13 -03:00
Ryan X. Charles
cd1d667fe1 Merge pull request #448 from matiu/feature/sin02
Feature/sin02
2014-07-23 20:48:33 -04:00
Matias Alejo Garcia
15c55e560a support uncompressed pub keys also 2014-07-23 19:49:42 -03:00
Christopher Jeffrey
11c977ba70 fix: typo - s/Payment/PaymentACK/ 2014-07-23 15:02:19 -07:00
Matias Alejo Garcia
14d3165a73 add fromPubKey to SIN 2014-07-23 18:53:57 -03:00
Ryan X. Charles
1936bfd374 Merge pull request #446 from chjj/paypro
PayPro: Fix payment protocol with regards to pki_data DER certs
2014-07-23 17:30:16 -04:00
Christopher Jeffrey
2f6938bad0 paypro: fix handling of pki_data - cert arrays. 2014-07-23 14:22:56 -07:00
Matias Alejo Garcia
733835dc7c removes unused / obsolete class "Sign.js" 2014-07-23 18:11:27 -03:00
Christopher Jeffrey
017f044b53 paypro: fix browser signatures with KJUR. move pem/der functions to common. 2014-07-21 19:52:43 -07:00
Christopher Jeffrey
604ac04f47 paypro: split up paypro into node/browser/common. 2014-07-21 18:15:52 -07:00
Christopher Jeffrey
cec71a51fd paypro: add isTrusted function to RootCerts. 2014-07-21 14:56:48 -07:00
Christopher Jeffrey
672e667e9c paypro: remove x509.js 2014-07-21 14:56:48 -07:00
Christopher Jeffrey
85d5e69fc1 paypro: move root certs to common. 2014-07-21 14:56:48 -07:00
Christopher Jeffrey
86efcbed1b paypro: remove all references of KJUR. 2014-07-21 14:56:48 -07:00
Christopher Jeffrey
92b7fad243 paypro: start using our own DERtoPEM functions so we don't have to require jsrsasign. 2014-07-21 14:56:48 -07:00
Christopher Jeffrey
ec5a948400 paypro: fix pem/der functions. 2014-07-21 14:56:48 -07:00
Christopher Jeffrey
02f9ce8dfd paypro: temporarily fix tests. 2014-07-21 14:56:47 -07:00
Christopher Jeffrey
aafbca46d9 paypro: move x509 sign and verify to their own methods. 2014-07-21 14:56:47 -07:00
Christopher Jeffrey
575352dd03 paypro: port root certs script to node for portability. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
a68c112371 paypro: fix DERtoPEM. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
271ac2e9a5 minor: fix typo. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
eb9fd652d2 paypro: potentially stop using jsrsasign in node. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
0db74604db paypro: update root certs and fix tests. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
8725516afb paypro: convert root certs to hash table in build file. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
cc7657d843 paypro: treat pki_data as an array. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
47e1ca5f1e minor: remove unused code. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
4dcdd3c091 paypro: temporarily disable untrusted cert error for tests. typo fix. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
f7e89b6a58 paypro: handle untrusted certs on browser and node. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
f79a31ff3c paypro: get single DER certs working. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
4ec9a247aa paypro: multiple fixes. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
24ae03247f paypro: stat using jsrsasign to convert DER to PEM and derive public keys for sig verification. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
37f20f3268 paypro: fix browser paypro. TODO: fix parsing DER certs. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
4e606c7ed2 paypro: move root certs to non-browser. 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
119ef0d611 paypro: begin checking trusted certs. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
29b067ab73 paypro: add createTrusted to browser build script. 2014-07-21 14:55:10 -07:00
Christopher Jeffrey
d4d1a11252 paypro: generate Trusted.js. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
0d68e429fc paypro: add trusted x509 certs in Trusted.js for now. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
722a10f965 paypro: fix encodings with jsrsasign. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
059b23f899 paypro: clientside. start using jsrsasign api correctly. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
538c6c32de paypro: figure out clientside jsrasign more. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
1ad3392184 paypro: add lib/browser/x509. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
4632caf542 paypro: try to figure out differences between browser and npm jsrsasign. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
11b67a6404 paypro: use jsrsasign for browser. 2014-07-21 14:54:38 -07:00
Christopher Jeffrey
12bfe8268d paypro: first pass at clientside x509. 2014-07-21 14:54:03 -07:00
Christopher Jeffrey
14bf79cc80 fix: fix variable typo for paypro. 2014-07-21 14:54:03 -07:00
Christopher Jeffrey
e4c4101b5f paypro: fix rsa+sha256 vs rsa+sha1. 2014-07-21 14:54:03 -07:00
Christopher Jeffrey
3dc7a4ab84 test: fix x509 tests for PayPro. 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
4523012867 set .converters and ._encoding by hand
...revert to previous change, since always calling the constructor of
VersionedData may have unintended consequences. Instead, just set .converts and
._encoding, since they are no longer in the prototype and must be set on the
object itself.
2014-07-18 11:40:13 -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
bfe5877ee7 require SecureRandom and Point ... woops 2014-07-17 16:30:22 -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
9122807ecb remove __proto__ from EncodedData and family
EncodedData was setting "converter" and "_encoding" by setting them on the
prototype of the object. This was probably done to enable overriding these
functions. However, overriding was never actually used anywhere, and setting
the __proto__ is deprecated. So I have remove all instances of setting
__proto__ for EncodedData-ish classes, and instead just set "convert" and
"_encoding" on the object directly.
2014-07-15 17:14:04 -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
Linus Unnebäck
3da6fe899f cleanup after removal of soop
Removed some unnecessary parenthesise that hung around after the merge
of #417
2014-07-12 12:14:56 +02: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
c75de967fd further simplify use of bignum in Transaction and ScriptInterpreter 2014-07-10 19:26:03 -07:00
Ryan X. Charles
823d02118c simplify use of bignum in Base58 and Block 2014-07-10 19:16:49 -07:00
Ryan X. Charles
ec2fda2a22 simplify use of bignum in TransactionBuilder 2014-07-10 19:13:29 -07:00
Ryan X. Charles
d035b54418 simplify use of bignum in ScriptInterpreter 2014-07-10 19:09:47 -07:00
Ryan X. Charles
3cbf2e07c4 use decorate on gt and lt 2014-07-10 18:45:27 -07:00
Ryan X. Charles
80bba1cf81 use a decorate function to optimize bundle filesize 2014-07-10 18:27:15 -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
e4cb7d2014 remoe unimplemented bignum.pow() 2014-07-10 16:47:05 -07:00
Ryan X. Charles
c8f11b9c0a require Point ... woops 2014-07-10 16:22:42 -07:00
Ryan X. Charles
204d8563c8 remove cryptojs dependency from Key 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
8fb6ccaf01 use elliptic for Point.multiply and key regeneration 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
Manuel Araoz
87b818badf remove soop exports 2014-07-10 16:08:42 -03:00
Manuel Araoz
557e9ae2a4 use node util.inherits 2014-07-10 15:55:32 -03:00
Manuel Araoz
6e346d067c remove soop imports 2014-07-10 12:39:09 -03:00
Manuel Araoz
b0924978e4 oops 2014-07-10 11:56:17 -03:00
Manuel Araoz
cd7eae8359 remove soop inheritance system 2014-07-10 11:46:44 -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
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
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
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
Petros Angelatos
d2ce401f84 remove dead code 2014-07-02 01:22:18 +01:00
Devrandom
efb62b08b7 add check function for BIP39
fixes #393
2014-07-01 14:00:08 -07:00
Ryan X. Charles
ca67786a77 ran js-beautify on all bitcore source
js-beautify -s 2 -r *.js

...did not run on bundles, only on source.
2014-06-23 10:57:02 -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
rxl
1170923f86 fix grammar in 'not enough unspent tx outputs' error in tx builder 2014-06-19 17:52:54 -07:00
Manan Patel
d83fc6e4b5 Resolves #373
Move TransactionBuilder.scriptForAddress to Address#getScriptPubKey (instance method)
2014-06-19 08:40:30 -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
0d670ff979 suggestions by ryan 2014-06-12 16:54:59 -03:00
Manuel Araoz
b402bbfa6c fixing copay problems 2014-06-12 16:28:00 -03: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
2c7c2d85b3 breaking 2014-06-12 12:29:51 -03:00
Manuel Araoz
a15962da88 fixing 2014-06-12 12:29:51 -03:00
Manuel Araoz
a57191c66f working on fixing the wierd test 2014-06-12 12:29:51 -03:00
Manuel Araoz
a2b8bb0f51 even weirder fix 2014-06-12 12:29:51 -03:00