The addUncompressed function is for node-only, and is a temporary workaround
until we expose a better crypto interface in both node and the browser. I wrote
tests for this function that were node-only, but were broken in the browser. I
also wrote tests for the Point class that should have worked in both node and
the browser, and did, but I was using the wrong module such that it worked only
in node. This update makes the tests work in the browser by using the correct
module.
The way I was outputting the pubkeys would be incorrect if the first byte of
one of the coordinates was 0, since it would print the first non-zero byte
first. The solution was to use the standard openssl function that outputs a
public key to oct.
BIP32 needs to be able to add two points on the secp256k1 curve. This
functionality was not already being exposed from OpenSSL in bitcore. I have
added an "addUncompressed" function to the Key class which takes in two points
in uncompressed form, adds them, and returns the result. This is necessary for
BIP32.
Added the ability to create a new master bip32 with new private key and chain code. The way this works is like this:
var bip32 = new BIP32('mainnet');
or:
var bip32 = new BIP32('testnet');
I removed the skip over the tx_valid.json file and made some tweaks to get most of the test cases passing. There are still two test cases that fail, as pointed out by the TODO comment I added above them. Oddly, running the test suite reports 3 failing test cases, but if I delete the two marked with the TODO there are 0 reported failures. So, there may be some kind of interaction with these test cases and the others. More investigation is needed.
I updated the two test cases that were testing transaction `23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63` with the input script I found on blockchain.info https://blockchain.info/tx/23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63. A quick search found one other person who was using this same script (23b397edcccc4483eb271ecad09a94dd63.json) and the test passes now, so I'm not sure why the old script was being used.
All of the other changes are simply re-formatting decimal numbers as hex (i.e. `1` => `0x01`).
Furthermore, I added some code in the test fixture itself to verify each of the inputs.
Test Plan:
`mocha -R spec test/test.Transaction.js`