Commit Graph

321 Commits

Author SHA1 Message Date
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
Manuel Araoz 7b3c6d5bcd remove console.log 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
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
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 338158ca46 fix sjcl issue on npm install
...by including sjcl locally
2014-06-06 11:49:58 -07:00
Ryan X. Charles 2dac2b1f47 Merge pull request #362 from ryanxcharles/feature/ECIES
add ECIES support
2014-06-05 20:31:08 -07:00
Ryan X. Charles 80ccaa8396 rename "rand" to more explanatory "getRandomSeed" 2014-06-05 16:41:47 -07:00
Ryan X. Charles b8986ed0e1 Merge pull request #357 from ionux/master
Fix to check for zero s value in sign function
2014-06-05 12:24:19 -07:00
Ryan X. Charles 117eaa4288 remove underscore dependency to decrease bundle size 2014-06-04 18:43:00 -07:00
Gabe 8e96d1439d check if seed is greater than 512 bits 2014-06-04 13:42:06 -04: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
Rich Morgan eab5c2896e Fix to check for zero s value in sign function
If r OR s are zero then recalculate both r and s until they are both non-zero values.
2014-05-28 11:34:18 -04:00
Ryan X. Charles bc84d1e82b Merge pull request #351 from matiu/bug/minor-bug-in-address-FromScript
fix .fromScriptPubKey parsing in some strange Txs
2014-05-26 08:43:43 -07:00
Matias Alejo Garcia e60e389e43 add more strict checking, plus tests 2014-05-25 23:46:20 -03:00
Matias Alejo Garcia 349143ba02 change log in checkStatus to .debug 2014-05-25 23:06:52 -03:00
Matias Alejo Garcia 56e7739a46 reverse changes in address 2014-05-25 23:01:59 -03:00
Matias Alejo Garcia be02d41ac2 fix isMultiSig 2014-05-25 23:00:49 -03:00
Matias Alejo Garcia ddd1476a39 fix buffer 2014-05-25 22:25:12 -03:00
Matias Alejo Garcia 691fec5342 fix .fromScriptPubKey parsing in some strange Txs 2014-05-25 22:25:12 -03:00
Gordon Hall 92e89d307e fix #346 2014-05-13 13:26:48 -04:00
Ryan X. Charles c038abc8e7 rename BIP32 -> HierarchicalKey, deprecate BIP32
Sounds better.
2014-05-11 13:09:57 -04:00