aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/simplewallet/password_container.cpp5
-rw-r--r--src/simplewallet/password_container.h2
-rw-r--r--src/simplewallet/simplewallet.cpp15
3 files changed, 14 insertions, 8 deletions
diff --git a/src/simplewallet/password_container.cpp b/src/simplewallet/password_container.cpp
index e5fb933bb..c1a570a3a 100644
--- a/src/simplewallet/password_container.cpp
+++ b/src/simplewallet/password_container.cpp
@@ -81,14 +81,15 @@ namespace tools
m_empty = true;
}
- bool password_container::read_password()
+ bool password_container::read_password(const char *message)
{
clear();
bool r;
if (is_cin_tty())
{
- std::cout << "password: ";
+ if (message)
+ std::cout << message << ": ";
r = read_from_tty();
}
else
diff --git a/src/simplewallet/password_container.h b/src/simplewallet/password_container.h
index 8a4191c7a..56dd44cfa 100644
--- a/src/simplewallet/password_container.h
+++ b/src/simplewallet/password_container.h
@@ -48,7 +48,7 @@ namespace tools
bool empty() const { return m_empty; }
const std::string& password() const { return m_password; }
void password(std::string&& val) { m_password = std::move(val); m_empty = false; }
- bool read_password();
+ bool read_password(const char *message = "password");
private:
bool read_from_file();
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
index 6ed7bdcda..c4d0acb7a 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -768,18 +768,23 @@ bool simple_wallet::save_watch_only(const std::vector<std::string> &args/* = std
{
bool success = false;
tools::password_container pwd_container;
- success = pwd_container.read_password();
+
+ success = pwd_container.read_password("Password for the new watch-only wallet");
if (!success)
{
fail_msg_writer() << "failed to read wallet password";
return true;
}
-
- /* verify password before using so user doesn't accidentally set a new password for rewritten wallet */
- success = m_wallet->verify_password(pwd_container.password());
+ std::string password = pwd_container.password();
+ success = pwd_container.read_password("Enter new password again");
if (!success)
{
- fail_msg_writer() << "invalid password";
+ fail_msg_writer() << "failed to read wallet password";
+ return true;
+ }
+ if (password != pwd_container.password())
+ {
+ fail_msg_writer() << "passwords do not match";
return true;
}