Key tests working in the browser~!!!
This commit is contained in:
parent
915c048c3b
commit
3e5e0057b1
25
Key.js
25
Key.js
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue