I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit 2284c963 authored by zzz's avatar zzz
Browse files

drop dummy crypto stubs

parent a1fdd41b
No related branches found
No related tags found
No related merge requests found
...@@ -12,9 +12,6 @@ import net.i2p.client.naming.NamingService; ...@@ -12,9 +12,6 @@ import net.i2p.client.naming.NamingService;
import net.i2p.crypto.AESEngine; import net.i2p.crypto.AESEngine;
import net.i2p.crypto.CryptixAESEngine; import net.i2p.crypto.CryptixAESEngine;
import net.i2p.crypto.DSAEngine; import net.i2p.crypto.DSAEngine;
import net.i2p.crypto.DummyDSAEngine;
import net.i2p.crypto.DummyElGamalEngine;
//import net.i2p.crypto.DummyPooledRandomSource;
import net.i2p.crypto.ElGamalAESEngine; import net.i2p.crypto.ElGamalAESEngine;
import net.i2p.crypto.ElGamalEngine; import net.i2p.crypto.ElGamalEngine;
import net.i2p.crypto.HMAC256Generator; import net.i2p.crypto.HMAC256Generator;
...@@ -34,7 +31,6 @@ import net.i2p.util.FortunaRandomSource; ...@@ -34,7 +31,6 @@ import net.i2p.util.FortunaRandomSource;
import net.i2p.util.I2PProperties; import net.i2p.util.I2PProperties;
import net.i2p.util.KeyRing; import net.i2p.util.KeyRing;
import net.i2p.util.LogManager; import net.i2p.util.LogManager;
//import net.i2p.util.PooledRandomSource;
import net.i2p.util.PortMapper; import net.i2p.util.PortMapper;
import net.i2p.util.RandomSource; import net.i2p.util.RandomSource;
import net.i2p.util.SecureDirectory; import net.i2p.util.SecureDirectory;
...@@ -651,12 +647,8 @@ public class I2PAppContext { ...@@ -651,12 +647,8 @@ public class I2PAppContext {
private void initializeElGamalEngine() { private void initializeElGamalEngine() {
synchronized (_lock5) { synchronized (_lock5) {
if (_elGamalEngine == null) { if (_elGamalEngine == null)
if ("off".equals(getProperty("i2p.encryption", "on"))) _elGamalEngine = new ElGamalEngine(this);
_elGamalEngine = new DummyElGamalEngine(this);
else
_elGamalEngine = new ElGamalEngine(this);
}
_elGamalEngineInitialized = true; _elGamalEngineInitialized = true;
} }
} }
...@@ -796,12 +788,8 @@ public class I2PAppContext { ...@@ -796,12 +788,8 @@ public class I2PAppContext {
private void initializeDSA() { private void initializeDSA() {
synchronized (_lock12) { synchronized (_lock12) {
if (_dsa == null) { if (_dsa == null)
if ("off".equals(getProperty("i2p.encryption", "on"))) _dsa = new DSAEngine(this);
_dsa = new DummyDSAEngine(this);
else
_dsa = new DSAEngine(this);
}
_dsaInitialized = true; _dsaInitialized = true;
} }
} }
...@@ -887,14 +875,8 @@ public class I2PAppContext { ...@@ -887,14 +875,8 @@ public class I2PAppContext {
private void initializeRandom() { private void initializeRandom() {
synchronized (_lock17) { synchronized (_lock17) {
if (_random == null) { if (_random == null)
//if (true) _random = new FortunaRandomSource(this);
_random = new FortunaRandomSource(this);
//else if ("true".equals(getProperty("i2p.weakPRNG", "false")))
// _random = new DummyPooledRandomSource(this);
//else
// _random = new PooledRandomSource(this);
}
_randomInitialized = true; _randomInitialized = true;
} }
} }
......
package net.i2p.crypto;
import net.i2p.I2PAppContext;
import net.i2p.data.Signature;
import net.i2p.data.SigningPrivateKey;
import net.i2p.data.SigningPublicKey;
/**
* Stub that offers no authentication.
*
*/
public class DummyDSAEngine extends DSAEngine {
private static final Signature FAKE_SIGNATURE = new Signature(new byte[Signature.SIGNATURE_BYTES]);
public DummyDSAEngine(I2PAppContext context) {
super(context);
}
@Override
public boolean verifySignature(Signature signature, byte signedData[], SigningPublicKey verifyingKey) {
return true;
}
@Override
public Signature sign(byte data[], SigningPrivateKey signingKey) {
return FAKE_SIGNATURE;
}
}
package net.i2p.crypto;
/*
* free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain
* with no warranty of any kind, either expressed or implied.
* It probably won't make your computer catch on fire, or eat
* your children, but it might. Use at your own risk.
*
*/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.data.Hash;
import net.i2p.data.PrivateKey;
import net.i2p.data.PublicKey;
import net.i2p.util.Log;
/**
* Fake ElG E and D, useful for when performance isn't being tested
*
* @author jrandom
*/
public class DummyElGamalEngine extends ElGamalEngine {
private Log _log;
/**
* The ElGamal engine should only be constructed and accessed through the
* application context. This constructor should only be used by the
* appropriate application context itself.
*
*/
public DummyElGamalEngine(I2PAppContext context) {
super(context);
_log = context.logManager().getLog(DummyElGamalEngine.class);
_log.log(Log.CRIT, "Dummy ElGamal engine in use! NO DATA SECURITY. Danger Will Robinson, Danger!",
new Exception("I really hope you know what you're doing"));
}
private DummyElGamalEngine() { super(null); }
/** encrypt the data to the public key
* @return encrypted data
* @param publicKey public key encrypt to
* @param data data to encrypt
*/
@Override
public byte[] encrypt(byte data[], PublicKey publicKey) {
if ((data == null) || (data.length >= 223))
throw new IllegalArgumentException("Data to encrypt must be < 223 bytes at the moment");
if (publicKey == null) throw new IllegalArgumentException("Null public key specified");
ByteArrayOutputStream baos = new ByteArrayOutputStream(256);
try {
baos.write(0xFF);
Hash hash = SHA256Generator.getInstance().calculateHash(data);
hash.writeBytes(baos);
baos.write(data);
baos.flush();
} catch (Exception e) {
_log.error("Internal error writing to buffer", e);
return null;
}
byte d2[] = baos.toByteArray();
byte[] out = new byte[514];
System.arraycopy(d2, 0, out, (d2.length < 257 ? 257 - d2.length : 0), (d2.length > 257 ? 257 : d2.length));
return out;
}
/** Decrypt the data
* @param encrypted encrypted data
* @param privateKey private key to decrypt with
* @return unencrypted data
*/
@Override
public byte[] decrypt(byte encrypted[], PrivateKey privateKey) {
if ((encrypted == null) || (encrypted.length > 514))
throw new IllegalArgumentException("Data to decrypt must be <= 514 bytes at the moment");
byte val[] = new byte[257];
System.arraycopy(encrypted, 0, val, 0, val.length);
int i = 0;
for (i = 0; i < val.length; i++)
if (val[i] != (byte) 0x00) break;
ByteArrayInputStream bais = new ByteArrayInputStream(val, i, val.length - i);
Hash hash = new Hash();
byte rv[] = null;
try {
bais.read(); // skip first byte
hash.readBytes(bais);
rv = new byte[val.length - i - 1 - 32];
bais.read(rv);
} catch (Exception e) {
_log.error("Internal error reading value", e);
return null;
}
Hash calcHash = SHA256Generator.getInstance().calculateHash(rv);
if (calcHash.equals(hash)) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Hash matches: " + DataHelper.toString(hash.getData(), hash.getData().length));
return rv;
}
if (_log.shouldLog(Log.DEBUG))
_log.debug("Doesn't match hash [calc=" + calcHash + " sent hash=" + hash + "]\ndata = " + new String(rv),
new Exception("Doesn't match"));
return null;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment