From 3a30f074830e35032f5ed5b1087e504aff9c82a4 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 6 Feb 2019 11:54:29 +0000
Subject: [PATCH] I2CP: Prevent use of repliable datagrams with offline keys

---
 .../src/net/i2p/client/datagram/I2PDatagramMaker.java | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java
index 015bbdbcd8..e39c6a6667 100644
--- a/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java
+++ b/core/java/src/net/i2p/client/datagram/I2PDatagramMaker.java
@@ -45,7 +45,10 @@ public final class I2PDatagramMaker {
      * Construct a new I2PDatagramMaker that will be able to create I2P
      * repliable datagrams going to be sent through the specified I2PSession.
      *
+     * Does NOT support LS2 offline keys!
+     *
      * @param session I2PSession used to send I2PDatagrams through
+     * @throws IllegalArgumentException if session has offline keys
      */
     public I2PDatagramMaker(I2PSession session) {
         this.setI2PDatagramMaker(session);
@@ -59,7 +62,15 @@ public final class I2PDatagramMaker {
         // nop
     }
 
+    /**
+     * Does NOT support LS2 offline keys!
+     *
+     * @param session I2PSession used to send I2PDatagrams through
+     * @throws IllegalArgumentException if session has offline keys
+     */
     public void setI2PDatagramMaker(I2PSession session) {
+        if (session.isOffline())
+            throw new IllegalArgumentException("Offline keys unsupported");
         sxPrivKey = session.getPrivateKey();
         sxDestBytes = session.getMyDestination().toByteArray();
     }
-- 
GitLab