address convenience functions
This commit is contained in:
parent
8743c68ce6
commit
a2512226f8
@ -1,5 +1,7 @@
|
||||
var base58check = require('./base58check');
|
||||
var constants = require('./constants');
|
||||
var Hash = require('./hash');
|
||||
var Pubkey = require('./pubkey');
|
||||
|
||||
function Address(hash, network, type) {
|
||||
this.hash = hash;
|
||||
@ -7,6 +9,15 @@ function Address(hash, network, type) {
|
||||
this.type = type;
|
||||
};
|
||||
|
||||
Address.prototype.fromPubkey = function(pubkey, network, compressed) {
|
||||
if (typeof compressed === 'undefined')
|
||||
compressed = true;
|
||||
this.hash = Hash.sha256ripemd160(pubkey.toDER(compressed));
|
||||
this.network = network || 'mainnet';
|
||||
this.type = 'pubkeyhash';
|
||||
return this;
|
||||
};
|
||||
|
||||
Address.prototype.fromString = function(str) {
|
||||
var buf = base58check.decode(str);
|
||||
if (buf.length !== 1 + 20)
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
var Address = require('../lib/address');
|
||||
var Privkey = require('./privkey');
|
||||
var Pubkey = require('./pubkey');
|
||||
var Random = require('./random');
|
||||
@ -31,6 +32,10 @@ Key.prototype.fromString = function(str) {
|
||||
}
|
||||
};
|
||||
|
||||
Key.prototype.getAddress = function(network, compressed) {
|
||||
return (new Address()).fromPubkey(this.pubkey, network, compressed);
|
||||
};
|
||||
|
||||
Key.prototype.privkey2pubkey = function() {
|
||||
this.pubkey = new Pubkey(point.getG().mul(this.privkey.bn));
|
||||
};
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
var should = require('chai').should();
|
||||
var constants = require('../lib/constants');
|
||||
var Pubkey = require('../lib/pubkey');
|
||||
var Address = require('../lib/address');
|
||||
|
||||
describe('address', function() {
|
||||
@ -11,6 +12,26 @@ describe('address', function() {
|
||||
should.exist(address);
|
||||
});
|
||||
|
||||
describe('#fromPubkey', function() {
|
||||
|
||||
it('should make this address from a compressed pubkey', function() {
|
||||
var pubkey = new Pubkey();
|
||||
pubkey.fromDER(new Buffer('0285e9737a74c30a873f74df05124f2aa6f53042c2fc0a130d6cbd7d16b944b004', 'hex'));
|
||||
var address = new Address();
|
||||
address.fromPubkey(pubkey);
|
||||
address.toString().should.equal('19gH5uhqY6DKrtkU66PsZPUZdzTd11Y7ke');
|
||||
});
|
||||
|
||||
it('should make this address from an uncompressed pubkey', function() {
|
||||
var pubkey = new Pubkey();
|
||||
pubkey.fromDER(new Buffer('0285e9737a74c30a873f74df05124f2aa6f53042c2fc0a130d6cbd7d16b944b004', 'hex'));
|
||||
var address = new Address();
|
||||
address.fromPubkey(pubkey, 'mainnet', false);
|
||||
address.toString().should.equal('16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('#fromString', function() {
|
||||
|
||||
it('should derive from this known address string mainnet', function() {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
var should = require('chai').should();
|
||||
var bn = require('../lib/bn');
|
||||
var point = require('../lib/point');
|
||||
var Address = require('../lib/address');
|
||||
var Privkey = require('../lib/privkey');
|
||||
var Pubkey = require('../lib/pubkey');
|
||||
var Key = require('../lib/key');
|
||||
@ -74,6 +75,19 @@ describe('key', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('#getAddress', function() {
|
||||
|
||||
it('should return an address', function() {
|
||||
var privhex = '906977a061af29276e40bf377042ffbde414e496ae2260bbf1fa9d085637bfff';
|
||||
var pubhex = '02a1633cafcc01ebfb6d78e39f687a1f0995c62fc95f51ead10a02ee0be551b5dc';
|
||||
var key = new Key();
|
||||
key.privkey = new Privkey(bn(new Buffer(privhex, 'hex')));
|
||||
key.privkey2pubkey();
|
||||
key.getAddress().toString().should.equal((new Address()).fromPubkey(key.pubkey).toString());
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe("#privkey2pubkey", function() {
|
||||
|
||||
it('should convert this known Privkey to known Pubkey', function() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user