2 // FileCertificateStore.cs: Handles a file-based certificate store.
5 // Sebastien Pouliot (spouliot@motus.com)
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
13 using Mono.Security.Authenticode;
14 using Mono.Security.X509;
15 using Mono.Security.X509.Stores;
17 namespace Mono.Security.X509.Stores {
19 public class FileCertificateStore : ICertificateStore {
22 private string _location;
23 private bool _readOnly;
24 private bool _createIfRequired;
25 private bool _includeArchives;
26 private bool _saveOnClose;
27 private SoftwarePublisherCertificate _spc;
29 public FileCertificateStore ()
32 _includeArchives = false;
33 _createIfRequired = true;
38 public X509CertificateCollection Certificates {
41 return _spc.Certificates;
46 public IntPtr Handle {
47 get { return (IntPtr) 0; }
52 public void Open (string name, string location, bool readOnly, bool createIfNonExisting, bool includeArchives)
55 _location = _location;
57 _createIfRequired = createIfNonExisting;
58 _includeArchives = includeArchives;
61 if (File.Exists (_name)) {
62 _spc = SoftwarePublisherCertificate.CreateFromFile (_name);
64 else if (_createIfRequired) {
65 _spc = new SoftwarePublisherCertificate ();
73 byte[] store = _spc.GetBytes ();
74 using (FileStream fs = File.OpenWrite (_name)) {
75 fs.Write (store, 0, store.Length);
81 public void Add (X509Certificate certificate)
83 if ((!_readOnly) && (_spc != null)) {
84 _spc.Certificates.Add (certificate);
89 public void Remove (X509Certificate certificate)
91 if ((!_readOnly) && (_spc != null)) {
92 _spc.Certificates.Remove (certificate);