Hello everyone,

Given my time crunch, I've temporarily given up trying to get xmlsec
to work with our sparc64 environment (whatever my issue might be) and
I'm now working with it on a 32-bit intel linux box since I know I can
get it to compile properly there.

I was able to get the example verify3 program working as well as
successfully making my own calls to the library using the example
files.

My ultimate goal is to verify a SAML artifact (a signed XML document
used with a single sign-on (SSO)/federated authentication system). The
XML documents I will be need to verify have 'ID="xxx"' attributes in
them. I admit to being ignorant to the basics of XML signatures, which
is the primary reason I'm trying to use xmlsec. I was under the
general assumption that the IDs, at least as they are used here, are
simply unique identifiers used to associate a thread of transactions.
That is, a request and a response would have the same ID to link them
together. A subsequent request and response would have a different ID,
even though it's the same process and same type of data going back and
forth.

Here is an example of an industry-stanadard SAML "resolveresponse"
artifact that I will need to verify the signature on:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/1999/XMLSchema"; 
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";>
 <soapenv:Body><samlp:ArtifactResponse 
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"; 
ID="id-vNr0lmaihgeRLLV7Kan5GeSmKXI-" 
InResponseTo="id-xBLscvrh4UbFFFsugsJK8N1FcbMcw0" Version="2.0" 
IssueInstant="2007-04-24T20:07:37Z"><saml:Issuer 
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://fed.couort.net/fed/idp</saml:Issuer><samlp:Status><samlp:StatusCode
 
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></samlp:Status><samlp:Response
 ID="id-J0dTWn9qix-7hd1J3QkT0gHCzHQ-" 
InResponseTo="id-IBCAA3MVjVcsB6yMKLKV2DZvGegRLX-" Version="2.0" 
IssueInstant="2007-04-24T20:07:36Z"><saml:Issuer 
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://fed.couport.net/fed/idp</saml:Issuer><samlp:Status><samlp:StatusCode
 
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></samlp:Status><saml:Assertion
 xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0" 
ID="id-MnmgTQoTKX1-uz1e4IP3cHP-bV0-" 
IssueInstant="2007-04-24T20:07:36Z"><saml:Issuer 
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://fed.couport.net/fed/idp</saml:Issuer><dsig:Signature
 xmlns="http://www.w3.org/2000/09/xmldsig#"; 
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#";><dsig:SignedInfo><dsig:CanonicalizationMethod
 Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><dsig:SignatureMethod 
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference 
URI="#id-MnmgTQoTKX1-uz1e4IP3cHP-bV0-"><dsig:Transforms><dsig:Transform 
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><dsig:Transform
 Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#";><xc14n:InclusiveNamespaces 
xmlns:xc14n="http://www.w3.org/2001/10/xml-exc-c14n#"; 
xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"; 
PrefixList="xs"/></dsig:Transform>
 </dsig:Transforms><dsig:DigestMethod 
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>niJCe9IrQCZ5CTTyOMWGzgvLizc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo>
 
<dsig:SignatureValue>TROpijSd8Jz/dWoWI0piw6nX8Dj0ewQJCjO6z7HAOjCJP4duoK7vg88wVcc+QCBmE8y7uoTIgLTr7kkLFP9NmtlGt2iKBUZNRA3qJoCfY2sflkd9omVZusL3tKB5kuWPf9pCa+O7sHJe6m5LUJmX+ZK0pZCh8ZcomKMQmkSZT10=</dsig:SignatureValue></dsig:Signature><saml:Subject><saml:NameID
 
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName">06810</saml:NameID><saml:SubjectConfirmation
 Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml:SubjectConfirmationData 
NotOnOrAfter="2007-04-24T20:22:36Z" Recipient="https://couiad.com:82/assert"; 
InResponseTo="id-IBCAA3MVjVcsB6yMKLKV2DZvGegRLX-"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions
 NotBefore="2007-04-24T19:57:36Z" 
NotOnOrAfter="2007-04-24T20:22:36Z"><saml:AudienceRestriction><saml:Audience>http://couiad.com</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement
 AuthnInstant="2007-04-24T20:07:36Z" 
SessionIndex="id-MPJzG0p5f006gGPQboYaMv9aNgg-" 
SessionNotOnOrAfter="2007-04-24T20:09:36Z"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute
 Name="mail" 
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue
 xmlns:xs="http://www.w3.org/2001/XMLSchema";>[EMAIL 
PROTECTED]</saml:AttributeValue></saml:Attribute><saml:Attribute 
Name="agentnum" 
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue
 
xmlns:xs="http://www.w3.org/2001/XMLSchema";>06810</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion></samlp:Response></samlp:ArtifactResponse></soapenv:Body>
</soapenv:Envelope>

When I try to verify that SAML artifact, I get (in part) this output:

func=xmlSecXPathDataExecute:file=xpath.c:line=273:obj=unknown:subj=xmlXPtrEval:error=5:libxml2
 library function failed:expr=xpointer(id('id-MnmgTQoTKX1-uz1e4IP3cHP-bV0-'))
func=xmlSecTransformDefaultPushXml:file=transforms.c:line=2371:obj=Visa3DHackTransform:subj=xmlSecTransformExecute:error=1:xmlsec
 library function failed:
func=xmlSecTransformCtxXmlExecute:file=transforms.c:line=1207:obj=unknown:subj=xmlSecTransformPushXml:error=1:xmlsec
 library function failed:transform=Visa3DHackTransform
func=xmlSecTransformCtxExecute:file=transforms.c:line=1267:obj=unknown:subj=xmlSecTransformCtxXmlExecute:error=1:xmlsec
 library function failed:
func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1571:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec
 library function failed:
func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=804:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec
 library function failed:node=Reference
func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=547:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec
 library function failed:
func=xmlSecDSigCtxVerify:file=xmldsig.c:line=366:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec
 library function failed:
Error: signature verify

I've tried adding the DTD inside of the XML as suggested in the
mailing list archives, but it didn't seem to have any effect. I also
thought I'd try out the "dsigCtx->flags |=
XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK;" flag setting and it changed the
messages I get but it still failed to validate.

Is there a way to tell xmlsec to ignore the ID attribute? I tried
filtering them out before the call to xmlSecDSigCtxVerify which gets
rid of the xpointer error and just leaves me with:

func=xmlSecOpenSSLEvpDigestVerify:file=digests.c:line=229:obj=sha1:subj=unknown:error=12:invalid
 data:data and digest do not match

So, in my state of ignorance, if xmlsec could ignore the ID attribute,
then the existence of the ID attribute will not cause the xpointer
error and the data will match the digest.

Am I mistaken? If not, how would I go about this?

Thank you for your time.

-- 
James
Funny quotes: "There are 10 types of people in the world. 
Those who understand binary, and those who don't." -- Unknown
"A computer once beat me at chess, but it was no match for me at
kick boxing." -- Emo Philips

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

Reply via email to