2014-11-28 6 views
4

Возможно ли использовать http://www.w3.org/2006/12/xml-c14n11 CanonicalizationMethod с SignedXml?SignedXml CanonicalizationMethod - http://www.w3.org/2006/12/xml-c14n11

SignedXml signedXml = new SignedXml(xmlDoc); 
signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/2006/12/xml-c14n11"; 

бросает

System.Security.Cryptography.CryptographicException: Could not create the XML tr 
ansformation identified by the URI http://www.w3.org/2006/12/xml-c14n11. 

Спасибо!

ответ

1

Не похоже, что он был реализован .NET еще.

https://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.signedinfo.canonicalizationmethod(v=vs.110).aspx

Вы, возможно, придется сделать свой собственный класс Transform, как это:

public class XmlDsigC14N11Transform: XmlDsigC14NTransform 
    { 
     public override void LoadInput(object obj) 
     { 
      //do something here 
      base.LoadInput(obj); 
     } 

     public override object GetOutput() 
     { 
      //do something here 
      return base.GetOutput(); 
     } 
    } 

и карта вашего трансформироваться в "http://www.w3.org/2006/12/xml-c14n11".

CryptoConfig.AddAlgorithm(typeof(XmlDsigC14N11Transform), "http://www.w3.org/2006/12/xml-c14n11");