2 // Transform.cs - Transform implementation for XML Signature
5 // Sebastien Pouliot <sebastien@ximian.com>
6 // Atsushi Enomoto <atsushi@ximian.com>
8 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
9 // (C) 2004 Novell (http://www.novell.com)
12 using System.Runtime.InteropServices;
13 using System.Security.Policy;
16 namespace System.Security.Cryptography.Xml {
18 public abstract class Transform {
21 private XmlResolver xmlResolver;
25 // FIXME: enable it after CAS implementation
27 xmlResolver = new XmlSecureResolver (new XmlUrlResolver (), (Evidence) new Evidence ());
29 xmlResolver = new XmlUrlResolver ();
33 public string Algorithm {
38 public abstract Type[] InputTypes {
42 public abstract Type[] OutputTypes {
46 protected abstract XmlNodeList GetInnerXml ();
48 public abstract object GetOutput ();
50 public abstract object GetOutput (Type type);
52 public XmlElement GetXml ()
54 XmlDocument document = new XmlDocument ();
55 document.XmlResolver = GetResolver ();
56 XmlElement xel = document.CreateElement (XmlSignature.ElementNames.Transform, XmlSignature.NamespaceURI);
57 xel.SetAttribute (XmlSignature.AttributeNames.Algorithm, algo);
58 XmlNodeList xnl = this.GetInnerXml ();
60 foreach (XmlNode xn in xnl) {
61 XmlNode importedNode = document.ImportNode (xn, true);
62 xel.AppendChild (importedNode);
68 public abstract void LoadInnerXml (XmlNodeList nodeList);
70 public abstract void LoadInput (object obj);
72 internal XmlResolver GetResolver ()
79 public XmlResolver Resolver {
80 set { xmlResolver = value; }