2013-07-22 7 views
0

XmlDsigC14NTransform에 문제가 있습니다. 나는 http://www.di-mgt.com.au/xmldsig2.html (일부는 정규화 된 SignedInfo 요소를 작성하고 SignatureValue를 계산 함) 에서 예제를 반복하려하지만 내 코드는 xml에서 공백을 잃어 버리고 올바른 hexdump를 얻지 못합니다.C# XmlDsigC14NTransform이 xml에서 모든 공백을 제거하는 이유

내 C# 코드 :

XmlDocument signedInfoXml = new XmlDocument(); 
signedInfoXml.Load(@"C:\temp\new_sign.txt"); 

XmlDsigC14NTransform xmlTransform = new XmlDsigC14NTransform(); 
xmlTransform.LoadInput(signedInfoXml); 
MemoryStream memoryStream = (MemoryStream)xmlTransform.GetOutput(); 
return BitConverter.ToString(memoryStream.ToArray()).Replace("-"," "); 

소스 XML (파일 C에서 : \ 임시 \의 new_sign.txt) : 내 XML로 공백을 저장하고 같은 축약 된 XML을 얻을 수있는 방법

<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 
     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
     <Reference URI=""> 
     <Transforms> 
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
     </Transforms> 
     <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
     <DigestValue>UWuYTYug10J1k5hKfonxthgrAR8=</DigestValue> 
     </Reference> 
    </SignedInfo> 

샘플 (http://www.di-mgt.com.au/xmldsig2.html)?

답변

1

당신은이 XMLDocument에 플래그를 설정할 수 있습니다 : 그것은 매우 제한된 경우에서 작동 할 수에도 불구하고

// Create a new XML document. 
    XmlDocument xmlDocument = new XmlDocument(); 

    // Format using white spaces. 
    xmlDocument.PreserveWhitespace = true; 

    // Load the XML file into the document. 
    xmlDocument.Load("file.xml"); 
+0

보존 공백은 정규화와 동일하지 않습니다. – UserControl