summaryrefslogtreecommitdiffstats
path: root/Utilities/cmcurl/lib/x509asn1.c
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/cmcurl/lib/x509asn1.c')
-rw-r--r--Utilities/cmcurl/lib/x509asn1.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/Utilities/cmcurl/lib/x509asn1.c b/Utilities/cmcurl/lib/x509asn1.c
index a3dfd64..e17bcd9 100644
--- a/Utilities/cmcurl/lib/x509asn1.c
+++ b/Utilities/cmcurl/lib/x509asn1.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
@@ -23,7 +23,7 @@
#include "curl_setup.h"
#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
- defined(USE_CYASSL)
+ defined(USE_CYASSL) || defined(USE_SCHANNEL)
#include <curl/curl.h>
#include "urldata.h"
@@ -34,9 +34,10 @@
#include "inet_pton.h"
#include "curl_base64.h"
#include "x509asn1.h"
+
+/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
-/* The last #include file should be: */
#include "memdebug.h"
@@ -783,7 +784,7 @@ static const char * dumpAlgo(curl_asn1Element * param,
return OID2str(oid.beg, oid.end, TRUE);
}
-static void do_pubkey_field(struct SessionHandle * data, int certnum,
+static void do_pubkey_field(struct Curl_easy * data, int certnum,
const char * label, curl_asn1Element * elem)
{
const char * output;
@@ -800,7 +801,7 @@ static void do_pubkey_field(struct SessionHandle * data, int certnum,
}
}
-static void do_pubkey(struct SessionHandle * data, int certnum,
+static void do_pubkey(struct Curl_easy * data, int certnum,
const char * algo, curl_asn1Element * param,
curl_asn1Element * pubkey)
{
@@ -870,7 +871,7 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
const char * end)
{
curl_X509certificate cert;
- struct SessionHandle * data = conn->data;
+ struct Curl_easy * data = conn->data;
curl_asn1Element param;
const char * ccp;
char * cp1;
@@ -1024,7 +1025,7 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
return CURLE_OK;
}
-#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_CYASSL */
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_CYASSL or USE_SCHANNEL */
#if defined(USE_GSKIT)
@@ -1055,13 +1056,12 @@ static const char * checkOID(const char * beg, const char * end,
CURLcode Curl_verifyhost(struct connectdata * conn,
const char * beg, const char * end)
{
- struct SessionHandle * data = conn->data;
+ struct Curl_easy * data = conn->data;
curl_X509certificate cert;
curl_asn1Element dn;
curl_asn1Element elem;
curl_asn1Element ext;
curl_asn1Element name;
- int i;
const char * p;
const char * q;
char * dnsname;
@@ -1110,16 +1110,13 @@ CURLcode Curl_verifyhost(struct connectdata * conn,
q = Curl_getASN1Element(&name, q, elem.end);
switch (name.tag) {
case 2: /* DNS name. */
- i = 0;
len = utf8asn1str(&dnsname, CURL_ASN1_IA5_STRING,
name.beg, name.end);
- if(len > 0)
- if(strlen(dnsname) == (size_t) len)
- i = Curl_cert_hostcheck((const char *) dnsname, conn->host.name);
+ if(len > 0 && (size_t)len == strlen(dnsname))
+ matched = Curl_cert_hostcheck(dnsname, conn->host.name);
+ else
+ matched = 0;
free(dnsname);
- if(!i)
- return CURLE_PEER_FAILED_VERIFICATION;
- matched = i;
break;
case 7: /* IP address. */