[freenet-cvs] r15143 - branches/freenet-jfk/src/freenet/node
kryptos at freenetproject.org
kryptos at freenetproject.org
Thu Sep 13 15:08:14 UTC 2007
Author: kryptos
Date: 2007-09-13 15:08:14 +0000 (Thu, 13 Sep 2007)
New Revision: 15143
Modified:
branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
Log:
JFK(3) parsed
Modified: branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
===================================================================
--- branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-09-13 14:53:14 UTC (rev 15142)
+++ branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-09-13 15:08:14 UTC (rev 15143)
@@ -753,9 +753,19 @@
return;
}
// Decrypt
- // FIXME: How?
-
- byte[] idI = new byte[0];
+ BlockCipher c = pn.outgoingSetupCipher;
+ PCFBMode pk=PCFBMode.create(c);
+ int ivLength = pk.lengthIV();
+ pk.reset(payload,inputOffset);
+ // Decrypt the rest of the payload
+ pk.blockDecipher(payload,inputOffset,payload.length-inputOffset);
+ inputOffset += ivLength;
+ /*
+ * DecipheredData Format:
+ * idI
+ * Signature-r,s
+ */
+ byte[] idI = new byte[0];
System.arraycopy(payload,inputOffset , idI ,0, idI.length);
inputOffset += idI.length;
// Now verify signature
@@ -843,17 +853,16 @@
DSASignature localSignature = signDHParams(nonceInitiator,nonceResponder,_ourExponential,_hisExponential);
byte[] r = localSignature.getRBytes(Node.SIGNATURE_PARAMETER_LENGTH);
byte[] s = localSignature.getSBytes(Node.SIGNATURE_PARAMETER_LENGTH);
- if(r.length > 255 || s.length > 255)
- throw new IllegalStateException("R or S is too long: r.length="+r.length+" s.length="+s.length);
+
// Encrypt idI,r,s
// Encryption is performed using HMAC[Ni,Nr,1] over the key g^ir
- BlockCipher c=pn.outgoingSetupCipher;
+ BlockCipher c=pn.incomingSetupCipher;
/*
* Initializes the cipher context with the given key
* This would avoid the computation of key using the Rijndael key schedule(S boxes,Rcon etc)
* The key used is generated from Hash of Message:(Ni, Nr, 1) over the shared key of DH
*/
- // FIXME: How to convert NativeBigInteger to ByteArray?
+
NativeBigInteger tempKey = dhContext.getHMACKey(_hisExponential,_hisGroup);
byte[] eKey = tempKey.toByteArray();
c.initialize(encryptionKey.getEncKey(eKey,nonceInitiator,nonceResponder));
More information about the cvs
mailing list