diff options
author | Sebastien Pouliot <sebastien@ximian.com> | 2003-03-07 05:33:43 +0300 |
---|---|---|
committer | Sebastien Pouliot <sebastien@ximian.com> | 2003-03-07 05:33:43 +0300 |
commit | fea6edcaa66871eff10939b2a71e63b9979f6973 (patch) | |
tree | d8dd5beabf3c830195a004632341ede3be2dba9c /mcs/class/Mono.Security/Mono.Security.Authenticode | |
parent | 10ca74767fadbe8f9b0da0d7f9ef10706f217642 (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/ChangeLog | 6 | ||||
-rw-r--r-- | mcs/class/Mono.Security/Mono.Security.Authenticode/SoftwarePublisherCertificate.cs | 62 |
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); + } + } +} |