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