text: var Privkey = require('./privkey');
  var Pubkey = require('./pubkey');
  var BN = require('./bn');
  var point = require('./point');
  
  var Key = function Key(obj) {
    if (!(this instanceof Key))
      return new Key(obj);
    if (obj)
      this.set(obj);
  };
  
  Key.prototype.set = function(obj) {
    this.privkey = obj.privkey || this.privkey || undefined;
    this.pubkey = obj.pubkey || this.pubkey || undefined;
    return this;
  };
  
  Key.prototype.fromPrivkey = function(privkey) {
    this.privkey = privkey;
    this.privkey2pubkey();
    return this;
  };
  
  Key.prototype.fromRandom = function() {
    this.privkey = Privkey().fromRandom();
    this.privkey2pubkey();
    return this;
  };
  
  Key.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);
    }
  };
  
  Key.prototype.privkey2pubkey = function() {
    this.pubkey = Pubkey().fromPrivkey(this.privkey);
  };
  
  Key.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 = Key;
  