rpc: do not use Address.getHash.
This commit is contained in:
parent
7d61cda3aa
commit
76c20eddf1
@ -2052,17 +2052,18 @@ RPC.prototype.verifyMessage = co(function* verifyMessage(args, help) {
|
|||||||
var b58 = valid.str(0, '');
|
var b58 = valid.str(0, '');
|
||||||
var sig = valid.buf(1, null, 'base64');
|
var sig = valid.buf(1, null, 'base64');
|
||||||
var msg = valid.str(2);
|
var msg = valid.str(2);
|
||||||
var hash = Address.getHash(b58);
|
var addr, key;
|
||||||
var key;
|
|
||||||
|
|
||||||
if (help || args.length !== 3) {
|
if (help || args.length !== 3) {
|
||||||
throw new RPCError(errs.MISC_ERROR,
|
throw new RPCError(errs.MISC_ERROR,
|
||||||
'verifymessage "bitcoinaddress" "signature" "message"');
|
'verifymessage "bitcoinaddress" "signature" "message"');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hash || !sig || !msg)
|
if (!sig || !msg)
|
||||||
throw new RPCError(errs.TYPE_ERROR, 'Invalid parameters.');
|
throw new RPCError(errs.TYPE_ERROR, 'Invalid parameters.');
|
||||||
|
|
||||||
|
addr = parseAddress(b58, this.network);
|
||||||
|
|
||||||
msg = new Buffer(MAGIC_STRING + msg, 'utf8');
|
msg = new Buffer(MAGIC_STRING + msg, 'utf8');
|
||||||
msg = crypto.hash256(msg);
|
msg = crypto.hash256(msg);
|
||||||
|
|
||||||
@ -2073,7 +2074,7 @@ RPC.prototype.verifyMessage = co(function* verifyMessage(args, help) {
|
|||||||
|
|
||||||
key = crypto.hash160(key);
|
key = crypto.hash160(key);
|
||||||
|
|
||||||
return crypto.ccmp(key, hash);
|
return crypto.ccmp(key, addr.hash);
|
||||||
});
|
});
|
||||||
|
|
||||||
RPC.prototype.signMessageWithPrivkey = co(function* signMessageWithPrivkey(args, help) {
|
RPC.prototype.signMessageWithPrivkey = co(function* signMessageWithPrivkey(args, help) {
|
||||||
|
|||||||
@ -236,15 +236,12 @@ RPC.prototype.dumpPrivKey = co(function* dumpPrivKey(args, help) {
|
|||||||
var wallet = this.wallet;
|
var wallet = this.wallet;
|
||||||
var valid = new Validator([args]);
|
var valid = new Validator([args]);
|
||||||
var addr = valid.str(0, '');
|
var addr = valid.str(0, '');
|
||||||
var hash = Address.getHash(addr, 'hex');
|
var hash, ring;
|
||||||
var ring;
|
|
||||||
|
|
||||||
if (help || args.length !== 1)
|
if (help || args.length !== 1)
|
||||||
throw new RPCError(errs.MISC_ERROR, 'dumpprivkey "bitcoinaddress"');
|
throw new RPCError(errs.MISC_ERROR, 'dumpprivkey "bitcoinaddress"');
|
||||||
|
|
||||||
if (!hash)
|
hash = parseHash(addr, this.network);
|
||||||
throw new RPCError(errs.INVALID_ADDRESS_OR_KEY, 'Invalid address.');
|
|
||||||
|
|
||||||
ring = yield wallet.getPrivateKey(hash);
|
ring = yield wallet.getPrivateKey(hash);
|
||||||
|
|
||||||
if (!ring)
|
if (!ring)
|
||||||
@ -360,15 +357,12 @@ RPC.prototype.getAccount = co(function* getAccount(args, help) {
|
|||||||
var wallet = this.wallet;
|
var wallet = this.wallet;
|
||||||
var valid = new Validator([args]);
|
var valid = new Validator([args]);
|
||||||
var addr = valid.str(0, '');
|
var addr = valid.str(0, '');
|
||||||
var hash = Address.getHash(addr, 'hex');
|
var hash, path;
|
||||||
var path;
|
|
||||||
|
|
||||||
if (help || args.length !== 1)
|
if (help || args.length !== 1)
|
||||||
throw new RPCError(errs.MISC_ERROR, 'getaccount "bitcoinaddress"');
|
throw new RPCError(errs.MISC_ERROR, 'getaccount "bitcoinaddress"');
|
||||||
|
|
||||||
if (!hash)
|
hash = parseHash(addr, this.network);
|
||||||
throw new RPCError(errs.TYPE_ERROR, 'Invalid address.');
|
|
||||||
|
|
||||||
path = yield wallet.getPath(hash);
|
path = yield wallet.getPath(hash);
|
||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
@ -518,19 +512,16 @@ RPC.prototype.getReceivedByAddress = co(function* getReceivedByAddress(args, hel
|
|||||||
var valid = new Validator([args]);
|
var valid = new Validator([args]);
|
||||||
var addr = valid.str(0, '');
|
var addr = valid.str(0, '');
|
||||||
var minconf = valid.u32(1, 0);
|
var minconf = valid.u32(1, 0);
|
||||||
var hash = Address.getHash(addr, 'hex');
|
|
||||||
var height = this.wdb.state.height;
|
var height = this.wdb.state.height;
|
||||||
var total = 0;
|
var total = 0;
|
||||||
var i, j, wtx, output, txs;
|
var i, j, hash, wtx, output, txs;
|
||||||
|
|
||||||
if (help || args.length < 1 || args.length > 2) {
|
if (help || args.length < 1 || args.length > 2) {
|
||||||
throw new RPCError(errs.MISC_ERROR,
|
throw new RPCError(errs.MISC_ERROR,
|
||||||
'getreceivedbyaddress "bitcoinaddress" ( minconf )');
|
'getreceivedbyaddress "bitcoinaddress" ( minconf )');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hash)
|
hash = parseHash(addr, this.network);
|
||||||
throw new RPCError(errs.TYPE_ERROR, 'Invalid address');
|
|
||||||
|
|
||||||
txs = yield wallet.getHistory();
|
txs = yield wallet.getHistory();
|
||||||
|
|
||||||
for (i = 0; i < txs.length; i++) {
|
for (i = 0; i < txs.length; i++) {
|
||||||
@ -1217,10 +1208,7 @@ RPC.prototype.listUnspent = co(function* listUnspent(args, help) {
|
|||||||
valid = new Validator([addrs]);
|
valid = new Validator([addrs]);
|
||||||
for (i = 0; i < addrs.length; i++) {
|
for (i = 0; i < addrs.length; i++) {
|
||||||
address = valid.str(i, '');
|
address = valid.str(i, '');
|
||||||
hash = Address.getHash(address, 'hex');
|
hash = parseHash(address, this.network);
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
throw new RPCError(errs.INVALID_ADDRESS_OR_KEY, 'Invalid address.');
|
|
||||||
|
|
||||||
if (map[hash])
|
if (map[hash])
|
||||||
throw new RPCError(errs.INVALID_PARAMETER, 'Duplicate address.');
|
throw new RPCError(errs.INVALID_PARAMETER, 'Duplicate address.');
|
||||||
@ -1491,10 +1479,7 @@ RPC.prototype.signMessage = co(function* signMessage(args, help) {
|
|||||||
'signmessage "bitcoinaddress" "message"');
|
'signmessage "bitcoinaddress" "message"');
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = Address.getHash(addr, 'hex');
|
addr = parseHash(addr, this.network);
|
||||||
|
|
||||||
if (!addr)
|
|
||||||
throw new RPCError(errs.INVALID_ADDRESS_OR_KEY, 'Invalid address.');
|
|
||||||
|
|
||||||
ring = yield wallet.getKey(addr);
|
ring = yield wallet.getKey(addr);
|
||||||
|
|
||||||
@ -1672,6 +1657,11 @@ RPC.prototype.setLogLevel = co(function* setLogLevel(args, help) {
|
|||||||
* Helpers
|
* Helpers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
function parseHash(raw, network) {
|
||||||
|
var addr = parseAddress(raw, network);
|
||||||
|
return addr.getHash('hex');
|
||||||
|
}
|
||||||
|
|
||||||
function parseAddress(raw, network) {
|
function parseAddress(raw, network) {
|
||||||
try {
|
try {
|
||||||
return Address.fromString(raw, network);
|
return Address.fromString(raw, network);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user