2 // Publisher.cs: Publisher Policy using X509 Certificate
5 // Sebastien Pouliot (spouliot@motus.com)
7 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
11 using System.Security;
12 using System.Security.Cryptography.X509Certificates;
13 using System.Security.Permissions;
16 namespace System.Security.Policy {
19 public sealed class Publisher : IIdentityPermissionFactory, IBuiltInEvidence {
21 private X509Certificate x509;
23 public Publisher (X509Certificate cert)
26 throw new ArgumentNullException ("cert");
32 // X509Certificate doesn't have a Dispose
33 // (bad design as it deal with unmanaged code in Windows)
34 // not really needed but corcompare will be happier
37 public X509Certificate Certificate {
39 // needed to match MS implementation
40 if (x509.GetRawCertData () == null)
41 throw new NullReferenceException ("x509");
48 return (object) new Publisher (x509);
51 public IPermission CreateIdentityPermission (Evidence evidence)
53 return new PublisherIdentityPermission (x509);
56 public override bool Equals (object o)
58 if (!(o is Publisher))
59 throw new ArgumentException ("not a Publisher");
60 return x509.Equals ((o as Publisher).Certificate);
63 public override int GetHashCode ()
65 return x509.GetHashCode ();
68 public override string ToString ()
70 SecurityElement se = new SecurityElement ("System.Security.Policy.Publisher");
71 se.AddAttribute ("version", "1");
72 SecurityElement cert = new SecurityElement ("X509v3Certificate");
73 string data = x509.GetRawCertDataString ();
77 return se.ToString ();
80 // interface IBuiltInEvidence
83 int IBuiltInEvidence.GetRequiredSize (bool verbose)
89 int IBuiltInEvidence.InitFromBuffer (char [] buffer, int position)
95 int IBuiltInEvidence.OutputToBuffer (char [] buffer, int position, bool verbose)