]> granicus.if.org Git - curl/commitdiff
fixed Curl_SSLConnect() to return CURLcode errors, including the new error
authorDaniel Stenberg <daniel@haxx.se>
Sat, 12 May 2001 09:29:56 +0000 (09:29 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 12 May 2001 09:29:56 +0000 (09:29 +0000)
code for peer certificate errors

lib/ssluse.c
lib/ssluse.h

index 971b77fed0a750483c396c9509991b225f37d39e..e8e3a4cf5204f173ca881f98748f25ddd9ccca93 100644 (file)
@@ -236,9 +236,11 @@ int cert_verify_callback(int ok, X509_STORE_CTX *ctx)
 #endif
 
 /* ====================================================== */
-int
+CURLcode
 Curl_SSLConnect(struct connectdata *conn)
 {
+  CURLcode retcode = CURLE_OK;
+
 #ifdef USE_SSLEAY
   struct UrlData *data = conn->data;
   int err;
@@ -273,13 +275,13 @@ Curl_SSLConnect(struct connectdata *conn)
 
   if(!conn->ssl.ctx) {
     failf(data, "SSL: couldn't create a context!");
-    return 1;
+    return CURLE_OUT_OF_MEMORY;
   }
     
   if(data->cert) {
     if (!cert_stuff(conn, data->cert, data->cert)) {
       failf(data, "couldn't use certificate!\n");
-      return 2;
+      return CURLE_SSL_CONNECT_ERROR;
     }
   }
 
@@ -292,7 +294,7 @@ Curl_SSLConnect(struct connectdata *conn)
                                        data->ssl.CAfile,
                                        data->ssl.CApath)) {
       failf(data,"error setting cerficate verify locations\n");
-      return 2;
+      return CURLE_SSL_CONNECT_ERROR;
     }
   }
   else
@@ -312,7 +314,7 @@ Curl_SSLConnect(struct connectdata *conn)
   if (-1 == err) {
     err = ERR_get_error(); 
     failf(data, "SSL: %s", ERR_error_string(err, NULL));
-    return 10;
+    return CURLE_SSL_CONNECT_ERROR;
   }
 
   /* Informational message */
@@ -328,7 +330,7 @@ Curl_SSLConnect(struct connectdata *conn)
   conn->ssl.server_cert = SSL_get_peer_certificate (conn->ssl.handle);
   if(!conn->ssl.server_cert) {
     failf(data, "SSL: couldn't get peer certificate!");
-    return 3;
+    return CURLE_SSL_PEER_CERTIFICATE;
   }
   infof (data, "Server certificate:\n");
   
@@ -336,7 +338,7 @@ Curl_SSLConnect(struct connectdata *conn)
                            NULL, 0);
   if(!str) {
     failf(data, "SSL: couldn't get X509-subject!");
-    return 4;
+    return CURLE_SSL_CONNECT_ERROR;
   }
   infof(data, "\t subject: %s\n", str);
   CRYPTO_free(str);
@@ -345,7 +347,7 @@ Curl_SSLConnect(struct connectdata *conn)
                            NULL, 0);
   if(!str) {
     failf(data, "SSL: couldn't get X509-issuer name!");
-    return 5;
+    return CURLE_SSL_CONNECT_ERROR;
   }
   infof(data, "\t issuer: %s\n", str);
   CRYPTO_free(str);
@@ -355,7 +357,9 @@ Curl_SSLConnect(struct connectdata *conn)
 
   if(data->ssl.verifypeer) {
     data->ssl.certverifyresult=SSL_get_verify_result(conn->ssl.handle);
-    infof(data, "Verify result: %d\n", data->ssl.certverifyresult);
+    failf(data, "SSL certificate verify result: %d\n",
+          data->ssl.certverifyresult);
+    retcode = CURLE_SSL_PEER_CERTIFICATE;
   }
   else
     data->ssl.certverifyresult=0;
@@ -365,5 +369,5 @@ Curl_SSLConnect(struct connectdata *conn)
   /* this is for "-ansi -Wall -pedantic" to stop complaining!   (rabe) */
   (void) conn;
 #endif
-  return 0;
+  return retcode;
 }
index bb36f0e9696150c136bacaacf087cb6e63b2e590..d211c1cb4834089f7e8d26612152f772aab06ddc 100644 (file)
@@ -23,5 +23,5 @@
  * $Id$
  *****************************************************************************/
 #include "urldata.h"
-int Curl_SSLConnect(struct connectdata *conn);
+CURLcode Curl_SSLConnect(struct connectdata *conn);
 #endif