diff --git a/lib/publickey.js b/lib/publickey.js index 16821a4ba..3577801b1 100644 --- a/lib/publickey.js +++ b/lib/publickey.js @@ -52,8 +52,6 @@ var PublicKey = function PublicKey(data, extra) { info.point = data; } else if (PublicKey._isJSON(data)) { info = PublicKey._transformJSON(data); - } else if (typeof(data) === 'string') { - info = PublicKey._transformDER(new Buffer(data, 'hex')); } else if (PublicKey._isBuffer(data)) { info = PublicKey._transformDER(data); } else if (PublicKey._isPrivateKey(data)) { @@ -92,8 +90,7 @@ var PublicKey = function PublicKey(data, extra) { * @private */ PublicKey._isPrivateKey = function(param) { - return param && param.constructor && param.constructor.name - && param.constructor.name === 'PrivateKey'; + return param && param.constructor && param.constructor.name && param.constructor.name === 'PrivateKey'; }; /** @@ -143,7 +140,7 @@ PublicKey._transformPrivateKey = function(privkey) { * @returns {Object} An object with keys: point and compressed * @private */ -PublicKey._transformDER = function(buf){ +PublicKey._transformDER = function(buf) { var info = {}; if (!PublicKey._isBuffer(buf)) { throw new TypeError('Must be a hex buffer of DER encoded public key'); @@ -188,7 +185,7 @@ PublicKey._transformDER = function(buf){ * @returns {Object} An object with keys: point and compressed * @private */ -PublicKey._transformX = function(odd, x){ +PublicKey._transformX = function(odd, x) { var info = {}; if (typeof odd !== 'boolean') { throw new TypeError('Must specify whether y is odd or not (true or false)'); @@ -225,7 +222,9 @@ PublicKey._transformJSON = function(json) { var x = BN(json.x, 'hex'); var y = BN(json.y, 'hex'); var point = new Point(x, y); - return new PublicKey(point, {compressed: json.compressed}); + return new PublicKey(point, { + compressed: json.compressed + }); }; /** @@ -239,7 +238,10 @@ PublicKey.fromPrivateKey = function(privkey) { throw new TypeError('Must be an instance of PrivateKey'); } var info = PublicKey._transformPrivateKey(privkey); - return new PublicKey(info.point, {compressed: info.compressed, network: info.network}); + return new PublicKey(info.point, { + compressed: info.compressed, + network: info.network + }); }; /** @@ -253,7 +255,9 @@ PublicKey.fromDER = PublicKey.fromBuffer = function(buf) { throw new TypeError('Must be a hex buffer of DER encoded public key'); } var info = PublicKey._transformDER(buf); - return new PublicKey(info.point, {compressed: info.compressed}); + return new PublicKey(info.point, { + compressed: info.compressed + }); }; /** @@ -263,11 +267,13 @@ PublicKey.fromDER = PublicKey.fromBuffer = function(buf) { * @param {boolean=true} compressed - whether to store this public key as compressed format * @returns {PublicKey} A new valid instance of PublicKey */ -PublicKey.fromPoint = function(point, compressed){ +PublicKey.fromPoint = function(point, compressed) { if (!(point instanceof Point)) { throw new TypeError('First argument must be an instance of Point.'); } - return new PublicKey(point, {compressed: compressed}); + return new PublicKey(point, { + compressed: compressed + }); }; /** @@ -280,7 +286,9 @@ PublicKey.fromPoint = function(point, compressed){ PublicKey.fromString = function(str, encoding) { var buf = new Buffer(str, encoding || 'hex'); var info = PublicKey._transformDER(buf); - return new PublicKey(info.point, {compressed: info.compressed}); + return new PublicKey(info.point, { + compressed: info.compressed + }); }; /** @@ -292,7 +300,9 @@ PublicKey.fromString = function(str, encoding) { */ PublicKey.fromX = function(odd, x) { var info = PublicKey._transformX(odd, x); - return new PublicKey(info.point, {compressed: info.compressed}); + return new PublicKey(info.point, { + compressed: info.compressed + }); }; /** @@ -334,7 +344,7 @@ PublicKey.prototype.toObject = function toObject() { }; }; -PublicKey.prototype.toJSON = function toJSON(){ +PublicKey.prototype.toJSON = function toJSON() { return JSON.stringify(this.toObject()); }; @@ -347,8 +357,12 @@ PublicKey.prototype.toBuffer = PublicKey.prototype.toDER = function() { var x = this.point.getX(); var y = this.point.getY(); - var xbuf = x.toBuffer({size: 32}); - var ybuf = y.toBuffer({size: 32}); + var xbuf = x.toBuffer({ + size: 32 + }); + var ybuf = y.toBuffer({ + size: 32 + }); var prefix; if (!this.compressed) { @@ -395,4 +409,5 @@ PublicKey.prototype.inspect = function() { (this.network ? this.network.name : '') + '>'; }; + module.exports = PublicKey; diff --git a/lib/script_interpreter.js b/lib/script_interpreter.js index 2057b382c..d6839472c 100644 --- a/lib/script_interpreter.js +++ b/lib/script_interpreter.js @@ -149,7 +149,7 @@ ScriptInterpreter.prototype.checkSignatureEncoding = function(buf) { * Translated from bitcoind's CheckPubKeyEncoding */ ScriptInterpreter.prototype.checkPubkeyEncoding = function(buf) { - if ((this.flags & ScriptInterpreter.SCRIPT_VERIFY_STRICTENC) !== 0 && !PublicKey.isCompressedOrUncompressed(buf)) { + if ((this.flags & ScriptInterpreter.SCRIPT_VERIFY_STRICTENC) !== 0 && !PublicKey.isValid(buf)) { this.errstr = 'SCRIPT_ERR_PUBKEYTYPE'; return false; } @@ -879,7 +879,9 @@ ScriptInterpreter.prototype.step = function() { }); // Drop the signature, since there's no way for a signature to sign itself - subscript.findAndDelete(Script().writeBuffer(bufSig)); + console.log(subscript.toString()); + subscript.findAndDelete(Script().add(bufSig)); + console.log(subscript.toString()); if (!this.checkSignatureEncoding(bufSig) || !this.checkPubkeyEncoding(bufPubkey)) { // serror is set