Hello,

I am trying to run the verify2.c program in Xcode and I noticed a strange issue 
while debugging the following code:

    /* Verify signature */
    if(xmlSecDSigCtxVerify(dsigCtx, node) < 0) {
        fprintf(stderr,"Error: signature verify\n");
        goto done;
    }

    // print status (my code)
    xmlSecDSigCtxDebugXmlDump(dsigCtx, stdout);

    /* print verification result to stdout */
    if(dsigCtx->status == xmlSecDSigStatusSucceeded) {
        fprintf(stdout, "Signature is OK\n");
    } else {
        fprintf(stdout, "Signature is INVALID\n");
    }

I am running the program successfully from the command line using a valid XML 
file with a valid public key with the following arguments:

./verify2 file.xml rsa_pub.pem

However, while stepping through this code in debug mode in Xcode, I can see the 
XML digital signature is validated successfully in the output from 
xmlSecDSigCtxDebugXmlDump(), but the if statement always prints “Signature is 
INVALID”. Looking at the value of the dsigCtx->status enum, it no longer has 
the enum value “xmlSecDSigStatusSucceeded" but rather some random number.

Can someone explain to me what could be happening that would cause the status 
to be lost while returning from the xmlSecDSigCtxVerify() function?

As a workaround, I have added a function to xmldsig.h named 
xmlSecDSigCtxStatusOK  that simply returns 0 (false) or 1 (true) if the 
dsigCtx->status is equal to xmlSecDSigStatusSucceeded.

Any help would be appreciated.

Thanks.

Regards,
Ian


_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec

Reply via email to