Author: toad
Date: 2007-05-31 20:42:53 +0000 (Thu, 31 May 2007)
New Revision: 13419

Modified:
   trunk/freenet/src/freenet/io/comm/DMT.java
   trunk/freenet/src/freenet/node/RequestHandler.java
   trunk/freenet/src/freenet/node/SSKInsertSender.java
Log:
Always pad pubkeys. Prevents some traffic analysis attacks.

Modified: trunk/freenet/src/freenet/io/comm/DMT.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/DMT.java  2007-05-31 19:53:04 UTC (rev 
13418)
+++ trunk/freenet/src/freenet/io/comm/DMT.java  2007-05-31 20:42:53 UTC (rev 
13419)
@@ -21,6 +21,7 @@

 import java.util.LinkedList;

+import freenet.crypt.DSAPublicKey;
 import freenet.keys.Key;
 import freenet.keys.NodeCHK;
 import freenet.keys.NodeSSK;
@@ -674,10 +675,10 @@
                addField(PUBKEY_AS_BYTES, ShortBuffer.class);
        }};

-       public static Message createFNPSSKPubKey(long uid, byte[] pubkey) {
+       public static Message createFNPSSKPubKey(long uid, DSAPublicKey pubkey) 
{
                Message msg = new Message(FNPSSKPubKey);
                msg.set(UID, uid);
-               msg.set(PUBKEY_AS_BYTES, new ShortBuffer(pubkey));
+               msg.set(PUBKEY_AS_BYTES, new 
ShortBuffer(pubkey.asPaddedBytes()));
                return msg;
        }


Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java  2007-05-31 19:53:04 UTC 
(rev 13418)
+++ trunk/freenet/src/freenet/node/RequestHandler.java  2007-05-31 20:42:53 UTC 
(rev 13419)
@@ -82,7 +82,7 @@
             if(key instanceof NodeSSK) {
                 if(needsPubKey) {
                        DSAPublicKey key = 
((NodeSSK)block.getKey()).getPubKey();
-                       Message pk = DMT.createFNPSSKPubKey(uid, key.asBytes());
+                       Message pk = DMT.createFNPSSKPubKey(uid, key);
                        if(logMINOR) Logger.minor(this, "Sending PK: "+key+ ' ' 
+key.toLongString());
                        source.sendSync(pk, null);
                 }
@@ -164,7 +164,7 @@
                         source.sendSync(df, this);
                         node.sentPayload(rs.getSSKData().length);
                         if(needsPubKey) {
-                               Message pk = DMT.createFNPSSKPubKey(uid, 
((NodeSSK)rs.getSSKBlock().getKey()).getPubKey().asBytes());
+                               Message pk = DMT.createFNPSSKPubKey(uid, 
((NodeSSK)rs.getSSKBlock().getKey()).getPubKey());
                                source.sendSync(pk, this);
                         }
                        } else if(!rs.transferStarted()) {

Modified: trunk/freenet/src/freenet/node/SSKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertSender.java 2007-05-31 19:53:04 UTC 
(rev 13418)
+++ trunk/freenet/src/freenet/node/SSKInsertSender.java 2007-05-31 20:42:53 UTC 
(rev 13419)
@@ -244,7 +244,7 @@
             // Firstly, do we need to send them the pubkey?

             if(msg.getBoolean(DMT.NEED_PUB_KEY)) {
-               Message pkMsg = DMT.createFNPSSKPubKey(uid, pubKey.asBytes());
+               Message pkMsg = DMT.createFNPSSKPubKey(uid, pubKey);
                try {
                        next.sendAsync(pkMsg, null, 0, this);
                } catch (NotConnectedException e) {


Reply via email to