[freenet-cvs] r17474 - in trunk/freenet/src/freenet: io/comm node

toad at freenetproject.org toad at freenetproject.org
Sat Feb 2 16:40:52 UTC 2008


Author: toad
Date: 2008-02-02 16:40:52 +0000 (Sat, 02 Feb 2008)
New Revision: 17474

Modified:
   trunk/freenet/src/freenet/io/comm/DMT.java
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Include an HMAC authenticator on FNPOfferKey so we don't have to remember what we've offered.

Modified: trunk/freenet/src/freenet/io/comm/DMT.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/DMT.java	2008-02-02 16:25:41 UTC (rev 17473)
+++ trunk/freenet/src/freenet/io/comm/DMT.java	2008-02-02 16:40:52 UTC (rev 17474)
@@ -126,6 +126,7 @@
 	public static final String HASHES = "hashes";
 	public static final String REJECT_CODE = "rejectCode";
 	public static final String ROUTING_ENABLED = "routingEnabled";
+	public static final String OFFER_AUTHENTICATOR = "offerAuthenticator";
 	
 	/** Very urgent */
 	public static final short PRIORITY_NOW=-2;
@@ -849,9 +850,10 @@
 		addField(KEY, Key.class);
 	}};
 	
-	public static Message createFNPOfferKey(Key key) {
+	public static Message createFNPOfferKey(Key key, byte[] authenticator) {
 		Message msg = new Message(FNPOfferKey);
 		msg.set(KEY, key);
+		msg.set(OFFER_AUTHENTICATOR, authenticator);
 		return msg;
 	}
 	

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java	2008-02-02 16:25:41 UTC (rev 17473)
+++ trunk/freenet/src/freenet/node/PeerNode.java	2008-02-02 16:40:52 UTC (rev 17474)
@@ -10,6 +10,7 @@
 import java.math.BigInteger;
 import java.net.MalformedURLException;
 import java.net.UnknownHostException;
+import java.security.MessageDigest;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -30,6 +31,7 @@
 import freenet.crypt.DSAGroup;
 import freenet.crypt.DSAPublicKey;
 import freenet.crypt.DSASignature;
+import freenet.crypt.HMAC;
 import freenet.crypt.KeyAgreementSchemeContext;
 import freenet.crypt.SHA256;
 import freenet.crypt.UnsupportedCipherException;
@@ -3078,7 +3080,10 @@
 
 	/** Offer a key to this node */
 	public void offer(Key key) {
-		Message msg = DMT.createFNPOfferKey(key);
+		byte[] keyBytes = key.getFullKey();
+		HMAC hash = new HMAC(SHA256.getInstance());
+		byte[] authenticator = hash.mac(node.failureTable.offerAuthenticatorKey, keyBytes, 32);
+		Message msg = DMT.createFNPOfferKey(key, authenticator);
 		try {
 			sendAsync(msg, null, 0, null);
 		} catch(NotConnectedException e) {




More information about the cvs mailing list