diff options
author | Sebastien Pouliot <sebastien@ximian.com> | 2004-09-07 16:16:28 +0400 |
---|---|---|
committer | Sebastien Pouliot <sebastien@ximian.com> | 2004-09-07 16:16:28 +0400 |
commit | f7ffe593d26918be5bbb95012c6680ae6da4c642 (patch) | |
tree | 5134e8c041e3016e6c9cfdd1bba7c6282828b094 | |
parent | 5023609058b03cbbf06a5b615d52f59990f3276c (diff) |
2004-09-07 Sebastien Pouliot <sebastien@ximian.com>
* X509Chain.cs: Merge bug fixes from HEAD.
* X509Store.cs: Merge enhancements from HEAD.
svn path=/branches/mono-1-0/mcs/; revision=33506
-rw-r--r-- | mcs/class/Mono.Security/Mono.Security.X509/ChangeLog | 5 | ||||
-rwxr-xr-x | mcs/class/Mono.Security/Mono.Security.X509/X509Chain.cs | 9 | ||||
-rwxr-xr-x | mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs | 31 |
3 files changed, 31 insertions, 14 deletions
diff --git a/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog b/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog index 38b3d393aa5..fc6c1b3b64b 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog +++ b/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog @@ -1,3 +1,8 @@ +2004-09-07 Sebastien Pouliot <sebastien@ximian.com> + + * X509Chain.cs: Merge bug fixes from HEAD. + * X509Store.cs: Merge enhancements from HEAD. + 2004-07-15 Sebastien Pouliot <sebastien@ximian.com> * X501Name.cs: Support for E (email) in FromString. diff --git a/mcs/class/Mono.Security/Mono.Security.X509/X509Chain.cs b/mcs/class/Mono.Security/Mono.Security.X509/X509Chain.cs index 254ff1b70fa..f8035e6c661 100755 --- a/mcs/class/Mono.Security/Mono.Security.X509/X509Chain.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509/X509Chain.cs @@ -9,9 +9,7 @@ // Sebastien Pouliot <sebastien@ximian.com> // // (C) 2003 Motus Technologies Inc. (http://www.motus.com) -// (C) 2004 Novell (http://www.novell.com) -// - +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -134,7 +132,7 @@ namespace Mono.Security.X509 { tmp = FindCertificateParent (x); if (x != null) { _chain.Add (x); - tmp = x; // last valid + x = tmp; // last valid } } // find a trusted root @@ -191,7 +189,8 @@ namespace Mono.Security.X509 { _status = X509ChainStatusFlags.NoError; roots = null; // this force a reload certs.Clear (); - _chain.Clear (); + if (_chain != null) + _chain.Clear (); } // private stuff diff --git a/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs b/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs index 81db71b5c75..aa27a4a7dfd 100755 --- a/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs @@ -4,9 +4,7 @@ // Author: // Sebastien Pouliot <sebastien@ximian.com> // -// (C) 2004 Novell (http://www.novell.com) -// - +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -106,9 +104,7 @@ namespace Mono.Security.X509 { public void Import (X509Certificate certificate) { - if (!Directory.Exists (_storePath)) { - Directory.CreateDirectory (_storePath); - } + CheckStore (_storePath, true); string filename = Path.Combine (_storePath, GetUniqueName (certificate)); if (!File.Exists (filename)) { @@ -183,14 +179,28 @@ namespace Mono.Security.X509 { return crl; } - private X509CertificateCollection BuildCertificatesCollection (string storeName) + private bool CheckStore (string path, bool throwException) { - string path = Path.Combine (_storePath, storeName); - if (!Directory.Exists (path)) { + try { + if (Directory.Exists (path)) + return true; Directory.CreateDirectory (path); + return Directory.Exists (path); + } + catch { + if (throwException) + throw; + return false; } + } + private X509CertificateCollection BuildCertificatesCollection (string storeName) + { X509CertificateCollection coll = new X509CertificateCollection (); + string path = Path.Combine (_storePath, storeName); + if (!CheckStore (path, false)) + return coll; // empty collection + string[] files = Directory.GetFiles (path, "*.cer"); if ((files != null) && (files.Length > 0)) { foreach (string file in files) { @@ -213,6 +223,9 @@ namespace Mono.Security.X509 { { ArrayList list = new ArrayList (); string path = Path.Combine (_storePath, storeName); + if (!CheckStore (path, false)) + return list; // empty list + string[] files = Directory.GetFiles (path, "*.crl"); if ((files != null) && (files.Length > 0)) { foreach (string file in files) { |