[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