From 24ef2b5189c26d9f0fbbce3a254669ea8a47a9de Mon Sep 17 00:00:00 2001 From: zzz <zzz@i2pmail.org> Date: Thu, 22 Jul 2021 15:15:26 -0400 Subject: [PATCH] Prop. 157 fix for ChaCha20 IV after testing with i2pd --- .../src/net/i2p/router/tunnel/pool/BuildMessageGenerator.java | 2 +- .../src/net/i2p/router/tunnel/pool/BuildMessageProcessor.java | 2 +- .../java/src/net/i2p/router/tunnel/pool/BuildReplyHandler.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildMessageGenerator.java b/router/java/src/net/i2p/router/tunnel/pool/BuildMessageGenerator.java index b000cd73f4..7715cf6419 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildMessageGenerator.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildMessageGenerator.java @@ -196,7 +196,7 @@ abstract class BuildMessageGenerator { key = cfg.getChaChaReplyKey(j); iv = chachaIV; // slot number, little endian - iv[0] = (byte) i; + iv[4] = (byte) i; ChaCha20.encrypt(key.getData(), iv, data, 0, data, 0, size); } else { key = cfg.getAESReplyKey(j); diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildMessageProcessor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildMessageProcessor.java index 028de88710..00373a4f34 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildMessageProcessor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildMessageProcessor.java @@ -164,7 +164,7 @@ class BuildMessageProcessor { // encrypt in-place, corrupts SDS byte[] bytes = data.getData(); // slot number, little endian - iv[0] = (byte) i; + iv[4] = (byte) i; ChaCha20.encrypt(replyKey, iv, bytes, 0, bytes, 0, ShortEncryptedBuildRecord.LENGTH); } } diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildReplyHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildReplyHandler.java index fba4cb490f..c721406357 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildReplyHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildReplyHandler.java @@ -131,7 +131,7 @@ class BuildReplyHandler { + Base64.encode(replyKey) + " : " + cfg); } // slot number, little endian - iv[0] = (byte) recordNum; + iv[4] = (byte) recordNum; ChaCha20.encrypt(replyKey, iv, data, 0, data, 0, ShortEncryptedBuildRecord.LENGTH); } } else { -- GitLab