Author: toad
Date: 2007-03-24 15:31:51 +0000 (Sat, 24 Mar 2007)
New Revision: 12310
Modified:
trunk/freenet/src/freenet/node/FNPPacketMangler.java
Log:
Fix the hash recycling bug (I think). Also simplify some code using hashes.
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-03-24
15:10:05 UTC (rev 12309)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-03-24
15:31:51 UTC (rev 12310)
@@ -171,10 +171,10 @@
PCFBMode pcfb = PCFBMode.create(authKey);
int ivLength = pcfb.lengthIV();
MessageDigest md = SHA256.getMessageDigest();
- int digestLength = md.getDigestLength();
- SHA256.returnMessageDigest(md);
+ int digestLength = HASH_LENGTH;
if(length < digestLength + ivLength + 4) {
if(logMINOR) Logger.minor(this, "Too short: "+length+" should be
at least "+(digestLength + ivLength + 4));
+ SHA256.returnMessageDigest(md);
return false;
}
// IV at the beginning
@@ -194,6 +194,7 @@
if(logMINOR) Logger.minor(this, "Data length: "+dataLength+" (1 =
"+byte1+" 2 = "+byte2+ ')');
if(dataLength > length - (ivLength+hash.length+2)) {
if(logMINOR) Logger.minor(this, "Invalid data length
"+dataLength+" ("+(length - (ivLength+hash.length+2))+") in tryProcessAuth");
+ SHA256.returnMessageDigest(md);
return false;
}
// Decrypt the data
@@ -203,6 +204,7 @@
md.update(payload);
byte[] realHash = md.digest();
+ SHA256.returnMessageDigest(md); md = null;
if(Arrays.equals(realHash, hash)) {
// Got one
@@ -545,9 +547,7 @@
System.arraycopy(payload, 3+ivLength+HASH_LENGTH, data, 0, dataLength);
pcfb.blockDecipher(data, 0, dataLength);
// Check the hash
- MessageDigest md = SHA256.getMessageDigest();
- byte[] realHash = md.digest(data);
- SHA256.returnMessageDigest(md); md = null;
+ byte[] realHash = SHA256.digest(data);
if(Arrays.equals(realHash, hash)) {
// Success!
long bootID = Fields.bytesToLong(data);