<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.StileMessaggioDiPostaElettronica17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1263605414;
        mso-list-type:hybrid;
        mso-list-template-ids:-1016143368 68157457 68157465 68157467 68157455 68157465 68157467 68157455 68157465 68157467;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1
        {mso-list-id:1913193115;
        mso-list-type:hybrid;
        mso-list-template-ids:2021970814 -1023232174 68157443 68157445 68157441 68157443 68157445 68157441 68157443 68157445;}
@list l1:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:20.25pt;
        text-indent:-18.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=IT link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span lang=EN-US>Hi guys,<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I used xmlsec for the first time years ago,
now I am updating my software to validate xml signatures generated with other
softaware.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I have a verification error!<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>The error reason is clear, but I don’t
understand if it is a Xmlsec interpretation misunderstanding of Xml Signature
standard or not…<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>FILES <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I have a document (doc.xml) and a detached
xml signature generate with Oxygen Xml Editor 13.2 (det-rsasha1.xml)<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>VERIFY ERROR<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>>xmlsec --verify det-rsasha1.xml<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>error : Unknown IO error<o:p></o:p></span></p>

<p class=MsoNormal><b><span lang=EN-US>func=xmlSecTransformEnvelopedExecute:file=..\src\enveloped.c:line=108:obj=enveloped-signature:subj=unknown:error=34:same
document is required for transform:<o:p></o:p></span></b></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecTransformDefaultPushXml:file=..\src\transforms.c:line=2371:obj=enveloped-signature:subj=xmlSecTransformExecute:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecParserPushBin:file=..\src\parser.c:line=222:obj=xml-parser:subj=xmlSecTransformPushXml:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecTransformPump:file=..\src\transforms.c:line=1634:obj=xml-parser:subj=xmlSecTransformPushBin:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecTransformCtxUriExecute:file=..\src\transforms.c:line=1160:obj=unknown:subj=xmlSecTransformPump:error=1:xmlsec
library function failed:uri=doc.xml<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecTransformCtxExecute:file=..\src\transforms.c:line=1280:obj=unknown:subj=xmlSecTransformCtxUriExecute:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecDSigReferenceCtxProcessNode:file=..\src\xmldsig.c:line=1571:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecDSigCtxProcessSignedInfoNode:file=..\src\xmldsig.c:line=804:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec
library function failed:node=Reference<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecDSigCtxProcessSignatureNode:file=..\src\xmldsig.c:line=547:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>func=xmlSecDSigCtxVerify:file=..\src\xmldsig.c:line=366:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec
library function failed:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Error: signature failed<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>ERROR<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>SignedInfo References (ok/all): 0/1<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Manifests References (ok/all): 0/0<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Error: failed to verify file
"det-rsasha1.xml"<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>ERROR REASON<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Now… the error is due to the combined
use of <o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>reference to an <b>external</b>
document doc.xml<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>use of enveloped-signature
transform by that reference<o:p></o:p></span></p>

<p class=MsoNormal><b><span lang=EN-US>XmlSec enveloped-signature transform
requires that the xml document <o:p></o:p></span></b></p>

<p class=MsoNormal><b><span lang=EN-US>(target of the transformation itself) contains
the signature that contains the Reference node.<o:p></o:p></span></b></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>(In my case this is not true, because the
document target of the transform is external <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>and does not contain the Signature node)<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>QUESTION<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Is this implementation check really correct???<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>If it is correct… why Oxygen Xml
Editor 13.2 generate  this combination?<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Here is the Xml Signature standard:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>6.6.4 Enveloped Signature Transform<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US> “An enveloped signature
transform <em><b><span style='font-family:"Calibri","sans-serif"'>T</span></b></em>
removes the whole </span><code><span lang=EN-US style='font-size:10.0pt'>Signature</span></code><span
lang=EN-US> element containing <em><b><span style='font-family:"Calibri","sans-serif"'>T</span></b></em>
from the digest calculation of the </span><code><span lang=EN-US
style='font-size:10.0pt'>Reference</span></code><span lang=EN-US> element
containing <em><b><span style='font-family:"Calibri","sans-serif"'>T</span></b></em>.
The entire string of characters used by an XML processor to match the </span><code><span
lang=EN-US style='font-size:10.0pt'>Signature</span></code><span lang=EN-US>
with the XML production </span><code><span lang=EN-US style='font-size:10.0pt'>element</span></code><span
lang=EN-US> is removed. The output of the transform is equivalent to the output
that would result from replacing <em><b><span style='font-family:"Calibri","sans-serif"'>T</span></b></em>
with an XPath transform containing the following </span><code><span lang=EN-US
style='font-size:10.0pt'>XPath</span></code><span lang=EN-US> parameter element:
[…]”<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>From my point of view the xmlsec
implementation is too strict!<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>The standard does not require that the
document (target of T) actually contains the Signature node,<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>the standard only say that the transform T removes
the Signature node containing the transform T from the document.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>If the document does not contain the Signature
node, no document modification is specified for this transform.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>If document doc.xml does not contain a Signature
node,<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I suppose that the transformation result should
be the document doc.xml itself.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Am I wrong?<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Oxygen is not standard? <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>XmlSec is too strict?<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Who is right? <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Thank you for your time<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'>-----------------------------------<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'>Guido
Billi<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'>Telvox
S.R.L.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'>Via
Pastrengo, 2<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'>40123
Bologna<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'>tel: 051
33 97 121<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.5pt;font-family:Consolas'><a
href="http://www.telvox.com">www.telvox.com</a><o:p></o:p></span></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

</div>

</body>

</html>