Key tests working in the browser~!!!

This commit is contained in:
Manuel Araoz 2014-02-21 15:19:38 -03:00
parent 915c048c3b
commit 3e5e0057b1
5 changed files with 51 additions and 20 deletions

25
Key.js
View File

@ -7,23 +7,30 @@ if (process.versions) {
} else { } else {
// pure js version // pure js version
var ECKey = require('./browser/bitcoinjs-lib.js').ECKey; var ECKey = require('./browser/bitcoinjs-lib.js').ECKey;
var kSpec = function() { var buffertools = require('buffertools');
var kSpec = function(compressed, public, private) {
this.compressed = compressed;
this.public = public;
this.private = private;
}; };
kSpec.generateSync = function() { kSpec.generateSync = function() {
var eck = new ECKey(); var eck = new ECKey();
eck.setCompressed(true); eck.setCompressed(true);
var pub = eck.getPub(); var pub = eck.getPub();
console.dir(eck);
console.log(pub);
return { var ret = new this(true, new Buffer(pub), new Buffer(eck.priv.toByteArrayUnsigned()));
compressed: true, ret.eck = eck;
public: new Buffer(33), return ret;
private: new Buffer(32)
};
}; };
kSpec.prototype.regenerateSync = function() {
this.eck = new ECKey(buffertools.toHex(this.private));
this.eck.setCompressed(true);
this.public = new Buffer(this.eck.getPub());
return this;
};
module.exports = { module.exports = {
Key: kSpec Key: kSpec
}; };

View File

@ -2708,7 +2708,7 @@ Bitcoin.ECKey = (function () {
this.priv = BigInteger.fromByteArrayUnsigned(ECKey.decodeString(input)); this.priv = BigInteger.fromByteArrayUnsigned(ECKey.decodeString(input));
} else { } else {
// Prepend zero byte to prevent interpretation as negative integer // Prepend zero byte to prevent interpretation as negative integer
this.priv = BigInteger.fromByteArrayUnsigned(Crypto.util.base64ToBytes(input)); this.priv = BigInteger.fromByteArrayUnsigned(Crypto.util.hexToBytes(input));
} }
} }
this.compressed = !!ECKey.compressByDefault; this.compressed = !!ECKey.compressByDefault;

View File

@ -20,7 +20,7 @@ Bitcoin.ECKey = (function () {
this.priv = BigInteger.fromByteArrayUnsigned(ECKey.decodeString(input)); this.priv = BigInteger.fromByteArrayUnsigned(ECKey.decodeString(input));
} else { } else {
// Prepend zero byte to prevent interpretation as negative integer // Prepend zero byte to prevent interpretation as negative integer
this.priv = BigInteger.fromByteArrayUnsigned(Crypto.util.base64ToBytes(input)); this.priv = BigInteger.fromByteArrayUnsigned(Crypto.util.hexToBytes(input));
} }
} }
this.compressed = !!ECKey.compressByDefault; this.compressed = !!ECKey.compressByDefault;

View File

@ -8,7 +8,6 @@
</head> </head>
<body> <body>
<div id="mocha"></div> <div id="mocha"></div>
<script src="../browser/vendor.js"></script>
<script src="../node_modules/mocha/mocha.js"></script> <script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script> <script src="../node_modules/chai/chai.js"></script>
<script>mocha.setup('bdd')</script> <script>mocha.setup('bdd')</script>

View File

@ -3,6 +3,8 @@
var chai = require('chai'); var chai = require('chai');
var bitcore = require('../bitcore'); var bitcore = require('../bitcore');
var buffertools = require('buffertools');
var should = chai.should(); var should = chai.should();
var KeyModule = bitcore.KeyModule; var KeyModule = bitcore.KeyModule;
@ -22,14 +24,37 @@ describe('Key', function() {
it('should be able to generateSync instance', function() { it('should be able to generateSync instance', function() {
var k = Key.generateSync(); var k = Key.generateSync();
should.exist(k); should.exist(k);
k.private.length.should.equal(32); (k instanceof Key).should.be.ok;
k.public.length.should.equal(33); });
it('should retain some basic properties', function() {
var k = Key.generateSync();
should.exist(k.private);
should.exist(k.public);
should.exist(k.compressed); should.exist(k.compressed);
}); });
it('should have a valid public key', function() {
var k = Key.generateSync();
k.compressed.should.be.ok;
k.public.length.should.equal(33);
k.public[0].should.be.above(1);
k.public[0].should.be.below(4);
});
it('should have a valid private key', function() {
var k = Key.generateSync();
k.private.length.should.equal(32);
});
it('should be able to regenerate from a private key', function() {
var k = Key.generateSync();
var pkshex = 'b7dafe35d7d1aab78b53982c8ba554584518f86d50af565c98e053613c8f15e0';
var pubhex = '02211c9570d24ba84a3ee31c8a08e93a6756b3f3beac76a4ab8d9748ca78203389';
k.private = buffertools.fromHex(new Buffer(pkshex));
k.regenerateSync();
k.compressed.should.be.ok;
buffertools.toHex(k.private).should.equal(pkshex);
buffertools.toHex(k.public).should.equal(pubhex);
});
}); });