...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).
72 lines
3.2 KiB
JavaScript
72 lines
3.2 KiB
JavaScript
'use strict';
|
|
|
|
var chai = chai || require('chai');
|
|
var bitcore = bitcore || require('../bitcore');
|
|
var coinUtil = coinUtil || bitcore.util;
|
|
var buffertools = require('buffertools');
|
|
var bignum = bitcore.Bignum;
|
|
|
|
var should = chai.should();
|
|
var assert = chai.assert;
|
|
|
|
var Point = bitcore.Point;
|
|
var Key = bitcore.Key;
|
|
|
|
describe('Point', function() {
|
|
|
|
it('should initialize the main object', function() {
|
|
should.exist(Point);
|
|
});
|
|
|
|
it('should be able to create instance', function() {
|
|
var p = new Point();
|
|
should.exist(p);
|
|
});
|
|
|
|
it('should add these two points correctly', function() {
|
|
//these points are from one of the BIP32 test vectors
|
|
var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d";
|
|
var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997";
|
|
var a = new Point(bignum.fromBuffer((new Buffer(axhex, 'hex')), {size: 32}), bignum.fromBuffer((new Buffer(ayhex, 'hex')), {size: 32}));
|
|
var bxhex = "5a784662a4a20a65bf6aab9ae98a6c068a81c52e4b032c0fb5400c706cfccc56";
|
|
var byhex = "7f717885be239daadce76b568958305183ad616ff74ed4dc219a74c26d35f839";
|
|
var b = new Point(bignum.fromBuffer((new Buffer(bxhex, 'hex')), {size: 32}), bignum.fromBuffer((new Buffer(byhex, 'hex')), {size: 32}));
|
|
var sxhex = "501e454bf00751f24b1b489aa925215d66af2234e3891c3b21a52bedb3cd711c";
|
|
var syhex = "008794c1df8131b9ad1e1359965b3f3ee2feef0866be693729772be14be881ab";
|
|
var s = new Point(bignum.fromBuffer((new Buffer(sxhex, 'hex')), {size: 32}), bignum.fromBuffer((new Buffer(syhex, 'hex')), {size: 32}));
|
|
var sum = Point.add(a, b);
|
|
s.x.toBuffer({size: 32}).toString('hex').should.equal(sum.x.toBuffer({size: 32}).toString('hex'));
|
|
s.y.toBuffer({size: 32}).toString('hex').should.equal(sum.y.toBuffer({size: 32}).toString('hex'));
|
|
});
|
|
|
|
it('should convert a Point into the public key of a Key', function() {
|
|
var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d";
|
|
var axbuf = new Buffer(axhex, 'hex');
|
|
var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997";
|
|
var aybuf = new Buffer(ayhex, 'hex');
|
|
var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32}));
|
|
|
|
var pubKeyBufCompressedHex = "0369b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d";
|
|
var key = new Key();
|
|
key.public = new Buffer(pubKeyBufCompressedHex, 'hex');
|
|
key.compressed = false;
|
|
|
|
key.public.toString('hex').should.equal(a.toUncompressedPubKey().toString('hex'));
|
|
});
|
|
|
|
it('should convert the public key of a Key into a Point', function() {
|
|
var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d";
|
|
var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997";
|
|
|
|
var pubKeyBufCompressedHex = "0369b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d";
|
|
var key = new Key();
|
|
key.public = new Buffer(pubKeyBufCompressedHex, 'hex');
|
|
key.compressed = false;
|
|
|
|
var point = Point.fromUncompressedPubKey(key.public);
|
|
point.x.toBuffer({size: 32}).toString('hex').should.equal(axhex);
|
|
point.y.toBuffer({size: 32}).toString('hex').should.equal(ayhex);
|
|
});
|
|
|
|
});
|