diff --git a/libi2pd_client/BOB.cpp b/libi2pd_client/BOB.cpp index 4539eac8..e4a060d0 100644 --- a/libi2pd_client/BOB.cpp +++ b/libi2pd_client/BOB.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include "Log.h" #include "ClientContext.h" #include "util.h" @@ -434,7 +436,15 @@ namespace client void BOBCommandSession::NewkeysCommandHandler (const char * operand, size_t len) { LogPrint (eLogDebug, "BOB: newkeys"); - m_Keys = i2p::data::PrivateKeys::CreateRandomKeys (); + std::vector params; + boost::split (params, operand, boost::is_any_of(" "), boost::token_compress_on); + i2p::data::SigningKeyType signatureType = i2p::data::SIGNING_KEY_TYPE_DSA_SHA1; + i2p::data::CryptoKeyType cryptoType = i2p::data::CRYPTO_KEY_TYPE_ELGAMAL; + if (params.size () > 0) + signatureType = std::stoi(params[0]); + if (params.size () > 1) + cryptoType = std::stoi(params[1]); + m_Keys = i2p::data::PrivateKeys::CreateRandomKeys (signatureType, cryptoType); SendReplyOK (m_Keys.GetPublic ()->ToBase64 ().c_str ()); }