Author: nextgens
Date: 2007-04-14 17:33:56 +0000 (Sat, 14 Apr 2007)
New Revision: 12704

Modified:
   trunk/freenet/src/freenet/node/fcp/ClientPut.java
Log:
simplify the code a bit ... it's still not verifying !

Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java   2007-04-14 17:18:31 UTC 
(rev 12703)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java   2007-04-14 17:33:56 UTC 
(rev 12704)
@@ -147,7 +147,7 @@

                this.data = tempData;
                this.clientMetadata = cm;
-               this.salt = globalClient.name;
+               this.salt = identifier;
                this.saltedHash = comptuteHash(salt, data);

                if(logMINOR) Logger.minor(this, "data = "+data+", uploadFrom = 
"+ClientPutMessage.uploadFromString(uploadFrom));
@@ -280,17 +280,16 @@
                this.salt = fs.get(ClientPutBase.SALT);
                String hash = fs.get(ClientPutBase.FILE_HASH);
                if(hash != null) {
-                       String mySaltedHash = null;
+                       byte[] mySaltedHash = null;
                        try {
-                               mySaltedHash = new String(Base64.decode(hash));
+                               mySaltedHash = Base64.decode(hash);
                        } catch (IllegalBase64Exception e) {
                                throw new PersistenceParseException("Could not 
read FileHash for "+identifier+" : "+e, e);
                        }
-                       this.saltedHash = mySaltedHash.getBytes("UTF-8");
+                       this.saltedHash = mySaltedHash;
                } else
                        this.saltedHash = null;

-               
                if(uploadFrom == ClientPutMessage.UPLOAD_FROM_DISK) {
                        origFilename = new File(fs.get("Filename"));
                        if(logMINOR)
@@ -298,10 +297,8 @@
                        data = new FileBucket(origFilename, true, false, false, 
false, false);
                        targetURI = null;

-                       if(salt != null) {
-                               if(!isHashVerified())
-                                       throw new 
PersistenceParseException("The hash doesn't match! or an error has occured.");
-                       }
+                       if((hash != null) && !isHashVerified())
+                               throw new PersistenceParseException("The hash 
doesn't match! or an error has occured.");
                } else if(uploadFrom == ClientPutMessage.UPLOAD_FROM_DIRECT) {
                        origFilename = null;
                        if(logMINOR)
@@ -412,9 +409,9 @@
                        fs.putSingle("TargetFilename", targetFilename);
                fs.putSingle("EarlyEncode", Boolean.toString(earlyEncode));

-               if(salt != null) {
-                       fs.putSingle(ClientPutBase.SALT, salt);
-                       fs.putSingle(ClientPutBase.FILE_HASH, 
Base64.encode(saltedHash));
+               if(persistenceType > PERSIST_REBOOT) {
+                       fs.putSingle(ClientPutBase.SALT, (salt == null ? 
identifier : salt));
+                       fs.putSingle(ClientPutBase.FILE_HASH, 
Base64.encode((salt == null ? comptuteHash(identifier, data) : saltedHash)));   
                  
                }

                return fs;
@@ -503,20 +500,22 @@

        private byte[] comptuteHash(String mySalt, Bucket content) {
                MessageDigest md = SHA256.getMessageDigest();
-               byte[] foundHash = null;
+               byte[] foundHash = new byte[SHA256.getDigestLength()];

                try {
-                       md.reset();
-                       md.update(mySalt.getBytes("UTF-8"));
                        BufferedInputStream bis = new 
BufferedInputStream(data.getInputStream());
-                       byte[] buf = new byte[4096];
-                       while(bis.read(buf) > 0)
-                               md.update(buf);
+                       bis.read(foundHash);
+                       bis.close();
+                       
+                       md.reset();
+                       md.update(mySalt.getBytes("UTF-8"));    
+                       md.update(foundHash);
+                       
                        foundHash = md.digest();
                } catch (IOException e) {
                        return null;
                } finally {
-                       SHA256.returnMessageDigest(md); 
+                       SHA256.returnMessageDigest(md);
                }

                return foundHash;


Reply via email to