diff --git a/src/p2pool.cpp b/src/p2pool.cpp index bd7aae3..f4a2369 100644 --- a/src/p2pool.cpp +++ b/src/p2pool.cpp @@ -29,6 +29,7 @@ #include "p2p_server.h" #include "params.h" #include "console_commands.h" +#include "crypto.h" #include #include @@ -51,6 +52,14 @@ p2pool::p2pool(int argc, char* argv[]) panic(); } + hash pub, sec, eph_public_key; + generate_keys(pub, sec); + + if (!m_params->m_wallet.get_eph_public_key(sec, 0, eph_public_key)) { + LOGERR(1, "Invalid wallet address: get_eph_public_key failed"); + panic(); + } + const NetworkType type = m_params->m_wallet.type(); if (type == NetworkType::Testnet) { diff --git a/src/wallet.cpp b/src/wallet.cpp index 8e47b9c..d0cca63 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -190,6 +190,11 @@ bool Wallet::decode(const char* address) m_type = NetworkType::Invalid; } + ge_p3 point; + if ((ge_frombytes_vartime(&point, m_spendPublicKey.h) != 0) || (ge_frombytes_vartime(&point, m_viewPublicKey.h) != 0)) { + m_type = NetworkType::Invalid; + } + return valid(); }