Comparing version 2.0.1 to 3.0.0
@@ -133,3 +133,2 @@ 'use strict'; | ||
@return PublicKey or `null` (if the public_key string is invalid) | ||
@deprecated fromPublicKeyString (use fromString instead) | ||
*/ | ||
@@ -136,0 +135,0 @@ PublicKey.fromString = function (public_key) { |
@@ -5,2 +5,3 @@ 'use strict'; | ||
var assert = require('assert'); | ||
var config = require('./config'); | ||
@@ -10,3 +11,4 @@ var ecc = require('.'); | ||
var PublicKey = ecc.PublicKey, | ||
PrivateKey = ecc.PrivateKey; | ||
PrivateKey = ecc.PrivateKey, | ||
Signature = ecc.Signature; | ||
@@ -16,3 +18,3 @@ | ||
it('PrivateKey constructor', function () { | ||
PrivateKey.randomKey().then(function (privateKey) { | ||
return PrivateKey.randomKey().then(function (privateKey) { | ||
assert(privateKey.toWif() === PrivateKey(privateKey.toWif()).toWif()); | ||
@@ -28,3 +30,3 @@ assert(privateKey.toWif() === PrivateKey(privateKey.toBuffer()).toWif()); | ||
it('PublicKey constructor', function () { | ||
PrivateKey.randomKey().then(function (privateKey) { | ||
return PrivateKey.randomKey().then(function (privateKey) { | ||
var publicKey = privateKey.toPublic(); | ||
@@ -39,2 +41,11 @@ assert(publicKey.toString() === PublicKey(publicKey.toString()).toString()); | ||
}); | ||
it('Signature', function () { | ||
return PrivateKey.randomKey().then(function (privateKey) { | ||
var signature = Signature.sign('data', privateKey); | ||
var sigstr = signature.toString(); | ||
assert(sigstr.indexOf(config.address_prefix) === 0, 'signature string format'); | ||
assert(sigstr.length > 90, 'signature string is too short'); | ||
assert(Signature.from(sigstr), 'signature from string'); | ||
}); | ||
}); | ||
}); |
@@ -5,2 +5,3 @@ 'use strict'; | ||
var hash = require('./hash'); | ||
var base58 = require('bs58'); | ||
var curve = require('ecurve').getCurveByName('secp256k1'); | ||
@@ -11,2 +12,3 @@ var assert = require('assert'); | ||
var PrivateKey = require('./key_private'); | ||
var config = require('./config'); | ||
@@ -110,2 +112,17 @@ module.exports = Signature; | ||
var signatureCache = void 0; // cache | ||
function toString() { | ||
var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : config.address_prefix; | ||
if (signatureCache) { | ||
return prefix + signatureCache; | ||
} | ||
var pub_buf = toBuffer(); | ||
var checksum = hash.ripemd160(pub_buf); | ||
var signatureString = Buffer.concat([pub_buf, checksum.slice(0, 4)]); | ||
signatureCache = base58.encode(signatureString); | ||
return prefix + signatureCache; | ||
} | ||
return { | ||
@@ -120,2 +137,3 @@ r: r, s: s, i: i, | ||
toHex: toHex, | ||
toString: toString, | ||
@@ -206,2 +224,38 @@ /** @deprecated use verify (same arguments and return) */ | ||
/** | ||
@arg {string} signature - like STMXyz... | ||
@arg {string} address_prefix - like STM | ||
@return Signature or `null` (if the signature string is invalid) | ||
*/ | ||
Signature.fromString = function (signature) { | ||
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.address_prefix; | ||
try { | ||
return Signature.fromStringOrThrow(signature, prefix); | ||
} catch (e) { | ||
return null; | ||
} | ||
}; | ||
/** | ||
@arg {string} signature - like EOSKey.. | ||
@arg {string} address_prefix - like EOS | ||
@throws {Error} if public key is invalid | ||
@return Signature | ||
*/ | ||
Signature.fromStringOrThrow = function (signature) { | ||
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.address_prefix; | ||
var actualPrefix = signature.slice(0, prefix.length); | ||
assert.equal(actualPrefix, prefix, 'Expecting key to begin with ' + prefix + ', instead got ' + prefix); | ||
signature = signature.slice(prefix.length); | ||
signature = new Buffer(base58.decode(signature), 'binary'); | ||
var checksum = signature.slice(-4); | ||
signature = signature.slice(0, -4); | ||
var new_checksum = hash.ripemd160(signature); | ||
new_checksum = new_checksum.slice(0, 4); | ||
assert.deepEqual(checksum, new_checksum, 'Checksum did not match, ' + (checksum.toString('hex') + ' != ' + new_checksum.toString('hex'))); | ||
return Signature.fromBuffer(signature); | ||
}; | ||
/** | ||
@arg {String|Signature} o - hex string | ||
@@ -211,3 +265,3 @@ @return {Signature} | ||
Signature.from = function (o) { | ||
var signature = o ? o.r && o.s && o.i ? o : typeof o === 'string' ? Signature.fromHex(o) : Buffer.isBuffer(o) ? Signature.fromBuffer(o) : null : o; /*null or undefined*/ | ||
var signature = o ? o.r && o.s && o.i ? o : typeof o === 'string' && o.length === 130 ? Signature.fromHex(o) : typeof o === 'string' && o.length !== 130 ? Signature.fromString(o) : Buffer.isBuffer(o) ? Signature.fromBuffer(o) : null : o; /*null or undefined*/ | ||
@@ -214,0 +268,0 @@ if (!signature) { |
{ | ||
"name": "eosjs-ecc", | ||
"version": "2.0.1", | ||
"version": "3.0.0", | ||
"description": "Elliptic curve cryptography functions", | ||
@@ -5,0 +5,0 @@ "keywords": "ECC, Private Key, Public Key, Signature, AES, Encryption, Decryption", |
Sorry, the diff of this file is too big to display
1978280
50607