Author: ivan
Date: Fri Aug 16 16:55:03 2013
New Revision: 1514785

URL: http://svn.apache.org/r1514785
Log:
ra_serf: Improve SSL certificate failure message.

* subversion/libsvn_ra_serf/util.c
  (ssl_server_cert): Provide detailed error message about SSL certificate 
   verification.

Modified:
    subversion/trunk/subversion/libsvn_ra_serf/util.c

Modified: subversion/trunk/subversion/libsvn_ra_serf/util.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/util.c?rev=1514785&r1=1514784&r2=1514785&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/util.c Fri Aug 16 16:55:03 2013
@@ -303,7 +303,32 @@ ssl_server_cert(void *baton, int failure
                          SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO, NULL);
 
   if (!server_creds)
-    return svn_error_create(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED, NULL, NULL);
+    {
+      svn_stringbuf_t *errmsg;
+
+      errmsg = svn_stringbuf_create(
+                 _("Server SSL certificate verification failed: "),
+                 scratch_pool);
+
+      if (svn_failures & SVN_AUTH_SSL_NOTYETVALID)
+        svn_stringbuf_appendcstr(errmsg, _("certificate is not yet valid, "));
+
+      if (svn_failures & SVN_AUTH_SSL_EXPIRED)
+        svn_stringbuf_appendcstr(errmsg, _("certificate has expired, "));
+
+      if (svn_failures & SVN_AUTH_SSL_CNMISMATCH)
+        svn_stringbuf_appendcstr(errmsg,
+          _("certificate issued for a different hostname, "));
+
+      if (svn_failures & SVN_AUTH_SSL_UNKNOWNCA)
+        svn_stringbuf_appendcstr(errmsg, _("issuer is not trusted, "));
+
+      /* Chop last two characters. It could be ', ' or ': '. */
+      svn_stringbuf_chop(errmsg, 2);
+
+      return svn_error_create(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED, NULL,
+                              errmsg->data);
+    }
 
   return SVN_NO_ERROR;
 }


Reply via email to