Browse Source

check if destination keys are correct

pull/838/head
orignal 8 years ago
parent
commit
69804c23f1
  1. 4
      BOB.cpp
  2. 5
      Identity.cpp
  3. 2
      SAM.cpp

4
BOB.cpp

@ -430,8 +430,10 @@ namespace client @@ -430,8 +430,10 @@ namespace client
void BOBCommandSession::SetkeysCommandHandler (const char * operand, size_t len)
{
LogPrint (eLogDebug, "BOB: setkeys ", operand);
m_Keys.FromBase64 (operand);
if (m_Keys.FromBase64 (operand))
SendReplyOK (m_Keys.GetPublic ()->ToBase64 ().c_str ());
else
SendReplyError ("invalid keys");
}
void BOBCommandSession::GetkeysCommandHandler (const char * operand, size_t len)

5
Identity.cpp

@ -455,8 +455,9 @@ namespace data @@ -455,8 +455,9 @@ namespace data
size_t PrivateKeys::FromBuffer (const uint8_t * buf, size_t len)
{
m_Public = std::make_shared<IdentityEx>(buf, len);
size_t ret = m_Public->GetFullLen ();
m_Public = std::make_shared<IdentityEx>();
size_t ret = m_Public->FromBuffer (buf, len);
if (!ret || ret + 256 > len) return 0; // overflow
memcpy (m_PrivateKey, buf + ret, 256); // private key always 256
ret += 256;
size_t signingPrivateKeySize = m_Public->GetSigningPrivateKeyLen ();

2
SAM.cpp

@ -875,7 +875,7 @@ namespace client @@ -875,7 +875,7 @@ namespace client
if (destination != "")
{
i2p::data::PrivateKeys keys;
keys.FromBase64 (destination);
if (!keys.FromBase64 (destination)) return nullptr;
localDestination = i2p::client::context.CreateNewLocalDestination (keys, true, params);
}
else // transient

Loading…
Cancel
Save