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) {