check if session key is available

This commit is contained in:
orignal 2014-04-10 14:13:15 -04:00
parent 2140f49665
commit 747383a5e6
2 changed files with 5 additions and 4 deletions

View File

@ -842,12 +842,12 @@ namespace ssu
}
void SSUSession::SendSesionDestroyed ()
{
if (HasSessionKey ())
{
uint8_t buf[48 + 18], iv[16];
CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator ();
rnd.GenerateBlock (iv, 16); // random iv
if (m_State == eSessionStateEstablished)
{
// encrypt message with session key
FillHeaderAndEncrypt (PAYLOAD_TYPE_SESSION_DESTROYED, buf, 48, m_SessionKey, iv, m_MacKey);
m_Server.Send (buf, 48, m_RemoteEndpoint);

1
SSU.h
View File

@ -118,6 +118,7 @@ namespace ssu
void Decrypt (uint8_t * buf, size_t len, const uint8_t * aesKey);
bool Validate (uint8_t * buf, size_t len, const uint8_t * macKey);
const uint8_t * GetIntroKey () const;
bool HasSessionKey () const { return m_State == eSessionStateCreatedReceived || m_State == eSessionStateRequestReceived; };
void ScheduleTermination ();
void HandleTerminationTimer (const boost::system::error_code& ecode);