Browse Source

fixed AEAD verification for LibreSSL

pull/2094/head
orignal 4 months ago
parent
commit
0c924836cf
  1. 9
      libi2pd/Crypto.cpp

9
libi2pd/Crypto.cpp

@ -997,6 +997,15 @@ namespace crypto @@ -997,6 +997,15 @@ namespace crypto
}
else
{
#if defined(LIBRESSL_VERSION_NUMBER)
std::vector<uint8_t> m(msgLen + 16);
if (msg == buf)
{
// we have to use different buffers otherwise verification fails
memcpy (m.data (), msg, msgLen + 16);
msg = m.data ();
}
#endif
EVP_DecryptInit_ex(ctx, EVP_chacha20_poly1305(), 0, 0, 0);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_IVLEN, 12, 0);
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, 16, (uint8_t *)(msg + msgLen));

Loading…
Cancel
Save