Where did you get the base64 encoded public key from? If it's not in the correct format, it won't get loaded properly by the library.

One possible thing to try would be to embed it into the appropriate KeyInfo structure within the XML and then just use the checksig tool to see how it verifies. IF that works, then it's an issue with your code below (which actually looks OK on a quick skim). If not, then it might be the key format.

Cheers,
        Berin

Matthias Niggemeier wrote:

Thanks for the hints. With setcce, i cannot verify against the public key.
xmlsec works, but i cannot tell the lib which public key to use, since
i only have the exponent and modulus in base64, but xmlsec wants pem/der-files.
Any idea how to get them from the exponent/modulus pair?

Regards

Matthias

-----Original Message-----
From: Milan Tomic [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 17, 2005 10:48 AM
To: security-dev@xml.apache.org
Subject: RE: Verifying RSA


You can try to validate signature with those toolkits:

1. Download trial:

http://www.setcce.si/eng/index45c.php

2. Download XMLSec binaries:

http://www.aleksey.com/xmlsec/download.html

3. Download Apache XSEC java lib. There are samples how to validate
signed doc.

Best regards,
Milan



-----Original Message-----
From: Matthias Niggemeier [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 17, 2005 10:36 AM
To: security-dev@xml.apache.org
Subject: RE: Verifying RSA


Milan,
thats a bit problematic since i have only "real" data for testing, so i don't think that my customer would be amused if i post the file here. Is there any program available which is able to verify a dsig? I googled around and found none :-(

Should the code work? (as far as it is possible to say without debugger)
Kind regards

Matthias


-----Original Message-----
From: Milan Tomic [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 17, 2005 9:31 AM
To: security-dev@xml.apache.org
Subject: RE: Verifying RSA


Could you post your XML file here for analisys?

Have you tried to verify signature with some other library

like Apache
XSEC Java library?

Best regards,
Milan



-----Original Message-----
From: Matthias Niggemeier [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 17, 2005 9:19 AM
To: security-dev@xml.apache.org
Subject: Verifying RSA


Hi there,
I have a problem verifying a signed xml doc. My doc looks

like this:

... xml snipped ...
</Product>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#";>
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"; /> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signatu re" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"; /> <DigestValue>abcde</DigestValue> </Reference> </SignedInfo> <SignatureValue>abcdefg</SignatureValue>
</Signature>

When I try to verify, I get an error

Reference URI="" failed to verify

What is wrong? The sender of the xml doc persists that the
signature is valid. My code to verify:

bool LoadValidateRSA(tstring sURI)
{
xercesc::DOMDocument *doc = NULL; XSECProvider prov;
   DSIGSignature* sig = NULL;
   XERCES_CPP_NAMESPACE::DOMBuilder* builder = NULL;
        WinCAPICryptoKeyRSA* pRSA = NULL;
        WinCAPICryptoProvider WCProv;

        builder =
GetImplementationLS()->createDOMBuilder(xercesc::DOMImplementa
tionLS::MODE_SYNCHRONOUS,0);

builder->setFeature(xercesc::XMLUni::fgDOMNamespaces, true);

     doc = builder->parseURI(X(sURI));

        pRSA = (WinCAPICryptoKeyRSA*)WCProv.keyRSA();
sig = prov.newSignatureFromDOM(doc); char cModulus[] = "sAGXf2IjqajW1F7m"; // snipped
        char cExponent[] = "ABCD";
        
        pRSA->loadPublicExponentBase64BigNums(cExponent,
(unsigned int) strlen(cExponent));
pRSA->loadPublicModulusBase64BigNums(cModulus, (unsigned int) strlen(cModulus));
        
        sig->load();
        sig->setSigningKey(pRSA);
        bVerifyOK = sig->verify();
}

I looked at the samples, but they didn't help me further

than this :-(

Regards

Matthias





Reply via email to