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


Reply via email to