aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2012-01-12 10:33:21 -0500
committerGavin Andresen <gavinandresen@gmail.com>2012-01-13 10:22:24 -0500
commit9e8818ec9d01b3cf9e4aa601a96785c4fdc3f9b7 (patch)
tree39e986619b4e92a02ef2c2b1ad358c4119570c3e
parent4063460534768e2062585573548c293b39313a41 (diff)
Remove base58 encoding from validateaddress/addmultisigaddress
base58-encoding of full/compressed public keys needs more thought; it probably makes sense to define a base58 encoding that includes a version byte and a checksum. So just support hex and bitcoin-address encodings for now.
-rw-r--r--src/bitcoinrpc.cpp23
1 files changed, 4 insertions, 19 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index c1e4df4b6e..db595cbf96 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -994,7 +994,7 @@ Value addmultisigaddress(const Array& params, bool fHelp)
{
string msg = "addmultisigaddress <nrequired> <'[\"key\",\"key\"]'> [account]\n"
"Add a nrequired-to-sign multisignature address to the wallet\"\n"
- "each key is a bitcoin address, hex or base58 public key\n"
+ "each key is a bitcoin address or hex-encoded public key\n"
"If [account] is specified, assign address to [account].";
throw runtime_error(msg);
}
@@ -1028,32 +1028,19 @@ Value addmultisigaddress(const Array& params, bool fHelp)
if (!pwalletMain->GetKey(address, pubkeys[i]))
throw runtime_error(
strprintf("no full public key for address %s",ks.c_str()));
- continue;
}
// Case 2: hex public key
- if (IsHex(ks))
+ else if (IsHex(ks))
{
vector<unsigned char> vchPubKey = ParseHex(ks);
if (vchPubKey.empty() || !pubkeys[i].SetPubKey(vchPubKey))
throw runtime_error(" Invalid public key: "+ks);
- // There is approximately a zero percent chance a random
- // public key encoded as base58 will consist entirely
- // of hex characters.
- continue;
}
- // Case 3: base58-encoded public key
+ else
{
- vector<unsigned char> vchPubKey;
- if (!DecodeBase58(ks, vchPubKey))
- throw runtime_error("base58 decoding failed: "+ks);
- if (vchPubKey.size() < 33) // 33 is size of a compressed public key
- throw runtime_error("decoded public key too short: "+ks);
- if (pubkeys[i].SetPubKey(vchPubKey))
- continue;
+ throw runtime_error(" Invalid public key: "+ks);
}
-
- throw runtime_error(" Invalid public key: "+ks);
}
// Construct using pay-to-script-hash:
@@ -1739,8 +1726,6 @@ Value validateaddress(const Array& params, bool fHelp)
std::vector<unsigned char> vchPubKey;
pwalletMain->GetPubKey(address, vchPubKey);
ret.push_back(Pair("pubkey", HexStr(vchPubKey)));
- std::string strPubKey(vchPubKey.begin(), vchPubKey.end());
- ret.push_back(Pair("pubkey58", EncodeBase58(vchPubKey)));
CKey key;
key.SetPubKey(vchPubKey);
ret.push_back(Pair("iscompressed", key.IsCompressed()));