Browse Source

check AES tag first

pull/1491/head
orignal 5 years ago
parent
commit
5337aa10f7
  1. 15
      libi2pd/Garlic.cpp

15
libi2pd/Garlic.cpp

@ -435,13 +435,8 @@ namespace garlic
return; return;
} }
buf += 4; // length buf += 4; // length
if (GetEncryptionType () == i2p::data::CRYPTO_KEY_TYPE_ECIES_X25519_AEAD_RARCHET)
{
HandleECIESx25519 (buf, length - 4);
return;
}
// otherwise assume ElGamal/AES
auto it = m_Tags.find (SessionTag(buf)); auto it = m_Tags.find (SessionTag(buf));
// AES tag might be used even if encryption type is not ElGamal/AES
if (it != m_Tags.end ()) if (it != m_Tags.end ())
{ {
// tag found. Use AES // tag found. Use AES
@ -460,7 +455,13 @@ namespace garlic
} }
else else
{ {
// tag not found. Use ElGamal // tag not found. Handle depending on encryption type
if (GetEncryptionType () == i2p::data::CRYPTO_KEY_TYPE_ECIES_X25519_AEAD_RARCHET)
{
HandleECIESx25519 (buf, length - 4);
return;
}
// otherwise assume ElGamal/AES
ElGamalBlock elGamal; ElGamalBlock elGamal;
if (length >= 514 && Decrypt (buf, (uint8_t *)&elGamal, m_Ctx)) if (length >= 514 && Decrypt (buf, (uint8_t *)&elGamal, m_Ctx))
{ {

Loading…
Cancel
Save