From 6b37a41e007fa81be0ce00cdcc6b50e921630e4c Mon Sep 17 00:00:00 2001 From: orignal <i2porignal@yandex.ru> Date: Thu, 14 Jun 2018 10:45:25 -0400 Subject: [PATCH] correct ad calculation for SessionCreated --- libi2pd/NTCP2.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index 64636433..f2675276 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -84,15 +84,18 @@ namespace transport uint8_t h[64]; memcpy (h, m_H, 32); memcpy (h + 32, sessionRequest + 32, 32); // encrypted payload - SHA256 (h, 64, m_H); + SHA256 (h, 64, h); int paddingLength = sessionRequestLen - 64; if (paddingLength > 0) { std::vector<uint8_t> h1(paddingLength + 32); - memcpy (h1.data (), m_H, 32); + memcpy (h1.data (), h, 32); memcpy (h1.data () + 32, sessionRequest + 64, paddingLength); - SHA256 (h1.data (), paddingLength + 32, m_H); + SHA256 (h1.data (), paddingLength + 32, h); } + memcpy (h + 32, pub, 32); + SHA256 (h, 64, m_H); + // x25519 between remote pub and priv uint8_t inputKeyMaterial[32]; BN_CTX * ctx = BN_CTX_new ();