diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java index 80346302257e8d0a23c9ff237299463d7a462e30..4712c3b8ba2bebf4911a58074ee7dd4a1736b914 100644 --- a/core/java/src/net/i2p/I2PAppContext.java +++ b/core/java/src/net/i2p/I2PAppContext.java @@ -8,6 +8,7 @@ import net.i2p.client.naming.NamingService; import net.i2p.crypto.AESEngine; import net.i2p.crypto.CryptixAESEngine; import net.i2p.crypto.DSAEngine; +import net.i2p.crypto.DummyDSAEngine; import net.i2p.crypto.DummyElGamalEngine; import net.i2p.crypto.ElGamalAESEngine; import net.i2p.crypto.ElGamalEngine; @@ -373,8 +374,12 @@ public class I2PAppContext { } private void initializeDSA() { synchronized (this) { - if (_dsa == null) - _dsa = new DSAEngine(this); + if (_dsa == null) { + if ("off".equals(getProperty("i2p.encryption", "on"))) + _dsa = new DummyDSAEngine(this); + else + _dsa = new DSAEngine(this); + } _dsaInitialized = true; } } diff --git a/core/java/src/net/i2p/crypto/DummyDSAEngine.java b/core/java/src/net/i2p/crypto/DummyDSAEngine.java new file mode 100644 index 0000000000000000000000000000000000000000..d7e5c64992e1c9db3c1300f055f6dfb9e6182daf --- /dev/null +++ b/core/java/src/net/i2p/crypto/DummyDSAEngine.java @@ -0,0 +1,29 @@ +package net.i2p.crypto; + +import net.i2p.I2PAppContext; +import net.i2p.data.Hash; +import net.i2p.data.Signature; +import net.i2p.data.SigningPrivateKey; +import net.i2p.data.SigningPublicKey; +import net.i2p.util.Log; +import net.i2p.util.NativeBigInteger; + +/** + * Stub that offers no authentication. + * + */ +public class DummyDSAEngine extends DSAEngine { + public DummyDSAEngine(I2PAppContext context) { + super(context); + } + + public boolean verifySignature(Signature signature, byte signedData[], SigningPublicKey verifyingKey) { + return true; + } + + public Signature sign(byte data[], SigningPrivateKey signingKey) { + Signature sig = new Signature(); + sig.setData(Signature.FAKE_SIGNATURE); + return sig; + } +} \ No newline at end of file