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