Author: nextgens
Date: 2006-09-06 16:35:03 +0000 (Wed, 06 Sep 2006)
New Revision: 10410

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/Version.java
Log:
970:
        DSASignatures NEED to be done on a hash!

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-09-06 15:30:16 UTC (rev 
10409)
+++ trunk/freenet/src/freenet/node/Node.java    2006-09-06 16:35:03 UTC (rev 
10410)
@@ -1662,14 +1662,20 @@
                if(myReferenceSignature == null || mySignedReference == null || 
!mySignedReference.equals(fs.toOrderedString())){
                        mySignedReference = fs.toOrderedString();
                        try{
-                               myReferenceSignature = DSA.sign(myCryptoGroup, 
myPrivKey, new BigInteger(mySignedReference.getBytes("UTF-8")), random);
+                       MessageDigest md = MessageDigest.getInstance("SHA-256");
+                               myReferenceSignature = DSA.sign(myCryptoGroup, 
myPrivKey, new BigInteger(md.digest(mySignedReference.getBytes("UTF-8"))), 
random);
                        } catch(UnsupportedEncodingException e){
                                //duh ?
                                Logger.error(this, "Error while signing the 
node identity!"+e);
                                System.err.println("Error while signing the 
node identity!"+e);
                                e.printStackTrace();
                                exit(EXIT_CRAPPY_JVM);
-                       }
+                       } catch (NoSuchAlgorithmException e2) {
+                               Logger.error(this, "Error while signing the 
node identity!"+e2);
+                               System.err.println("Error while signing the 
node identity!"+e2);
+                               e2.printStackTrace();
+                               exit(EXIT_CRAPPY_JVM);
+               }
                }
                fs.put("sig", myReferenceSignature.toString());


Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-09-06 15:30:16 UTC 
(rev 10409)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-09-06 16:35:03 UTC 
(rev 10410)
@@ -410,10 +410,10 @@
                fs.removeValue("sig"); 
                if(!fromLocal){
                        try{
-                               if(signature == null || !DSA.verify(peerPubKey, 
new DSASignature(signature), new 
BigInteger(fs.toOrderedString().getBytes("UTF-8")))){
+                               if(signature == null || !DSA.verify(peerPubKey, 
new DSASignature(signature), new 
BigInteger(md.digest(fs.toOrderedString().getBytes("UTF-8"))))){
                                        Logger.error(this, "The integrity of 
the reference has been compromized!");
                                        this.isSignatureVerificationSuccessfull 
= false;
-                                       
if(Version.getArbitraryBuildNumber(version)>969) // TODO: REMOVE: the backward 
compat. kludge : version checking
+                                       
if(Version.getArbitraryBuildNumber(version)>970) // TODO: REMOVE: the backward 
compat. kludge : version checking
                                                throw new 
ReferenceSignatureVerificationException("The integrity of the reference has 
been compromized!");
                                }else
                                        this.isSignatureVerificationSuccessfull 
= true;
@@ -2003,13 +2003,12 @@
                        localRoutingBackedOffUntil = routingBackedOffUntil;
                }
                synchronized(this) {
-                       if(now > lastSampleTime) { // don't report twice in the 
same millisecond
-                               if (now > localRoutingBackedOffUntil) { // not 
backed off
-                                       if (lastSampleTime > 
localRoutingBackedOffUntil) { // last sample after last backoff
+                       if(now > lastSampleTime) {
+                               if (now > localRoutingBackedOffUntil) {
+                                       if (lastSampleTime > 
localRoutingBackedOffUntil) {
                                                backedOffPercent.report(0.0);
                                        } else {
-                                               if(localRoutingBackedOffUntil > 
0)
-                                                       
backedOffPercent.report((double)(localRoutingBackedOffUntil - 
lastSampleTime)/(double)(now - lastSampleTime));
+                                               
backedOffPercent.report((double)(localRoutingBackedOffUntil - 
lastSampleTime)/(double)(now - lastSampleTime));
                                        }
                                } else {
                                        backedOffPercent.report(1.0);

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-09-06 15:30:16 UTC (rev 
10409)
+++ trunk/freenet/src/freenet/node/Version.java 2006-09-06 16:35:03 UTC (rev 
10410)
@@ -21,11 +21,11 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 969;
+       private static final int buildNumber = 970;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 950;
-       private static final int newLastGoodBuild = 969;
+       private static final int newLastGoodBuild = 970;
        private static final long transitionTime;

        static {


Reply via email to