[xmlsec] XMLsec-openssl signature verification failure
Aleksey Sanin
aleksey at aleksey.com
Mon Aug 27 08:52:00 PDT 2007
Could you please make sure that you do not modify the "SignedInfo"
element content in any way? Even removing a single space matters.
Aleksey
Frederic HEULIN wrote:
> Hi,
>
> i've compiled xmlsec (1.2.10) against :
> - libiconv 1.11
> - libxml2 2.6.28
> - libxslt 1.1.20
> - openssl 9_7_c
> on :
> - Linux (GLibc 2.3.2, GCC 3.2.2-5, Red Hat, 2.4.20)
> - HPUX (HP-UX B.11.00 U 9000/800, aCC: HP ANSI C++ B3910B A.03.25)
>
> I'm using xmlsec as in the verify1 test case,
> cause i need to ignore the KeyInfo part of the signature.
> (I have not tested the Adopt way atm.)
>
> The only difference I have with verify1 test case is that i need to Register
> Input Callbacks to handle "cid:" references.
>
> All references seems OK.
> Certificate loading seems OK. (All certifcates I have tested are self-signed btw)
> Keyinfo skipping seems OK.
>
> But Whatever the message I give as input to my application :
> - if i put the wrong certificate, openssl complains of a padding problem,
> - if i give the right certificate :
> - xmlsec complains that "data do not match:signature do not match"
> - which gives at openssl level : "rsa routines:RSA_verify:bad signature"
>
> If I understand well the second case :
> - my references are good, so my message (parts pointed by reference) has (have) not been modified
> - my certificate is good (differences in results between good and bad certificate)
> - but my signature is invalid so only the signedinfo part or signature value
> have been modified thus invalidating the whole signature !
> The latter is wrong cause I have tried with certified/verified messages in entry
> and I have the same errors.
>
> Here's the debug output of the DSigCtx :
>
> = VERIFICATION CONTEXT
> == Status: invalid
> == flags: 0x00000000
> == flags2: 0x00000000
> == Key Info Read Ctx:
> = KEY INFO READ CONTEXT
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled key data: all
> == RetrievalMethod level (cur/max): 0/1
> == TRANSFORMS CTX (status=0)
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled transforms: all
> === uri: NULL
> === uri xpointer expr: NULL
> == EncryptedKey level (cur/max): 0/1
> === KeyReq:
> ==== keyId: rsa
> ==== keyType: 0x00000001
> ==== keyUsage: 0x00000002
> ==== keyBitsSize: 0
> === list size: 0
> == Key Info Write Ctx:
> = KEY INFO WRITE CONTEXT
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled key data: all
> == RetrievalMethod level (cur/max): 0/1
> == TRANSFORMS CTX (status=0)
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled transforms: all
> === uri: NULL
> === uri xpointer expr: NULL
> == EncryptedKey level (cur/max): 0/1
> === KeyReq:
> ==== keyId: NULL
> ==== keyType: 0x00000001
> ==== keyUsage: 0xffffffff
> ==== keyBitsSize: 0
> === list size: 0
> == Signature Transform Ctx:
> == TRANSFORMS CTX (status=2)
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled transforms: all
> === uri: NULL
> === uri xpointer expr: NULL
> === Transform: c14n (href=http://www.w3.org/TR/2001/REC-xml-c14n-20010315)
> === Transform: rsa-sha1 (href=http://www.w3.org/2000/09/xmldsig#rsa-sha1)
> === Transform: membuf-transform (href=NULL)
> == Signature Method:
> === Transform: rsa-sha1 (href=http://www.w3.org/2000/09/xmldsig#rsa-sha1)
> == Signature Key:
> == KEY
> === method: RSAKeyValue
> === key type: Public
> === key name:
> /home/fredd/DEVEL/CURRENT/ssl/certs/partner1.cer
> === key usage: -1
> === rsa key: size = 1024
> === list size: 1
> === X509 Data:
> ==== Certificate:
> ==== Subject Name: /C=.../CN=partner1
> ==== Issuer Name: /C=...
> ==== Issuer Serial: 0
> == SignedInfo References List:
> === list size: 2
> = REFERENCE VERIFICATION CONTEXT
> == Status: succeeded
> == URI: ""
> == Reference Transform Ctx:
> == TRANSFORMS CTX (status=2)
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled transforms: all
> === uri: NULL
> === uri xpointer expr: NULL
> === Transform: enveloped-signature
> (href=http://www.w3.org/2000/09/xmldsig#enveloped-signature)
> === Transform: xpath (href=http://www.w3.org/TR/1999/REC-xpath-19991116)
> === Transform: c14n (href=http://www.w3.org/TR/2001/REC-xml-c14n-20010315)
> === Transform: sha1 (href=http://www.w3.org/2000/09/xmldsig#sha1)
> === Transform: membuf-transform (href=NULL)
> == Digest Method:
> === Transform: sha1 (href=http://www.w3.org/2000/09/xmldsig#sha1)
> = REFERENCE VERIFICATION CONTEXT
> == Status: succeeded
> == URI: "cid:payload-1-contid000069d446d2c55f00023bd2"
> == Reference Transform Ctx:
> == TRANSFORMS CTX (status=2)
> == flags: 0x00000000
> == flags2: 0x00000000
> == enabled transforms: all
> === uri: cid:payload-1-contid000069d446d2c55f00023bd2
> === uri xpointer expr: NULL
> === Transform: input-uri (href=NULL)
> === Transform: sha1 (href=http://www.w3.org/2000/09/xmldsig#sha1)
> === Transform: membuf-transform (href=NULL)
> == Digest Method:
> === Transform: sha1 (href=http://www.w3.org/2000/09/xmldsig#sha1)
> == Manifest References List:
> === list size: 0
>
>
> Any ideas on where am I wrong ?
> Shall I give you more details ? Which ones ?
>
> Thanks in advances for any help,
> Frederic HEULIN
> _______________________________________________
> xmlsec mailing list
> xmlsec at aleksey.com
> http://www.aleksey.com/mailman/listinfo/xmlsec
More information about the xmlsec
mailing list