Michael,

Thanks for that!  I have just committed to CVS.

Cheers,
        Berin

Michael Braunoeder wrote:
Hi,

I noticed some problems generating XML-signatures with certificates which have a key longer than 1024 bits. DSIGSignature::sign produced an signature without an errors, but when I tried to verify the signature I got an "OpenSSL:RSA::verify() - Error decrypting signature" execption.

The problem was the
char b64Buf[256];
in DSIGSignature::sign. This is to small for longer keys.
The attached patch changes the length to 1024. It works now for keys with a key length of 2048 and 4096.


kind regards,
Michael


------------------------------------------------------------------------

diff -r -u xml-security-c-1.1.0.orig/src/dsig/DSIGSignature.cpp xml-security-c-1.1.0/src/dsig/DSIGSignature.cpp
--- xml-security-c-1.1.0.orig/src/dsig/DSIGSignature.cpp 2004-03-07 04:20:51.000000000 +0100
+++ xml-security-c-1.1.0/src/dsig/DSIGSignature.cpp 2004-11-16 12:07:08.000000000 +0100
@@ -1102,7 +1102,7 @@

// Now check the calculated hash
- char b64Buf[256];
+ char b64Buf[1024];
unsigned int b64Len;
safeBuffer b64SB;

@@ -1122,7 +1122,7 @@
hash, hashLen,
(char *) b64Buf, - 256);
+ 1024);
if (b64Len <= 0) {
@@ -1152,7 +1152,7 @@
hash, hashLen,
(char *) b64Buf, - 256);
+ 1024);
if (b64Len <= 0) {
@@ -1186,7 +1186,7 @@
hashLen, mp_signedInfo->getHMACOutputLength());

- strncpy(b64Buf, (char *) b64SB.rawBuffer(), 255);
+ strncpy(b64Buf, (char *) b64SB.rawBuffer(), 1024);
break;
default :

Reply via email to