Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@ximian.com>2005-04-10 22:31:17 +0400
committerSebastien Pouliot <sebastien@ximian.com>2005-04-10 22:31:17 +0400
commite70f174d3c34d955aa414dbf5724d85c339bc866 (patch)
tree2b22c849782e239802db63e560a38bae890986b8
parentd5f96204e100421f705623aa0f8675cc29997148 (diff)
2005-04-10 Sebastien Pouliot <sebastien@ximian.com>
* HttpsClientStream.cs: Added a TrustFailure property so a WebException can now report TrustFailure correctly. Fix bug 74286. svn path=/branches/mono-1-0/mcs/; revision=42764
-rw-r--r--mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ChangeLog5
-rw-r--r--mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs39
2 files changed, 29 insertions, 15 deletions
diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ChangeLog b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ChangeLog
index 57729c31cf3..791341b3afc 100644
--- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ChangeLog
+++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-10 Sebastien Pouliot <sebastien@ximian.com>
+
+ * HttpsClientStream.cs: Added a TrustFailure property so a
+ WebException can now report TrustFailure correctly. Fix bug 74286.
+
2005-04-07 Sebastien Pouliot <sebastien@ximian.com>
* SslCipherSuite.cs: Fix calculation (sequence number) for the server
diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
index 89562c9b416..1f3bf88a41c 100644
--- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
+++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
@@ -5,9 +5,7 @@
// Author:
// Sebastien Pouliot <sebastien@ximian.com>
//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
+// Copyright (C) 2004-2005 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
@@ -41,7 +39,7 @@ namespace Mono.Security.Protocol.Tls {
internal class HttpsClientStream : SslClientStream {
private HttpWebRequest _request;
-
+ private int _status;
public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
HttpWebRequest request, byte [] buffer)
@@ -50,6 +48,7 @@ namespace Mono.Security.Protocol.Tls {
// this constructor permit access to the WebRequest to call
// ICertificatePolicy.CheckValidationResult
_request = request;
+ _status = 0;
if (buffer != null)
InputBuffer.Write (buffer, 0, buffer.Length);
#if !NET_1_0
@@ -58,19 +57,29 @@ namespace Mono.Security.Protocol.Tls {
#endif
}
+ public bool TrustFailure {
+ get {
+ switch (_status) {
+ case -2146762486: // CERT_E_CHAINING 0x800B010A
+ case -2146762487: // CERT_E_UNTRUSTEDROOT 0x800B0109
+ return true;
+ default:
+ return false;
+ }
+ }
+ }
+
internal override bool RaiseServerCertificateValidation (X509Certificate certificate, int[] certificateErrors)
{
- bool failed = (certificateErrors.Length > 0);
- if (ServicePointManager.CertificatePolicy != null) {
- ServicePoint sp = _request.ServicePoint;
+ bool failed = (certificateErrors.Length > 0);
+ // only one problem can be reported by this interface
+ _status = ((failed) ? certificateErrors [0] : 0);
- // only one problem can be reported by this interface
- int problem = ((failed) ? certificateErrors [0] : 0);
-
- return ServicePointManager.CertificatePolicy.CheckValidationResult (sp, certificate, _request, problem);
- }
- return failed;
- }
+ if (ServicePointManager.CertificatePolicy != null) {
+ ServicePoint sp = _request.ServicePoint;
+ return ServicePointManager.CertificatePolicy.CheckValidationResult (sp, certificate, _request, _status);
+ }
+ return failed;
+ }
}
}
-