Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@ximian.com>2003-03-07 05:33:43 +0300
committerSebastien Pouliot <sebastien@ximian.com>2003-03-07 05:33:43 +0300
commitfea6edcaa66871eff10939b2a71e63b9979f6973 (patch)
treed8dd5beabf3c830195a004632341ede3be2dba9c /mcs/class/Mono.Security/Mono.Security.Authenticode
parent10ca74767fadbe8f9b0da0d7f9ef10706f217642 (diff)
2003-03-06 Sebastien Pouliot <spouliot@videotron.ca>
* SoftwarePublisherCertificate.cs: New. Class to load or create SPC files (which are PKCS#7 files containing only certificates and CRL). svn path=/trunk/mcs/; revision=12273
Diffstat (limited to 'mcs/class/Mono.Security/Mono.Security.Authenticode')
-rw-r--r--mcs/class/Mono.Security/Mono.Security.Authenticode/ChangeLog6
-rw-r--r--mcs/class/Mono.Security/Mono.Security.Authenticode/SoftwarePublisherCertificate.cs62
2 files changed, 68 insertions, 0 deletions
diff --git a/mcs/class/Mono.Security/Mono.Security.Authenticode/ChangeLog b/mcs/class/Mono.Security/Mono.Security.Authenticode/ChangeLog
new file mode 100644
index 00000000000..b7b0e1b28da
--- /dev/null
+++ b/mcs/class/Mono.Security/Mono.Security.Authenticode/ChangeLog
@@ -0,0 +1,6 @@
+2003-03-06 Sebastien Pouliot <spouliot@videotron.ca>
+
+ * SoftwarePublisherCertificate.cs: New. Class to load or create
+ SPC files (which are PKCS#7 files containing only certificates
+ and CRL).
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Authenticode/SoftwarePublisherCertificate.cs b/mcs/class/Mono.Security/Mono.Security.Authenticode/SoftwarePublisherCertificate.cs
new file mode 100644
index 00000000000..f7bd219bf63
--- /dev/null
+++ b/mcs/class/Mono.Security/Mono.Security.Authenticode/SoftwarePublisherCertificate.cs
@@ -0,0 +1,62 @@
+//
+// SoftwarePublisherCertificate.cs
+// - Software Publisher Certificates Implementation
+//
+// Author:
+// Sebastien Pouliot (spouliot@motus.com)
+//
+// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+//
+
+using System;
+using System.Collections;
+using System.IO;
+using System.Security.Cryptography.X509Certificates;
+
+using Mono.Security;
+
+namespace Mono.Security.Authenticode {
+
+ public class SoftwarePublisherCertificate {
+
+ private PKCS7.SignedData pkcs7;
+
+ public SoftwarePublisherCertificate ()
+ {
+ pkcs7 = new PKCS7.SignedData ();
+ pkcs7.ContentInfo.ContentType = PKCS7.data;
+ }
+
+ public SoftwarePublisherCertificate (byte[] spc) : this ()
+ {
+ PKCS7.ContentInfo ci = new PKCS7.ContentInfo (spc);
+ if (ci.ContentType != PKCS7.signedData)
+ throw new ArgumentException ("Unsupported ContentType");
+ pkcs7 = new PKCS7.SignedData (ci.Content);
+ }
+
+ public X509CertificateCollection Certificates {
+ get { return pkcs7.Certificates; }
+ }
+
+ public ArrayList CRLs {
+ get { return pkcs7.CRLs; }
+ }
+
+ public byte[] GetBytes ()
+ {
+ PKCS7.ContentInfo ci = new PKCS7.ContentInfo (PKCS7.signedData);
+ ci.Content.Add (pkcs7.ASN1);
+ return ci.GetBytes ();
+ }
+
+ static public SoftwarePublisherCertificate CreateFromFile (string filename)
+ {
+ FileStream fs = File.Open (filename, FileMode.Open, FileAccess.Read, FileShare.Read);
+ byte[] data = new byte [fs.Length];
+ fs.Read (data, 0, data.Length);
+ fs.Close ();
+ return new SoftwarePublisherCertificate (data);
+ }
+ }
+}