From ef5495bfb2626a42c7d4dce870c03afe18c42430 Mon Sep 17 00:00:00 2001
From: orignal <i2porignal@yandex.ru>
Date: Fri, 23 Oct 2020 22:14:00 -0400
Subject: [PATCH] padding for x25519 crypto key

---
 libi2pd/Identity.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libi2pd/Identity.cpp b/libi2pd/Identity.cpp
index b2b5f2b4..490b8692 100644
--- a/libi2pd/Identity.cpp
+++ b/libi2pd/Identity.cpp
@@ -48,7 +48,13 @@ namespace data
 
 	IdentityEx::IdentityEx(const uint8_t * publicKey, const uint8_t * signingKey, SigningKeyType type, CryptoKeyType cryptoType)
 	{
-		memcpy (m_StandardIdentity.publicKey, publicKey, 256); // publicKey in awlays assumed 256 regardless actual size, padding must be taken care of
+		if (cryptoType == CRYPTO_KEY_TYPE_ECIES_X25519_AEAD_RATCHET)
+		{
+			memcpy (m_StandardIdentity.publicKey, publicKey, 32);
+			RAND_bytes (m_StandardIdentity.publicKey, 224);
+		}	
+		else	
+			memcpy (m_StandardIdentity.publicKey, publicKey, 256); 
 		if (type != SIGNING_KEY_TYPE_DSA_SHA1)
 		{
 			size_t excessLen = 0;