[freenet-cvs] r19720 - in trunk/freenet/src/freenet: keys node node/fcp
j16sdiz at freenetproject.org
j16sdiz at freenetproject.org
Sun May 4 09:27:20 UTC 2008
Author: j16sdiz
Date: 2008-05-04 09:27:20 +0000 (Sun, 04 May 2008)
New Revision: 19720
Modified:
trunk/freenet/src/freenet/keys/ClientKSK.java
trunk/freenet/src/freenet/keys/ClientSSK.java
trunk/freenet/src/freenet/keys/InsertableClientSSK.java
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/fcp/ClientPut.java
Log:
return SHA-256 instance after use
Modified: trunk/freenet/src/freenet/keys/ClientKSK.java
===================================================================
--- trunk/freenet/src/freenet/keys/ClientKSK.java 2008-05-04 09:26:44 UTC (rev 19719)
+++ trunk/freenet/src/freenet/keys/ClientKSK.java 2008-05-04 09:27:20 UTC (rev 19720)
@@ -35,6 +35,7 @@
public static ClientKSK create(String keyword) {
MessageDigest md256 = SHA256.getMessageDigest();
+ try {
byte[] keywordHash;
try {
keywordHash = md256.digest(keyword.getBytes("UTF-8"));
@@ -46,11 +47,13 @@
DSAPublicKey pubKey = new DSAPublicKey(Global.DSAgroupBigA, privKey);
byte[] pubKeyHash = md256.digest(pubKey.asBytes());
try {
- SHA256.returnMessageDigest(md256);
return new ClientKSK(keyword, pubKeyHash, pubKey, privKey, keywordHash);
} catch (MalformedURLException e) {
throw new Error(e);
}
+ } finally {
+ SHA256.returnMessageDigest(md256);
+ }
}
}
Modified: trunk/freenet/src/freenet/keys/ClientSSK.java
===================================================================
--- trunk/freenet/src/freenet/keys/ClientSSK.java 2008-05-04 09:26:44 UTC (rev 19719)
+++ trunk/freenet/src/freenet/keys/ClientSSK.java 2008-05-04 09:27:20 UTC (rev 19720)
@@ -51,6 +51,7 @@
if(cryptoKey.length != CRYPTO_KEY_LENGTH)
throw new MalformedURLException("Decryption key wrong length: "+cryptoKey.length+" should be "+CRYPTO_KEY_LENGTH);
MessageDigest md = SHA256.getMessageDigest();
+ try {
if(pubKey != null) {
byte[] pubKeyAsBytes = pubKey.asBytes();
md.update(pubKeyAsBytes);
@@ -73,7 +74,9 @@
} catch (UnsupportedCipherException e) {
throw new Error(e);
}
+ } finally {
SHA256.returnMessageDigest(md);
+ }
}
public ClientSSK(FreenetURI origURI) throws MalformedURLException {
Modified: trunk/freenet/src/freenet/keys/InsertableClientSSK.java
===================================================================
--- trunk/freenet/src/freenet/keys/InsertableClientSSK.java 2008-05-04 09:26:44 UTC (rev 19719)
+++ trunk/freenet/src/freenet/keys/InsertableClientSSK.java 2008-05-04 09:27:20 UTC (rev 19720)
@@ -85,6 +85,7 @@
}
// Pad it
MessageDigest md256 = SHA256.getMessageDigest();
+ try {
byte[] data;
// First pad it
if(compressedData.length != SSKBlock.DATA_LENGTH) {
@@ -174,7 +175,6 @@
if(x != SSKBlock.TOTAL_HEADERS_LENGTH)
throw new IllegalStateException("Too long");
try {
- SHA256.returnMessageDigest(md256);
return new ClientSSKBlock(data, headers, this, false); // FIXME set last arg to true to not verify
} catch (SSKVerifyException e) {
IllegalStateException exception=new IllegalStateException("Impossible encoding error: "+e.getMessage());
@@ -182,6 +182,9 @@
throw exception;
}
+ } finally {
+ SHA256.returnMessageDigest(md256);
+ }
}
private byte[] truncate(byte[] bs, int len) {
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2008-05-04 09:26:44 UTC (rev 19719)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2008-05-04 09:27:20 UTC (rev 19720)
@@ -462,11 +462,9 @@
// Does the packet match IV E( H(data) data ) ?
PCFBMode pcfb = PCFBMode.create(authKey);
int ivLength = pcfb.lengthIV();
- MessageDigest md = SHA256.getMessageDigest();
int digestLength = HASH_LENGTH;
if(length < digestLength + ivLength + 5) {
if(logMINOR) Logger.minor(this, "Too short: "+length+" should be at least "+(digestLength + ivLength + 5));
- SHA256.returnMessageDigest(md);
return false;
}
// IV at the beginning
@@ -486,7 +484,6 @@
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
@@ -494,9 +491,7 @@
System.arraycopy(buf, dataStart, payload, 0, dataLength);
pcfb.blockDecipher(payload, 0, payload.length);
- md.update(payload);
- byte[] realHash = md.digest();
- SHA256.returnMessageDigest(md); md = null;
+ byte[] realHash = SHA256.digest(payload);
if(Arrays.equals(realHash, hash)) {
// Got one
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2008-05-04 09:26:44 UTC (rev 19719)
+++ trunk/freenet/src/freenet/node/Node.java 2008-05-04 09:27:20 UTC (rev 19720)
@@ -2608,6 +2608,7 @@
DSAPublicKey key2 = (DSAPublicKey) cachedPubKeys.get(w);
if((key2 != null) && !key2.equals(key)) {
MessageDigest md256 = SHA256.getMessageDigest();
+ try {
byte[] hashCheck = md256.digest(key.asBytes());
if(Arrays.equals(hashCheck, hash)) {
Logger.error(this, "Hash is correct!!!");
@@ -2623,6 +2624,9 @@
} else {
Logger.error(this, "New hash is wrong");
}
+ } finally {
+ SHA256.returnMessageDigest(md256);
+ }
throw new IllegalArgumentException("Wrong hash?? Already have different key with same hash!");
}
cachedPubKeys.push(w, key);
Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java 2008-05-04 09:26:44 UTC (rev 19719)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java 2008-05-04 09:27:20 UTC (rev 19720)
@@ -228,6 +228,7 @@
MessageDigest md = SHA256.getMessageDigest();
md.reset();
try {
+ try {
md.update(salt.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {}
try {
@@ -239,8 +240,10 @@
Logger.error(this, "Got IOE: " +e.getMessage(), e);
throw new MessageInvalidException(ProtocolErrorMessage.COULD_NOT_READ_FILE, "Unable to access file: "+e, identifier, global);
}
- final byte[] foundHash = md.digest();
- SHA256.returnMessageDigest(md);
+ foundHash = md.digest();
+ } finally {
+ SHA256.returnMessageDigest(md);
+ }
if(logMINOR) Logger.minor(this, "FileHash result : we found " + Base64.encode(foundHash) + " and were given " + Base64.encode(saltedHash) + '.');
More information about the cvs
mailing list