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 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 ();