https://issues.apache.org/bugzilla/show_bug.cgi?id=44335
Dominique LAURENT <[EMAIL PROTECTED]> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |[EMAIL PROTECTED]
--- Comment #4 from Dominique LAURENT <[EMAIL PROTECTED]> 2008-12-01 19:38:55
PST ---
Hey,
I just got this bug.
I think there may be a quicker fix:
just move the two lines:
//retrieve the byte[] from the stored signature
byte sigBytes[] = this.getSignatureValue();
before the try/catch block:
try {
SignedInfo si=this.getSignedInfo();
This way, if the Base64 decoding fails, the SignatureAlgorithm hasn't yet been
updated and does not need to be reset.
This avoids having to call #verify() just to reset the SignatureAlgorithm.
The checkSignatureValue method would look like this:
public boolean checkSignatureValue(Key pk) throws XMLSignatureException {
if (pk == null) {
Object exArgs[] = { "Didn't get a key" };
throw new XMLSignatureException("empty", exArgs);
}
//retrieve the byte[] from the stored signature
// Do this before calling the SignatureAlgorithm
// that way if something goes bad, the sa isn't corrupted
byte sigBytes[] = this.getSignatureValue();
try {
SignedInfo si=this.getSignedInfo();
//create a SignatureAlgorithms from the SignatureMethod inside
//SignedInfo. This is used to validate the signature.
SignatureAlgorithm sa =si.getSignatureAlgorithm();
if (log.isDebugEnabled()) {
log.debug("SignatureMethodURI = " + sa.getAlgorithmURI());
log.debug("jceSigAlgorithm = " +
sa.getJCEAlgorithmString());
log.debug("jceSigProvider = " + sa.getJCEProviderName());
log.debug("PublicKey = " + pk);
}
sa.initVerify(pk);
// Get the canonicalized (normalized) SignedInfo
SignerOutputStream so=new SignerOutputStream(sa);
OutputStream bos=new UnsyncBufferedOutputStream(so);
si.signInOctectStream(bos);
try {
bos.close();
} catch (IOException e) {
//Imposible
}
if (!sa.verify(sigBytes)) {
log.warn("Signature verification failed.");
return false;
}
return si.verify(this._followManifestsDuringValidation);
} catch (XMLSecurityException ex) {
throw new XMLSignatureException("empty", ex);
}
}
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.