2 // X509Stores.cs: Handles X.509 certificates/CRLs stores group.
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2004 Novell (http://www.novell.com)
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:
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
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.
34 using System
.Collections
;
37 using Mono
.Security
.X509
.Extensions
;
39 namespace Mono
.Security
.X509
{
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
)
62 public X509Store Personal
{
64 if (_personal
== null) {
65 string path
= Path
.Combine (_storePath
, Names
.Personal
);
66 _personal
= new X509Store (path
, false);
72 public X509Store OtherPeople
{
75 string path
= Path
.Combine (_storePath
, Names
.OtherPeople
);
76 _other
= new X509Store (path
, false);
82 public X509Store IntermediateCA
{
84 if (_intermediate
== null) {
85 string path
= Path
.Combine (_storePath
, Names
.IntermediateCA
);
86 _intermediate
= new X509Store (path
, true);
92 public X509Store TrustedRoot
{
94 if (_trusted
== null) {
95 string path
= Path
.Combine (_storePath
, Names
.TrustedRoot
);
96 _trusted
= new X509Store (path
, true);
102 public X509Store Untrusted
{
104 if (_untrusted
== null) {
105 string path
= Path
.Combine (_storePath
, Names
.Untrusted
);
106 _untrusted
= new X509Store (path
, false);
116 // this will force a reload of all stores
117 if (_personal
!= null)
123 if (_intermediate
!= null)
124 _intermediate
.Clear ();
125 _intermediate
= null;
126 if (_trusted
!= null)
129 if (_untrusted
!= null)
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";