Browse Source

delete symmkey on cleanup

pull/1553/head
orignal 4 years ago
parent
commit
da1e52357f
  1. 9
      libi2pd/ECIESX25519AEADRatchetSession.cpp
  2. 3
      libi2pd/ECIESX25519AEADRatchetSession.h
  3. 3
      libi2pd/Garlic.cpp

9
libi2pd/ECIESX25519AEADRatchetSession.cpp

@ -88,6 +88,11 @@ namespace garlic @@ -88,6 +88,11 @@ namespace garlic
}
}
void RatchetTagSet::DeleteSymmKey (int index)
{
m_ItermediateSymmKeys.erase (index);
}
void RatchetTagSet::Expire ()
{
if (!m_ExpirationTimestamp)
@ -659,7 +664,9 @@ namespace garlic @@ -659,7 +664,9 @@ namespace garlic
if (moreTags > 0)
{
GenerateMoreReceiveTags (receiveTagset, moreTags);
receiveTagset->MoveTrimBehind (moreTags >> 1); // /2
index -= (moreTags >> 1); // /2
if (index > 0)
receiveTagset->SetTrimBehind (index);
}
}
return true;

3
libi2pd/ECIESX25519AEADRatchetSession.h

@ -52,11 +52,12 @@ namespace garlic @@ -52,11 +52,12 @@ namespace garlic
const uint8_t * GetNextRootKey () const { return m_NextRootKey; };
int GetNextIndex () const { return m_NextIndex; };
void GetSymmKey (int index, uint8_t * key);
void DeleteSymmKey (int index);
std::shared_ptr<ECIESX25519AEADRatchetSession> GetSession () { return m_Session.lock (); };
int GetTagSetID () const { return m_TagSetID; };
void SetTagSetID (int tagsetID) { m_TagSetID = tagsetID; };
void MoveTrimBehind (int offset) { m_TrimBehindIndex += offset; };
void SetTrimBehind (int index) { if (index > m_TrimBehindIndex) m_TrimBehindIndex = index; };
void Expire ();
bool IsExpired (uint64_t ts) const { return m_ExpirationTimestamp && ts > m_ExpirationTimestamp; };

3
libi2pd/Garlic.cpp

@ -817,7 +817,10 @@ namespace garlic @@ -817,7 +817,10 @@ namespace garlic
for (auto it = m_ECIESx25519Tags.begin (); it != m_ECIESx25519Tags.end ();)
{
if (it->second.tagset->IsExpired (ts) || it->second.tagset->IsIndexExpired (it->second.index))
{
it->second.tagset->DeleteSymmKey (it->second.index);
it = m_ECIESx25519Tags.erase (it);
}
else
++it;
}

Loading…
Cancel
Save