...to allow them to be imported into other wallets, preserving the "compressed" or "uncompressed" state of the public key in the private key representation.
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
require('classtool');
|
|
|
|
function ClassSpec(b) {
|
|
var coinUtil = require('./util/util');
|
|
var timeUtil = require('./util/time');
|
|
var KeyModule = require('./Key');
|
|
var PrivateKey = require('./PrivateKey').class();
|
|
var Address = require('./Address').class();
|
|
|
|
function WalletKey(cfg) {
|
|
this.network = cfg.network; // required
|
|
this.created = cfg.created;
|
|
this.privKey = cfg.privKey;
|
|
};
|
|
|
|
WalletKey.prototype.generate = function() {
|
|
this.privKey = KeyModule.Key.generateSync();
|
|
this.created = timeUtil.curtime();
|
|
};
|
|
|
|
WalletKey.prototype.storeObj = function() {
|
|
var pubKey = this.privKey.public.toString('hex');
|
|
var pubKeyHash = coinUtil.sha256ripe160(this.privKey.public);
|
|
var addr = new Address(this.network.addressPubkey, pubKeyHash);
|
|
var priv = new PrivateKey(this.network.keySecret, this.privKey.private, this.privKey.compressed);
|
|
var obj = {
|
|
created: this.created,
|
|
priv: priv.toString(),
|
|
pub: pubKey,
|
|
addr: addr.toString(),
|
|
};
|
|
|
|
return obj;
|
|
};
|
|
|
|
WalletKey.prototype.fromObj = function(obj) {
|
|
this.created = obj.created;
|
|
this.privKey = new KeyModule.Key();
|
|
if (obj.priv.length==64) {
|
|
this.privKey.private = new Buffer(obj.priv,'hex');
|
|
this.privKey.compressed = true;
|
|
}
|
|
else {
|
|
var priv = new PrivateKey(obj.priv);
|
|
this.privKey.private = new Buffer(priv.payload());
|
|
this.privKey.compressed = priv.compressed();
|
|
}
|
|
this.privKey.regenerateSync();
|
|
};
|
|
|
|
return WalletKey;
|
|
};
|
|
module.defineClass(ClassSpec);
|