diff options
author | Carlos Guzmán Álvarez <carlos@mono-cvs.ximian.com> | 2004-05-11 20:41:59 +0400 |
---|---|---|
committer | Carlos Guzmán Álvarez <carlos@mono-cvs.ximian.com> | 2004-05-11 20:41:59 +0400 |
commit | 6f94dbbcefb7ea41512a4071458413ea8ba1969b (patch) | |
tree | a0a93860f5e7bde94e23931af6c9a82139792bb3 /mcs/class/Mono.Security | |
parent | 8ac8a83197399166926c2a1de3c3042e48182474 (diff) |
2004-05-11 Carlos Guzman Alvarez <carlosga@telefonica.net>
* Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
- Added fix for better handling of exceptions when
building the X509 Certificate chain.
svn path=/trunk/mcs/; revision=27117
Diffstat (limited to 'mcs/class/Mono.Security')
3 files changed, 31 insertions, 6 deletions
diff --git a/mcs/class/Mono.Security/ChangeLog b/mcs/class/Mono.Security/ChangeLog index 638bd51a4b6..236840ba508 100644 --- a/mcs/class/Mono.Security/ChangeLog +++ b/mcs/class/Mono.Security/ChangeLog @@ -1,3 +1,10 @@ +2004-05-11 Carlos Guzman Alvarez <carlosga@telefonica.net>
+
+ * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
+ + - Added fix for better handling of exceptions when + building the X509 Certificate chain. + 2004-05-11 Sebastien Pouliot <sebastien@ximian.com> * Mono.Security_test.dll.sources: Added unit tests for Mono.Security. diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/ChangeLog b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/ChangeLog index 313ee3639b0..a31e6eddc41 100755 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/ChangeLog +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/ChangeLog @@ -1,3 +1,10 @@ +2004-05-11 Carlos Guzman Alvarez <carlosga@telefonica.net>
+
+ * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
+ + - Added fix for better handling of exceptions when + building the X509 Certificate chain. + 2004-04-22 Sebastien Pouliot <sebastien@ximian.com> * TlsClientCertificateVerify.cs: Use Buffer.BlockCopy instead of diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs index 10516229876..bbf85e0f931 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs @@ -102,7 +102,7 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client buffer); } } - + this.validateCertificates(certificates); } @@ -223,7 +223,18 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client chain.Remove (leaf); X509Chain verify = new X509Chain (chain); - if (!verify.Build (leaf)) + bool result = false; + + try + { + result = verify.Build (leaf); + } + catch (Exception) + { + result = false; + } + + if (!result) { switch (verify.Status) { @@ -244,25 +255,25 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client case X509ChainStatusFlags.NotTimeValid: // WinError.h CERT_E_EXPIRED 0x800B0101 - description = AlertDescription.CertificateExpired; + description = AlertDescription.CertificateExpired; errors.Add ((int)-2146762495); break; case X509ChainStatusFlags.PartialChain: // WinError.h CERT_E_CHAINING 0x800B010A - description = AlertDescription.UnknownCA; + description = AlertDescription.UnknownCA; errors.Add ((int)-2146762486); break; case X509ChainStatusFlags.UntrustedRoot: // WinError.h CERT_E_UNTRUSTEDROOT 0x800B0109 - description = AlertDescription.UnknownCA; + description = AlertDescription.UnknownCA; errors.Add ((int)-2146762487); break; default: // unknown error - description = AlertDescription.CertificateUnknown; + description = AlertDescription.CertificateUnknown; errors.Add ((int)verify.Status); break; } |