Browse Source

copy constructor for PrivateKeys

pull/72/head
orignal 11 years ago
parent
commit
4f429b3e06
  1. 6
      Identity.cpp
  2. 8
      Identity.h
  3. 5
      Streaming.cpp

6
Identity.cpp

@ -22,14 +22,14 @@ namespace data @@ -22,14 +22,14 @@ namespace data
bool Identity::FromBase64 (const std::string& s)
{
size_t count = Base64ToByteStream (s.c_str(), s.length(), reinterpret_cast<uint8_t*> (this), sizeof (Identity));
size_t count = Base64ToByteStream (s.c_str(), s.length(), publicKey, sizeof (Identity));
return count == sizeof(Identity);
}
IdentHash Identity::Hash()
IdentHash Identity::Hash() const
{
IdentHash hash;
CryptoPP::SHA256().CalculateDigest(reinterpret_cast<uint8_t*>(&hash), reinterpret_cast<uint8_t*> (this), sizeof (Identity));
CryptoPP::SHA256().CalculateDigest(hash, publicKey, sizeof (Identity));
return hash;
}

8
Identity.h

@ -34,8 +34,8 @@ namespace data @@ -34,8 +34,8 @@ namespace data
uint8_t certificate[3];
Identity& operator=(const Keys& keys);
bool FromBase64(const std::string&);
IdentHash Hash();
bool FromBase64(const std::string& );
IdentHash Hash() const;
};
struct PrivateKeys // for eepsites
@ -44,6 +44,10 @@ namespace data @@ -44,6 +44,10 @@ namespace data
uint8_t privateKey[256];
uint8_t signingPrivateKey[20];
PrivateKeys () = default;
PrivateKeys (const PrivateKeys& ) = default;
PrivateKeys (const Keys& keys) { *this = keys; };
PrivateKeys& operator=(const Keys& keys);
};

5
Streaming.cpp

@ -334,6 +334,7 @@ namespace stream @@ -334,6 +334,7 @@ namespace stream
StreamingDestination::StreamingDestination (): m_LeaseSet (nullptr)
{
m_Keys = i2p::data::CreateRandomKeys ();
m_IdentHash = m_Keys.pub.Hash ();
m_SigningPrivateKey.Initialize (i2p::crypto::dsap, i2p::crypto::dsaq, i2p::crypto::dsag,
CryptoPP::Integer (m_Keys.signingPrivateKey, 20));
@ -349,6 +350,10 @@ namespace stream @@ -349,6 +350,10 @@ namespace stream
s.read ((char *)&m_Keys, sizeof (m_Keys));
else
LogPrint ("Can't open file ", fullPath);
m_IdentHash = m_Keys.pub.Hash ();
m_SigningPrivateKey.Initialize (i2p::crypto::dsap, i2p::crypto::dsaq, i2p::crypto::dsag,
CryptoPP::Integer (m_Keys.signingPrivateKey, 20));
CryptoPP::DH dh (i2p::crypto::elgp, i2p::crypto::elgg);
dh.GenerateKeyPair(i2p::context.GetRandomNumberGenerator (), m_EncryptionPrivateKey, m_EncryptionPublicKey);
m_Pool = i2p::tunnel::tunnels.CreateTunnelPool (*this);

Loading…
Cancel
Save