Author: toad
Date: 2006-09-28 15:58:49 +0000 (Thu, 28 Sep 2006)
New Revision: 10541
Modified:
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Better error handling when we fail to add a ref AND always set the end marker
to End.
(Means stuff pasted from IRC will no longer fail to verify).
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2006-09-28 15:57:46 UTC
(rev 10540)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2006-09-28 15:58:49 UTC
(rev 10541)
@@ -405,12 +405,19 @@
fs.removeValue("sig");
if(!fromLocal){
try{
+ boolean failed = false;
if(signature == null || peerCryptoGroup == null
|| peerPubKey == null ||
- !DSA.verify(peerPubKey, new
DSASignature(signature), new
BigInteger(md.digest(fs.toOrderedString().getBytes("UTF-8"))))){
- Logger.error(this, "The integrity of
the reference has been compromized!");
+ (failed =
!DSA.verify(peerPubKey, new DSASignature(signature), new
BigInteger(md.digest(fs.toOrderedString().getBytes("UTF-8")))))){
+ String errCause = new String();
+ if(signature == null) errCause += " (No
signature)";
+ if(peerCryptoGroup == null) errCause +=
" (No peer crypto group)";
+ if(peerPubKey == null) errCause += "
(No peer public key)";
+ if(failed) errCause += " (VERIFICATION
FAILED)";
+ Logger.error(this, "The integrity of
the reference has been compromized!"+errCause);
this.isSignatureVerificationSuccessfull
= false;
+ fs.put("sig", signature);
if(Version.getArbitraryBuildNumber(version)>970) // TODO: REMOVE: the backward
compat. kludge : version checking
- throw new
ReferenceSignatureVerificationException("The integrity of the reference has
been compromized!");
+ throw new
ReferenceSignatureVerificationException("The integrity of the reference has
been compromized!"+errCause);
}else
this.isSignatureVerificationSuccessfull
= true;
} catch (UnsupportedEncodingException e) {