2012-03-02 2 views
4

XAdESテンプレートでxmlに署名する必要があります。私は2つの参照を使用しています。問題は2番目の問題です。Transformを追加すると、この変換を行わないとFalseが返されます(signedXml.CheckSignature()がtrueを返します)。C#XAdESでXML文書に署名する

マイコード:

System.Security.Cryptography.Xml.Reference reference2; 
System.Security.Cryptography.Xml.SignedXml signedXml; 
... 
reference2 = new Reference(); 
reference2.Type = "http://uri.etsi.org/01903/v1.1.1#SignedProperties"; 
reference2.Uri = "#SignedPropertiesId"; 
//reference2.AddTransform(new XmlDsigExcC14NTransform()); IF I COMMENT THIS LINE IT WONT WORK 
signedXml.AddReference(reference2); 

signedXml.ComputeSignature(); 
XmlElement xmlDigitalSignature = signedXml.GetXml(); 
xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); 

signedXml.CheckSignature(); //return false if dont use Transform in second REF 

signedXml.ComputeSignature(); 
XmlElement xmlDigitalSignature = signedXml.GetXml(); 
xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); 

署名の第二部。

<ds:KeyInfo> 
    <ds:X509Data> 
    <ds:X509Certificate>cert...</ds:X509Certificate> 
    </ds:X509Data> 
</ds:KeyInfo> 
<ds:Object> 
    <xds:QualifyingProperties Target="#SignatureId"> 
    <xds:SignedProperties Id="SignedPropertiesId"> 
     <xds:SignedSignatureProperties> 

は.NETでこのような問題がありますか?

ありがとうございました。

答えて

0

XAdESのノードがSignatureノードにあり、オブジェクトノードの後に​​署名が正常に計算された後、オブジェクトノードと必要なノードが後で追加される必要があります。これは、あなたが実装しようとしているXAdESのレベル。

関連する問題