Author: nextgens
Date: 2007-09-09 22:39:29 +0000 (Sun, 09 Sep 2007)
New Revision: 15098
Modified:
branches/freenet-jfk/src/freenet/crypt/DiffieHellmanLightContext.java
branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
branches/freenet-jfk/src/freenet/node/NodeCrypto.java
Log:
Refactor DiffieHellmanLightContext to do things properly(TM)
Modified: branches/freenet-jfk/src/freenet/crypt/DiffieHellmanLightContext.java
===================================================================
--- branches/freenet-jfk/src/freenet/crypt/DiffieHellmanLightContext.java
2007-09-09 22:27:05 UTC (rev 15097)
+++ branches/freenet-jfk/src/freenet/crypt/DiffieHellmanLightContext.java
2007-09-09 22:39:29 UTC (rev 15098)
@@ -1,6 +1,5 @@
package freenet.crypt;
-import freenet.node.NodeCrypto;
import net.i2p.util.NativeBigInteger;
public class DiffieHellmanLightContext {
@@ -12,7 +11,7 @@
/** The group we both share */
public final DHGroup group;
/** The signature of (g^r, grpR) */
- public final DSASignature signature;
+ public DSASignature signature = null;
public String toString() {
StringBuffer sb = new StringBuffer();
@@ -25,17 +24,13 @@
return sb.toString();
}
- // FIXME: remove the layering violation, sign it *before* the
constructor so that it doesn't need NodeCrypto
- public DiffieHellmanLightContext(NodeCrypto crypto, NativeBigInteger
myExponent, NativeBigInteger myExponential, DHGroup group) {
+ public DiffieHellmanLightContext(NativeBigInteger myExponent,
NativeBigInteger myExponential, DHGroup group) {
this.myExponent = myExponent;
this.myExponential = myExponential;
this.group = group;
-
- byte[] _myExponential = myExponential.toByteArray();
- byte[] _myGroup = group.asBytes();
- byte[] toSign = new byte[_myExponential.length +
_myGroup.length];
- System.arraycopy(_myExponential, 0, toSign, 0,
_myExponential.length);
- System.arraycopy(_myGroup, 0, toSign, _myExponential.length,
_myGroup.length);
- this.signature = crypto.sign(SHA256.digest(toSign));
}
+
+ public void setSignature(DSASignature sig) {
+ this.signature = sig;
+ }
}
\ No newline at end of file
Modified: branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
===================================================================
--- branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-09-09
22:27:05 UTC (rev 15097)
+++ branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-09-09
22:39:29 UTC (rev 15098)
@@ -6,7 +6,6 @@
import freenet.io.comm.SocketHandler;
-import java.net.Inet4Address;
import java.security.MessageDigest;
import java.util.Arrays;
import net.i2p.util.NativeBigInteger;
@@ -2227,8 +2226,16 @@
}
private synchronized DiffieHellmanLightContext
getLightDiffieHellmanContext() {
- if(currentDHContext == null)
+ if(currentDHContext == null) {
currentDHContext = DiffieHellman.generateLightContext();
+
+ byte[] _myExponential =
currentDHContext.myExponential.toByteArray();
+ byte[] _myGroup = currentDHContext.group.asBytes();
+ byte[] toSign = new byte[_myExponential.length +
_myGroup.length];
+ System.arraycopy(_myExponential, 0, toSign, 0,
_myExponential.length);
+ System.arraycopy(_myGroup, 0, toSign,
_myExponential.length, _myGroup.length);
+
currentDHContext.setSignature(crypto.sign(SHA256.digest(toSign)));
+ }
return currentDHContext;
}
Modified: branches/freenet-jfk/src/freenet/node/NodeCrypto.java
===================================================================
--- branches/freenet-jfk/src/freenet/node/NodeCrypto.java 2007-09-09
22:27:05 UTC (rev 15097)
+++ branches/freenet-jfk/src/freenet/node/NodeCrypto.java 2007-09-09
22:39:29 UTC (rev 15098)
@@ -37,7 +37,7 @@
* Cryptographic and transport level node identity.
* @author toad
*/
-public class NodeCrypto {
+class NodeCrypto {
final Node node;
final boolean isOpennet;
@@ -383,7 +383,7 @@
}
/** Sign a hash */
- public DSASignature sign(byte[] hash) {
+ protected DSASignature sign(byte[] hash) {
return DSA.sign(cryptoGroup, privKey, new NativeBigInteger(1,
hash), random);
}
// Sign a hash with a specified PrivateKey