|
|
|
@ -21,19 +21,17 @@ const std::string ExternalSigner::NetworkArg() const
|
|
|
|
|
return " --chain " + m_chain;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ExternalSigner::Enumerate(const std::string& command, std::vector<ExternalSigner>& signers, std::string chain, bool ignore_errors)
|
|
|
|
|
bool ExternalSigner::Enumerate(const std::string& command, std::vector<ExternalSigner>& signers, std::string chain)
|
|
|
|
|
{
|
|
|
|
|
// Call <command> enumerate
|
|
|
|
|
const UniValue result = RunCommandParseJSON(command + " enumerate");
|
|
|
|
|
if (!result.isArray()) {
|
|
|
|
|
if (ignore_errors) return false;
|
|
|
|
|
throw ExternalSignerException(strprintf("'%s' received invalid response, expected array of signers", command));
|
|
|
|
|
}
|
|
|
|
|
for (UniValue signer : result.getValues()) {
|
|
|
|
|
// Check for error
|
|
|
|
|
const UniValue& error = find_value(signer, "error");
|
|
|
|
|
if (!error.isNull()) {
|
|
|
|
|
if (ignore_errors) return false;
|
|
|
|
|
if (!error.isStr()) {
|
|
|
|
|
throw ExternalSignerException(strprintf("'%s' error", command));
|
|
|
|
|
}
|
|
|
|
@ -42,7 +40,6 @@ bool ExternalSigner::Enumerate(const std::string& command, std::vector<ExternalS
|
|
|
|
|
// Check if fingerprint is present
|
|
|
|
|
const UniValue& fingerprint = find_value(signer, "fingerprint");
|
|
|
|
|
if (fingerprint.isNull()) {
|
|
|
|
|
if (ignore_errors) return false;
|
|
|
|
|
throw ExternalSignerException(strprintf("'%s' received invalid response, missing signer fingerprint", command));
|
|
|
|
|
}
|
|
|
|
|
std::string fingerprintStr = fingerprint.get_str();
|
|
|
|
|