Browse Source

use EdDSA as default for RouterInfo

pull/295/head
orignal 9 years ago
parent
commit
4dea2ef1a4
  1. 36
      RouterContext.cpp

36
RouterContext.cpp

@ -30,7 +30,7 @@ namespace i2p
void RouterContext::CreateNewRouter () void RouterContext::CreateNewRouter ()
{ {
m_Keys = i2p::data::CreateRandomKeys (); m_Keys = i2p::data::PrivateKeys::CreateRandomKeys (i2p::data::SIGNING_KEY_TYPE_EDDSA_SHA512_ED25519);
SaveKeys (); SaveKeys ();
NewRouterInfo (); NewRouterInfo ();
} }
@ -276,10 +276,23 @@ namespace i2p
{ {
std::ifstream fk (i2p::util::filesystem::GetFullPath (ROUTER_KEYS).c_str (), std::ifstream::binary | std::ofstream::in); std::ifstream fk (i2p::util::filesystem::GetFullPath (ROUTER_KEYS).c_str (), std::ifstream::binary | std::ofstream::in);
if (!fk.is_open ()) return false; if (!fk.is_open ()) return false;
fk.seekg (0, std::ios::end);
i2p::data::Keys keys; size_t len = fk.tellg();
fk.read ((char *)&keys, sizeof (keys)); fk.seekg (0, std::ios::beg);
m_Keys = keys;
if (len == sizeof (i2p::data::Keys)) // old keys file format
{
i2p::data::Keys keys;
fk.read ((char *)&keys, sizeof (keys));
m_Keys = keys;
}
else // new keys file format
{
uint8_t * buf = new uint8_t[len];
fk.read ((char *)buf, len);
m_Keys.FromBuffer (buf, len);
delete[] buf;
}
i2p::data::RouterInfo routerInfo(i2p::util::filesystem::GetFullPath (ROUTER_INFO)); // TODO i2p::data::RouterInfo routerInfo(i2p::util::filesystem::GetFullPath (ROUTER_INFO)); // TODO
m_RouterInfo.SetRouterIdentity (GetIdentity ()); m_RouterInfo.SetRouterIdentity (GetIdentity ());
@ -295,14 +308,13 @@ namespace i2p
void RouterContext::SaveKeys () void RouterContext::SaveKeys ()
{ {
// save in the same format as .dat files
std::ofstream fk (i2p::util::filesystem::GetFullPath (ROUTER_KEYS).c_str (), std::ofstream::binary | std::ofstream::out); std::ofstream fk (i2p::util::filesystem::GetFullPath (ROUTER_KEYS).c_str (), std::ofstream::binary | std::ofstream::out);
i2p::data::Keys keys; size_t len = m_Keys.GetFullLen ();
memcpy (keys.privateKey, m_Keys.GetPrivateKey (), sizeof (keys.privateKey)); uint8_t * buf = new uint8_t[len];
memcpy (keys.signingPrivateKey, m_Keys.GetSigningPrivateKey (), sizeof (keys.signingPrivateKey)); m_Keys.ToBuffer (buf, len);
auto& ident = GetIdentity ()->GetStandardIdentity (); fk.write ((char *)buf, len);
memcpy (keys.publicKey, ident.publicKey, sizeof (keys.publicKey)); delete[] buf;
memcpy (keys.signingKey, ident.signingKey, sizeof (keys.signingKey));
fk.write ((char *)&keys, sizeof (keys));
} }
std::shared_ptr<i2p::tunnel::TunnelPool> RouterContext::GetTunnelPool () const std::shared_ptr<i2p::tunnel::TunnelPool> RouterContext::GetTunnelPool () const

Loading…
Cancel
Save