(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / corlib / Mono.Security.X509 / X509Stores.cs
blob7c0137b5db992fe6a28e6f1970a55f25d94809ea
1 //
2 // X509Stores.cs: Handles X.509 certificates/CRLs stores group.
3 //
4 // Author:
5 // Sebastien Pouliot <sebastien@ximian.com>
6 //
7 // (C) 2004 Novell (http://www.novell.com)
8 //
11 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
20 //
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 //
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System;
34 using System.Collections;
35 using System.IO;
37 using Mono.Security.X509.Extensions;
39 namespace Mono.Security.X509 {
41 #if INSIDE_CORLIB
42 internal
43 #else
44 public
45 #endif
46 class X509Stores {
48 private string _storePath;
49 private X509Store _personal;
50 private X509Store _other;
51 private X509Store _intermediate;
52 private X509Store _trusted;
53 private X509Store _untrusted;
55 internal X509Stores (string path)
57 _storePath = path;
60 // properties
62 public X509Store Personal {
63 get {
64 if (_personal == null) {
65 string path = Path.Combine (_storePath, Names.Personal);
66 _personal = new X509Store (path, false);
68 return _personal;
72 public X509Store OtherPeople {
73 get {
74 if (_other == null) {
75 string path = Path.Combine (_storePath, Names.OtherPeople);
76 _other = new X509Store (path, false);
78 return _other;
82 public X509Store IntermediateCA {
83 get {
84 if (_intermediate == null) {
85 string path = Path.Combine (_storePath, Names.IntermediateCA);
86 _intermediate = new X509Store (path, true);
88 return _intermediate;
92 public X509Store TrustedRoot {
93 get {
94 if (_trusted == null) {
95 string path = Path.Combine (_storePath, Names.TrustedRoot);
96 _trusted = new X509Store (path, true);
98 return _trusted;
102 public X509Store Untrusted {
103 get {
104 if (_untrusted == null) {
105 string path = Path.Combine (_storePath, Names.Untrusted);
106 _untrusted = new X509Store (path, false);
108 return _untrusted;
112 // methods
114 public void Clear ()
116 // this will force a reload of all stores
117 if (_personal != null)
118 _personal.Clear ();
119 _personal = null;
120 if (_other != null)
121 _other.Clear ();
122 _other = null;
123 if (_intermediate != null)
124 _intermediate.Clear ();
125 _intermediate = null;
126 if (_trusted != null)
127 _trusted.Clear ();
128 _trusted = null;
129 if (_untrusted != null)
130 _untrusted.Clear ();
131 _untrusted = null;
134 // names
136 public class Names {
138 // do not translate
139 public const string Personal = "My";
140 public const string OtherPeople = "AddressBook";
141 public const string IntermediateCA = "CA";
142 public const string TrustedRoot = "Trust";
143 public const string Untrusted = "Disallowed";
145 public Names () {}