You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.8 KiB
79 lines
1.8 KiB
var Privkey = require('./privkey');
|
|
var Pubkey = require('./pubkey');
|
|
|
|
var Keypair = function Keypair(obj) {
|
|
if (!(this instanceof Keypair))
|
|
return new Keypair(obj);
|
|
|
|
// breaks some tests
|
|
// TODO: allow keys to be created with simply `new Keypair()` (random gen.)
|
|
/*if (!obj) {
|
|
var privkey = Privkey().fromRandom();
|
|
var obj = this.fromPrivkey( privkey );
|
|
}*/
|
|
|
|
if (obj)
|
|
this.set(obj);
|
|
};
|
|
|
|
Keypair.prototype.set = function(obj) {
|
|
this.privkey = obj.privkey || this.privkey || undefined;
|
|
this.pubkey = obj.pubkey || this.pubkey || undefined;
|
|
return this;
|
|
};
|
|
|
|
Keypair.prototype.fromJSON = function(json) {
|
|
if (json.privkey)
|
|
this.set({privkey: Privkey().fromJSON(json.privkey)});
|
|
if (json.pubkey)
|
|
this.set({pubkey: Pubkey().fromJSON(json.pubkey)});
|
|
return this;
|
|
};
|
|
|
|
Keypair.prototype.toJSON = function() {
|
|
var json = {};
|
|
if (this.privkey)
|
|
json.privkey = this.privkey.toJSON();
|
|
if (this.pubkey)
|
|
json.pubkey = this.pubkey.toJSON();
|
|
return json;
|
|
};
|
|
|
|
Keypair.prototype.fromPrivkey = function(privkey) {
|
|
this.privkey = privkey;
|
|
this.privkey2pubkey();
|
|
return this;
|
|
};
|
|
|
|
Keypair.prototype.fromRandom = function() {
|
|
this.privkey = Privkey().fromRandom();
|
|
this.privkey2pubkey();
|
|
return this;
|
|
};
|
|
|
|
Keypair.prototype.fromString = function(str) {
|
|
var obj = JSON.parse(str);
|
|
if (obj.privkey) {
|
|
this.privkey = new Privkey();
|
|
this.privkey.fromString(obj.privkey);
|
|
}
|
|
if (obj.pubkey) {
|
|
this.pubkey = new Pubkey();
|
|
this.pubkey.fromString(obj.pubkey);
|
|
}
|
|
};
|
|
|
|
Keypair.prototype.privkey2pubkey = function() {
|
|
this.pubkey = Pubkey().fromPrivkey(this.privkey);
|
|
};
|
|
|
|
Keypair.prototype.toString = function() {
|
|
var obj = {};
|
|
if (this.privkey)
|
|
obj.privkey = this.privkey.toString();
|
|
if (this.pubkey)
|
|
obj.pubkey = this.pubkey.toString();
|
|
return JSON.stringify(obj);
|
|
};
|
|
|
|
module.exports = Keypair;
|
|
|