From fa3e98b274ac95801396494f7147f9ba25249ac6 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Tue, 27 Jun 2017 02:48:19 -0700 Subject: [PATCH] crypto: rename ec to secp256k1. --- lib/bcoin-browser.js | 4 ++-- lib/bcoin.js | 4 ++-- lib/coins/compress.js | 8 +++---- lib/crypto/ec.js | 21 ------------------- lib/crypto/index.js | 6 +++--- .../{ec-elliptic.js => secp256k1-elliptic.js} | 4 ++-- .../{ec-secp256k1.js => secp256k1-native.js} | 4 ++-- lib/crypto/secp256k1.js | 21 +++++++++++++++++++ lib/hd/private.js | 18 ++++++++-------- lib/hd/public.js | 4 ++-- lib/http/rpc.js | 6 +++--- lib/net/bip150.js | 12 +++++------ lib/net/bip151.js | 8 +++---- lib/net/pool.js | 8 +++---- lib/node/node.js | 4 ++-- lib/primitives/keyring.js | 18 ++++++++-------- lib/primitives/tx.js | 6 +++--- lib/script/common.js | 4 ++-- lib/script/script.js | 4 ++-- lib/script/sigcache.js | 6 +++--- lib/workers/jobs.js | 14 ++++++------- lib/workers/workerpool.js | 4 ++-- migrate/compress-old.js | 8 +++---- migrate/walletdb2to3.js | 2 +- package.json | 2 +- test/bip150-test.js | 10 ++++----- test/utils-test.js | 6 +++--- 27 files changed, 108 insertions(+), 108 deletions(-) delete mode 100644 lib/crypto/ec.js rename lib/crypto/{ec-elliptic.js => secp256k1-elliptic.js} (98%) rename lib/crypto/{ec-secp256k1.js => secp256k1-native.js} (98%) create mode 100644 lib/crypto/secp256k1.js diff --git a/lib/bcoin-browser.js b/lib/bcoin-browser.js index 775c75c7..233c0410 100644 --- a/lib/bcoin-browser.js +++ b/lib/bcoin-browser.js @@ -34,7 +34,7 @@ * @property {Function} coinview * * @property {Object} crypto - * @property {Object} ec + * @property {Object} secp256k1 * @property {Object} schnorr * * @property {Object} db @@ -167,7 +167,7 @@ bcoin.coinview = require('./coins/coinview'); // Crypto bcoin.crypto = require('./crypto'); bcoin.bn = require('./crypto/bn'); -bcoin.ec = require('./crypto/ec'); +bcoin.secp256k1 = require('./crypto/secp256k1'); bcoin.schnorr = require('./crypto/schnorr'); // DB diff --git a/lib/bcoin.js b/lib/bcoin.js index b186f149..43bda89f 100644 --- a/lib/bcoin.js +++ b/lib/bcoin.js @@ -34,7 +34,7 @@ * @property {Function} coinview * * @property {Object} crypto - * @property {Object} ec + * @property {Object} secp256k1 * @property {Object} schnorr * * @property {Object} db @@ -187,7 +187,7 @@ bcoin.define('coinview', './coins/coinview'); // Crypto bcoin.define('crypto', './crypto'); bcoin.define('bn', './crypto/bn'); -bcoin.define('ec', './crypto/ec'); +bcoin.define('secp256k1', './crypto/secp256k1'); bcoin.define('schnorr', './crypto/schnorr'); // DB diff --git a/lib/coins/compress.js b/lib/coins/compress.js index 1c8fdbcf..57aae58f 100644 --- a/lib/coins/compress.js +++ b/lib/coins/compress.js @@ -12,7 +12,7 @@ */ var assert = require('assert'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var encoding = require('../utils/encoding'); var consensus = require('../protocol/consensus'); @@ -323,7 +323,7 @@ function publicKeyVerify(key) { if (key.length !== 65) return false; - return ec.publicKeyVerify(key); + return secp256k1.publicKeyVerify(key); default: return false; } @@ -346,7 +346,7 @@ function compressKey(key) { break; case 0x04: // Compress the key normally. - out = ec.publicKeyConvert(key, true); + out = secp256k1.publicKeyConvert(key, true); // Store the oddness. // Pseudo-hybrid format. out[0] = 0x04 | (key[64] & 0x01); @@ -387,7 +387,7 @@ function decompressKey(key) { } // Decompress the key. - out = ec.publicKeyConvert(key, false); + out = secp256k1.publicKeyConvert(key, false); // Reset the first byte so as not to // mutate the original buffer. diff --git a/lib/crypto/ec.js b/lib/crypto/ec.js deleted file mode 100644 index 69909aea..00000000 --- a/lib/crypto/ec.js +++ /dev/null @@ -1,21 +0,0 @@ -/*! - * ec.js - ecdsa wrapper for secp256k1 and elliptic - * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -var secp256k1; - -if (+process.env.BCOIN_USE_ELLIPTIC !== 1) { - try { - secp256k1 = require('secp256k1/bindings'); - } catch (e) { - ; - } -} - -module.exports = secp256k1 - ? require('./ec-secp256k1') - : require('./ec-elliptic'); diff --git a/lib/crypto/index.js b/lib/crypto/index.js index 3818d165..40c3266d 100644 --- a/lib/crypto/index.js +++ b/lib/crypto/index.js @@ -321,11 +321,11 @@ exports.rsa = require('./rsa'); exports.ecdsa = require('./ecdsa'); /** - * ec module - * @see module:crypto/ec + * secp256k1 module + * @see module:crypto/secp256k1 */ -exports.ec = require('./ec'); +exports.secp256k1 = require('./secp256k1'); /** * schnorr module diff --git a/lib/crypto/ec-elliptic.js b/lib/crypto/secp256k1-elliptic.js similarity index 98% rename from lib/crypto/ec-elliptic.js rename to lib/crypto/secp256k1-elliptic.js index f320b276..5980ef96 100644 --- a/lib/crypto/ec-elliptic.js +++ b/lib/crypto/secp256k1-elliptic.js @@ -1,5 +1,5 @@ /*! - * ec.js - ecdsa wrapper for elliptic + * secp256k1-elliptic.js - wrapper for elliptic * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). * https://github.com/bcoin-org/bcoin @@ -15,7 +15,7 @@ var BN = require('./bn'); var curve = secp256k1.curve; /** - * @exports crypto/ec-elliptic + * @exports crypto/secp256k1-elliptic * @ignore */ diff --git a/lib/crypto/ec-secp256k1.js b/lib/crypto/secp256k1-native.js similarity index 98% rename from lib/crypto/ec-secp256k1.js rename to lib/crypto/secp256k1-native.js index 210a4123..f14712e0 100644 --- a/lib/crypto/ec-secp256k1.js +++ b/lib/crypto/secp256k1-native.js @@ -1,5 +1,5 @@ /*! - * ec-secp256k1.js - ecdsa wrapper for secp256k1 + * secp256k1-native.js - wrapper for secp256k1-node * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). * https://github.com/bcoin-org/bcoin @@ -12,7 +12,7 @@ var backend = require('./backend'); var secp256k1 = require('secp256k1'); /** - * @exports crypto/ec + * @exports crypto/secp256k1 */ var ec = exports; diff --git a/lib/crypto/secp256k1.js b/lib/crypto/secp256k1.js new file mode 100644 index 00000000..04d113dc --- /dev/null +++ b/lib/crypto/secp256k1.js @@ -0,0 +1,21 @@ +/*! + * secp256k1.js - ecdsa wrapper for secp256k1 and elliptic + * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). + * https://github.com/bcoin-org/bcoin + */ + +'use strict'; + +var native; + +if (+process.env.BCOIN_USE_ELLIPTIC !== 1) { + try { + native = require('secp256k1/bindings'); + } catch (e) { + ; + } +} + +module.exports = native + ? require('./secp256k1-native') + : require('./secp256k1-elliptic'); diff --git a/lib/hd/private.js b/lib/hd/private.js index 21158bb6..572589d8 100644 --- a/lib/hd/private.js +++ b/lib/hd/private.js @@ -9,7 +9,7 @@ var assert = require('assert'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var Network = require('../protocol/network'); var StaticWriter = require('../utils/staticwriter'); var BufferReader = require('../utils/reader'); @@ -83,7 +83,7 @@ HDPrivateKey.prototype.fromOptions = function fromOptions(options) { this.childIndex = options.childIndex; this.chainCode = options.chainCode; this.privateKey = options.privateKey; - this.publicKey = ec.publicKeyCreate(options.privateKey, true); + this.publicKey = secp256k1.publicKeyCreate(options.privateKey, true); return this; }; @@ -213,7 +213,7 @@ HDPrivateKey.prototype.derive = function derive(index, hardened) { right = hash.slice(32, 64); try { - key = ec.privateKeyTweakAdd(this.privateKey, left); + key = secp256k1.privateKeyTweakAdd(this.privateKey, left); } catch (e) { return this.derive(index + 1); } @@ -228,7 +228,7 @@ HDPrivateKey.prototype.derive = function derive(index, hardened) { child.childIndex = index; child.chainCode = right; child.privateKey = key; - child.publicKey = ec.publicKeyCreate(key, true); + child.publicKey = secp256k1.publicKeyCreate(key, true); common.cache.set(id, child); @@ -470,7 +470,7 @@ HDPrivateKey.prototype.fromSeed = function fromSeed(seed, network) { right = hash.slice(32, 64); // Only a 1 in 2^127 chance of happening. - if (!ec.privateKeyVerify(left)) + if (!secp256k1.privateKeyVerify(left)) throw new Error('Master private key is invalid.'); this.network = Network.get(network); @@ -479,7 +479,7 @@ HDPrivateKey.prototype.fromSeed = function fromSeed(seed, network) { this.childIndex = 0; this.chainCode = right; this.privateKey = left; - this.publicKey = ec.publicKeyCreate(left, true); + this.publicKey = secp256k1.publicKeyCreate(left, true); return this; }; @@ -559,7 +559,7 @@ HDPrivateKey.prototype.fromKey = function fromKey(key, entropy, network) { this.childIndex = 0; this.chainCode = entropy; this.privateKey = key; - this.publicKey = ec.publicKeyCreate(key, true); + this.publicKey = secp256k1.publicKeyCreate(key, true); return this; }; @@ -582,7 +582,7 @@ HDPrivateKey.fromKey = function fromKey(key, entropy, network) { */ HDPrivateKey.generate = function generate(network) { - var key = ec.generatePrivateKey(); + var key = secp256k1.generatePrivateKey(); var entropy = crypto.randomBytes(32); return HDPrivateKey.fromKey(key, entropy, network); }; @@ -617,7 +617,7 @@ HDPrivateKey.prototype.fromReader = function fromReader(br, network) { this.chainCode = br.readBytes(32); assert(br.readU8() === 0); this.privateKey = br.readBytes(32); - this.publicKey = ec.publicKeyCreate(this.privateKey, true); + this.publicKey = secp256k1.publicKeyCreate(this.privateKey, true); br.verifyChecksum(); diff --git a/lib/hd/public.js b/lib/hd/public.js index a4af6eba..6396a367 100644 --- a/lib/hd/public.js +++ b/lib/hd/public.js @@ -9,7 +9,7 @@ var assert = require('assert'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var Network = require('../protocol/network'); var StaticWriter = require('../utils/staticwriter'); var BufferReader = require('../utils/reader'); @@ -180,7 +180,7 @@ HDPublicKey.prototype.derive = function derive(index, hardened) { right = hash.slice(32, 64); try { - key = ec.publicKeyTweakAdd(this.publicKey, left, true); + key = secp256k1.publicKeyTweakAdd(this.publicKey, left, true); } catch (e) { return this.derive(index + 1); } diff --git a/lib/http/rpc.js b/lib/http/rpc.js index c1cfcf7e..3817aa23 100644 --- a/lib/http/rpc.js +++ b/lib/http/rpc.js @@ -11,7 +11,7 @@ var co = require('../utils/co'); var crypto = require('../crypto/crypto'); var assert = require('assert'); var common = require('../blockchain/common'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var Amount = require('../btc/amount'); var NetAddress = require('../primitives/netaddress'); var Script = require('../script/script'); @@ -1980,7 +1980,7 @@ RPC.prototype.createMultisig = async function createMultisig(args, help) { if (!key) throw new RPCError(errs.TYPE_ERROR, 'Invalid key.'); - if (!ec.publicKeyVerify(key)) + if (!secp256k1.publicKeyVerify(key)) throw new RPCError(errs.INVALID_ADDRESS_OR_KEY, 'Invalid key.'); keys[i] = key; @@ -2067,7 +2067,7 @@ RPC.prototype.verifyMessage = async function verifyMessage(args, help) { msg = Buffer.from(MAGIC_STRING + msg, 'utf8'); msg = crypto.hash256(msg); - key = ec.recover(msg, sig, 0, true); + key = secp256k1.recover(msg, sig, 0, true); if (!key) return false; diff --git a/lib/net/bip150.js b/lib/net/bip150.js index f73edeca..e652ba02 100644 --- a/lib/net/bip150.js +++ b/lib/net/bip150.js @@ -15,7 +15,7 @@ var util = require('../utils/util'); var co = require('../utils/co'); var crypto = require('../crypto/crypto'); var packets = require('./packets'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var StaticWriter = require('../utils/staticwriter'); var base58 = require('../utils/base58'); var encoding = require('../utils/encoding'); @@ -69,7 +69,7 @@ function BIP150(bip151, host, outbound, db, key) { this.outbound = outbound; this.db = db; this.privateKey = key; - this.publicKey = ec.publicKeyCreate(key, true); + this.publicKey = secp256k1.publicKeyCreate(key, true); this.peerIdentity = null; this.challengeReceived = false; @@ -139,10 +139,10 @@ BIP150.prototype.challenge = function challenge(hash) { this.emit('auth'); } - sig = ec.sign(msg, this.privateKey); + sig = secp256k1.sign(msg, this.privateKey); // authreply - return ec.fromDER(sig); + return secp256k1.fromDER(sig); }; /** @@ -167,10 +167,10 @@ BIP150.prototype.reply = function reply(data) { if (!this.peerIdentity) return crypto.randomBytes(32); - sig = ec.toDER(data); + sig = secp256k1.toDER(data); msg = this.hash(this.output.sid, type, this.peerIdentity); - result = ec.verify(msg, sig, this.peerIdentity); + result = secp256k1.verify(msg, sig, this.peerIdentity); if (!result) return crypto.randomBytes(32); diff --git a/lib/net/bip151.js b/lib/net/bip151.js index 630fca60..84f21c65 100644 --- a/lib/net/bip151.js +++ b/lib/net/bip151.js @@ -19,7 +19,7 @@ var crypto = require('../crypto/crypto'); var assert = require('assert'); var chachapoly = require('../crypto/chachapoly'); var packets = require('./packets'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var StaticWriter = require('../utils/staticwriter'); var BufferReader = require('../utils/reader'); var encoding = require('../utils/encoding'); @@ -61,7 +61,7 @@ function BIP151Stream(cipher) { return new BIP151Stream(cipher); this.cipher = BIP151.ciphers.CHACHAPOLY; - this.privateKey = ec.generatePrivateKey(); + this.privateKey = secp256k1.generatePrivateKey(); this.publicKey = null; this.secret = null; this.prk = null; @@ -95,7 +95,7 @@ BIP151Stream.prototype.init = function init(publicKey) { var bw = new StaticWriter(33); this.publicKey = publicKey; - this.secret = ec.ecdh(this.publicKey, this.privateKey); + this.secret = secp256k1.ecdh(this.publicKey, this.privateKey); bw.writeBytes(this.secret); bw.writeU8(this.cipher); @@ -208,7 +208,7 @@ BIP151Stream.prototype.update = function update() { */ BIP151Stream.prototype.getPublicKey = function getPublicKey() { - return ec.publicKeyCreate(this.privateKey, true); + return secp256k1.publicKeyCreate(this.privateKey, true); }; /** diff --git a/lib/net/pool.js b/lib/net/pool.js index c730e826..79d6dedb 100644 --- a/lib/net/pool.js +++ b/lib/net/pool.js @@ -20,7 +20,7 @@ var BIP150 = require('./bip150'); var BIP151 = require('./bip151'); var BIP152 = require('./bip152'); var Bloom = require('../utils/bloom'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var Lock = require('../utils/lock'); var Network = require('../protocol/network'); var Peer = require('./peer'); @@ -233,7 +233,7 @@ Pool.prototype._open = async function _open() { this.logger.info('Pool loaded (maxpeers=%d).', this.options.maxOutbound); if (this.options.bip150) { - key = ec.publicKeyCreate(this.options.identityKey, true); + key = secp256k1.publicKeyCreate(this.options.identityKey, true); this.logger.info('Identity public key: %s.', key.toString('hex')); this.logger.info('Identity address: %s.', BIP150.address(key)); } @@ -3754,7 +3754,7 @@ function PoolOptions(options) { this.bip150 = false; this.authPeers = []; this.knownPeers = {}; - this.identityKey = ec.generatePrivateKey(); + this.identityKey = secp256k1.generatePrivateKey(); this.banScore = common.BAN_SCORE; this.banTime = common.BAN_TIME; this.feeRate = -1; @@ -3949,7 +3949,7 @@ PoolOptions.prototype.fromOptions = function fromOptions(options) { if (options.identityKey) { assert(Buffer.isBuffer(options.identityKey), 'Identity key must be a buffer.'); - assert(ec.privateKeyVerify(options.identityKey), + assert(secp256k1.privateKeyVerify(options.identityKey), 'Invalid identity key.'); this.identityKey = options.identityKey; } diff --git a/lib/node/node.js b/lib/node/node.js index 76fe855d..c3552e88 100644 --- a/lib/node/node.js +++ b/lib/node/node.js @@ -13,7 +13,7 @@ var util = require('../utils/util'); var Network = require('../protocol/network'); var Logger = require('./logger'); var workerPool = require('../workers/workerpool').pool; -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var native = require('../utils/native'); var Config = require('./config'); @@ -181,7 +181,7 @@ Node.prototype.handlePreopen = async function handlePreopen() { Node.prototype.handleOpen = async function handleOpen() { this.startTime = util.now(); - if (!ec.binding) { + if (!secp256k1.binding) { this.logger.warning('Warning: secp256k1-node was not built.'); this.logger.warning('Verification will be slow.'); } diff --git a/lib/primitives/keyring.js b/lib/primitives/keyring.js index 30ca8e10..5f8948f3 100644 --- a/lib/primitives/keyring.js +++ b/lib/primitives/keyring.js @@ -17,7 +17,7 @@ var base58 = require('../utils/base58'); var Script = require('../script/script'); var Address = require('./address'); var Output = require('./output'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); /** * Represents a key ring which amounts to an address. @@ -127,7 +127,7 @@ KeyRing.prototype.refresh = function refresh() { KeyRing.prototype.fromPrivate = function fromPrivate(key, compressed, network) { assert(Buffer.isBuffer(key), 'Private key must be a buffer.'); - assert(ec.privateKeyVerify(key), 'Not a valid private key.'); + assert(secp256k1.privateKeyVerify(key), 'Not a valid private key.'); if (typeof compressed !== 'boolean') { network = compressed; @@ -136,7 +136,7 @@ KeyRing.prototype.fromPrivate = function fromPrivate(key, compressed, network) { this.network = Network.get(network); this.privateKey = key; - this.publicKey = ec.publicKeyCreate(key, compressed !== false); + this.publicKey = secp256k1.publicKeyCreate(key, compressed !== false); return this; }; @@ -162,7 +162,7 @@ KeyRing.fromPrivate = function fromPrivate(key, compressed, network) { KeyRing.prototype.fromPublic = function fromPublic(key, network) { assert(Buffer.isBuffer(key), 'Public key must be a buffer.'); - assert(ec.publicKeyVerify(key), 'Not a valid public key.'); + assert(secp256k1.publicKeyVerify(key), 'Not a valid public key.'); this.network = Network.get(network); this.publicKey = key; return this; @@ -183,7 +183,7 @@ KeyRing.prototype.generate = function(compressed, network) { compressed = null; } - key = ec.generatePrivateKey(); + key = secp256k1.generatePrivateKey(); return this.fromKey(key, compressed, network); }; @@ -704,7 +704,7 @@ KeyRing.prototype.getRedeem = function(hash) { KeyRing.prototype.sign = function sign(msg) { assert(this.privateKey, 'Cannot sign without private key.'); - return ec.sign(msg, this.privateKey); + return secp256k1.sign(msg, this.privateKey); }; /** @@ -715,7 +715,7 @@ KeyRing.prototype.sign = function sign(msg) { */ KeyRing.prototype.verify = function verify(msg, sig) { - return ec.verify(msg, sig, this.publicKey); + return secp256k1.verify(msg, sig, this.publicKey); }; /** @@ -894,10 +894,10 @@ KeyRing.prototype.fromReader = function fromReader(br, network) { if (key.length === 32) { compressed = br.readU8() === 1; this.privateKey = key; - this.publicKey = ec.publicKeyCreate(key, compressed); + this.publicKey = secp256k1.publicKeyCreate(key, compressed); } else { this.publicKey = key; - assert(ec.publicKeyVerify(key), 'Invalid public key.'); + assert(secp256k1.publicKeyVerify(key), 'Invalid public key.'); } script = br.readVarBytes(); diff --git a/lib/primitives/tx.js b/lib/primitives/tx.js index 2d0ec4ee..6ac2bc78 100644 --- a/lib/primitives/tx.js +++ b/lib/primitives/tx.js @@ -11,7 +11,7 @@ var assert = require('assert'); var util = require('../utils/util'); var encoding = require('../utils/encoding'); var crypto = require('../crypto/crypto'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var Amount = require('../btc/amount'); var Network = require('../protocol/network'); var Script = require('../script/script'); @@ -740,7 +740,7 @@ TX.prototype.checksig = function checksig(index, prev, value, sig, key, version) type = sig[sig.length - 1]; hash = this.signatureHash(index, prev, value, type, version); - return ec.verify(hash, sig.slice(0, -1), key); + return secp256k1.verify(hash, sig.slice(0, -1), key); }; /** @@ -767,7 +767,7 @@ TX.prototype.signature = function signature(index, prev, value, key, type, versi hash = this.signatureHash(index, prev, value, type, version); - sig = ec.sign(hash, key); + sig = secp256k1.sign(hash, key); bw = new StaticWriter(sig.length + 1); bw.writeBytes(sig); diff --git a/lib/script/common.js b/lib/script/common.js index 9d15bcb6..e1fec33c 100644 --- a/lib/script/common.js +++ b/lib/script/common.js @@ -14,7 +14,7 @@ var assert = require('assert'); var BN = require('../crypto/bn'); var util = require('../utils/util'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); /** * Script opcodes. @@ -347,7 +347,7 @@ exports.isLowDER = function isLowDER(sig) { if (!exports.isSignatureEncoding(sig)) return false; - return ec.isLowS(sig.slice(0, -1)); + return secp256k1.isLowS(sig.slice(0, -1)); }; /** diff --git a/lib/script/script.js b/lib/script/script.js index 9c05299d..acc5b15f 100644 --- a/lib/script/script.js +++ b/lib/script/script.js @@ -21,7 +21,7 @@ var Opcode = require('./opcode'); var Stack = require('./stack'); var common = require('./common'); var encoding = require('../utils/encoding'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var Address = require('../primitives/address'); var opcodes = common.opcodes; var scriptTypes = common.types; @@ -3254,7 +3254,7 @@ function validateSignature(sig, flags) { */ function checksig(msg, sig, key) { - return ec.verify(msg, sig.slice(0, -1), key); + return secp256k1.verify(msg, sig.slice(0, -1), key); } /* diff --git a/lib/script/sigcache.js b/lib/script/sigcache.js index f6da0eb2..7a2a093c 100644 --- a/lib/script/sigcache.js +++ b/lib/script/sigcache.js @@ -8,7 +8,7 @@ var assert = require('assert'); var util = require('../utils/util'); -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); /** * Signature cache. @@ -105,14 +105,14 @@ SigCache.prototype.verify = function verify(msg, sig, key) { var hash, result; if (this.size === 0) - return ec.verify(msg, sig, key); + return secp256k1.verify(msg, sig, key); hash = msg.toString('hex'); if (this.has(hash, sig, key)) return true; - result = ec.verify(msg, sig, key); + result = secp256k1.verify(msg, sig, key); if (!result) return false; diff --git a/lib/workers/jobs.js b/lib/workers/jobs.js index c95ca90f..ccb6c43b 100644 --- a/lib/workers/jobs.js +++ b/lib/workers/jobs.js @@ -6,7 +6,7 @@ 'use strict'; -var ec = require('../crypto/ec'); +var secp256k1 = require('../crypto/secp256k1'); var scrypt = require('../crypto/scrypt'); var mine = require('../mining/mine'); var packets = require('./packets'); @@ -122,21 +122,21 @@ jobs.signInput = function signInput(tx, index, coin, ring, type) { }; /** - * Execute ec.verify() on worker. - * @see ec.verify + * Execute secp256k1.verify() on worker. + * @see secp256k1.verify * @param {TX} tx * @param {VerifyFlags} flags * @returns {Boolean} */ jobs.ecVerify = function ecVerify(msg, sig, key) { - var result = ec.verify(msg, sig, key); + var result = secp256k1.verify(msg, sig, key); return new packets.ECVerifyResultPacket(result); }; /** - * Execute ec.sign() on worker. - * @see ec.sign + * Execute secp256k1.sign() on worker. + * @see secp256k1.sign * @param {TX} tx * @param {Number} index * @param {VerifyFlags} flags @@ -144,7 +144,7 @@ jobs.ecVerify = function ecVerify(msg, sig, key) { */ jobs.ecSign = function ecSign(msg, key) { - var sig = ec.sign(msg, key); + var sig = secp256k1.sign(msg, key); return new packets.ECSignResultPacket(sig); }; diff --git a/lib/workers/workerpool.js b/lib/workers/workerpool.js index 94a99916..30c9556a 100644 --- a/lib/workers/workerpool.js +++ b/lib/workers/workerpool.js @@ -381,7 +381,7 @@ WorkerPool.prototype.signInput = async function signInput(tx, index, coin, ring, }; /** - * Execute the ec verify job (no timeout). + * Execute the secp256k1 verify job (no timeout). * @method * @param {Buffer} msg * @param {Buffer} sig - DER formatted. @@ -396,7 +396,7 @@ WorkerPool.prototype.ecVerify = async function ecVerify(msg, sig, key) { }; /** - * Execute the ec signing job (no timeout). + * Execute the secp256k1 signing job (no timeout). * @method * @param {Buffer} msg * @param {Buffer} key diff --git a/migrate/compress-old.js b/migrate/compress-old.js index dd32bc71..bc8968b7 100644 --- a/migrate/compress-old.js +++ b/migrate/compress-old.js @@ -7,7 +7,7 @@ 'use strict'; var assert = require('assert'); -var ec = require('../lib/crypto/ec'); +var secp256k1 = require('../lib/crypto/secp256k1'); /* * Compression @@ -51,7 +51,7 @@ function compressScript(script, bw) { // Saves up to 34 bytes. if (script.isPubkey(true)) { data = script.code[0].data; - if (ec.publicKeyVerify(data)) { + if (secp256k1.publicKeyVerify(data)) { data = compressKey(data); bw.writeU8(3); bw.writeBytes(data); @@ -184,7 +184,7 @@ function compressKey(key) { case 0x06: case 0x07: // Compress the key normally. - out = ec.publicKeyConvert(key, true); + out = secp256k1.publicKeyConvert(key, true); // Store the original format (which // may be a hybrid byte) in the hi // 3 bits so we can restore it later. @@ -223,7 +223,7 @@ function decompressKey(key) { // low bits so publicKeyConvert // actually understands it. key[0] &= 0x03; - out = ec.publicKeyConvert(key, false); + out = secp256k1.publicKeyConvert(key, false); // Reset the hi bits so as not to // mutate the original buffer. diff --git a/migrate/walletdb2to3.js b/migrate/walletdb2to3.js index 2a668cab..1f14fe7a 100644 --- a/migrate/walletdb2to3.js +++ b/migrate/walletdb2to3.js @@ -348,7 +348,7 @@ function keyFromRaw(data, network) { if (key.length === 32) { ring.privateKey = key; - ring.publicKey = bcoin.ec.publicKeyCreate(key, true); + ring.publicKey = bcoin.secp256k1.publicKeyCreate(key, true); } else { ring.publicKey = key; } diff --git a/package.json b/package.json index 1024c5a7..8a147b87 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "./lib/bcoin": "./lib/bcoin-browser.js", "./lib/blockchain/layout.js": "./lib/blockchain/layout-browser.js", "./lib/crypto/backend.js": "./lib/crypto/backend-browser.js", - "./lib/crypto/ec.js": "./lib/crypto/ec-elliptic.js", + "./lib/crypto/secp256k1.js": "./lib/crypto/secp256k1-elliptic.js", "./lib/crypto/rsa.js": "./lib/crypto/rsa-browser.js", "./lib/db/backends.js": "./lib/db/backends-browser.js", "./lib/hd/wordlist": "./lib/hd/wordlist-browser.js", diff --git a/test/bip150-test.js b/test/bip150-test.js index b6708bcd..4c506295 100644 --- a/test/bip150-test.js +++ b/test/bip150-test.js @@ -1,17 +1,17 @@ 'use strict'; var assert = require('assert'); -var ec = require('../lib/crypto/ec'); +var secp256k1 = require('../lib/crypto/secp256k1'); var BIP150 = require('../lib/net/bip150'); var BIP151 = require('../lib/net/bip151'); describe('BIP150', function() { var db = new BIP150.AuthDB(); - var ck = ec.generatePrivateKey(); - var sk = ec.generatePrivateKey(); + var ck = secp256k1.generatePrivateKey(); + var sk = secp256k1.generatePrivateKey(); - db.addAuthorized(ec.publicKeyCreate(ck, true)); - db.addKnown('127.0.0.2', ec.publicKeyCreate(sk, true)); + db.addAuthorized(secp256k1.publicKeyCreate(ck, true)); + db.addKnown('127.0.0.2', secp256k1.publicKeyCreate(sk, true)); var client = new BIP151(); var server = new BIP151(); diff --git a/test/utils-test.js b/test/utils-test.js index bf82f5bd..f415f8eb 100644 --- a/test/utils-test.js +++ b/test/utils-test.js @@ -2,7 +2,7 @@ var assert = require('assert'); var BN = require('../lib/crypto/bn'); -var ec = require('../lib/crypto/ec'); +var secp256k1 = require('../lib/crypto/secp256k1'); var base58 = require('../lib/utils/base58'); var encoding = require('../lib/utils/encoding'); var crypto = require('../lib/crypto/crypto'); @@ -321,8 +321,8 @@ describe('Utils', function() { }); it('should do proper schnorr', function() { - var key = ec.generatePrivateKey(); - var pub = ec.publicKeyCreate(key, true); + var key = secp256k1.generatePrivateKey(); + var pub = secp256k1.publicKeyCreate(key, true); var msg = crypto.hash256(Buffer.from('foo', 'ascii')); var sig = schnorr.sign(msg, key); assert(schnorr.verify(msg, sig, pub));