|
@@ -918,6 +918,20 @@ static const char *dumpAlgo(struct Curl_asn1Element *param,
|
|
|
return OID2str(oid.beg, oid.end, TRUE);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * This is a convenience function for push_certinfo_len that takes a zero
|
|
|
+ * terminated value.
|
|
|
+ */
|
|
|
+static CURLcode ssl_push_certinfo(struct Curl_easy *data,
|
|
|
+ int certnum,
|
|
|
+ const char *label,
|
|
|
+ const char *value)
|
|
|
+{
|
|
|
+ size_t valuelen = strlen(value);
|
|
|
+
|
|
|
+ return Curl_ssl_push_certinfo_len(data, certnum, label, value, valuelen);
|
|
|
+}
|
|
|
+
|
|
|
/* return 0 on success, 1 on error */
|
|
|
static int do_pubkey_field(struct Curl_easy *data, int certnum,
|
|
|
const char *label, struct Curl_asn1Element *elem)
|
|
@@ -930,7 +944,7 @@ static int do_pubkey_field(struct Curl_easy *data, int certnum,
|
|
|
output = ASN1tostr(elem, 0);
|
|
|
if(output) {
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, label, output);
|
|
|
+ result = ssl_push_certinfo(data, certnum, label, output);
|
|
|
if(!certnum && !result)
|
|
|
infof(data, " %s: %s", label, output);
|
|
|
free((char *) output);
|
|
@@ -960,7 +974,7 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
|
|
|
if(data->set.ssl.certinfo) {
|
|
|
char q[sizeof(len) * 8 / 3 + 1];
|
|
|
(void)msnprintf(q, sizeof(q), "%lu", len);
|
|
|
- if(Curl_ssl_push_certinfo(data, certnum, "ECC Public Key", q))
|
|
|
+ if(ssl_push_certinfo(data, certnum, "ECC Public Key", q))
|
|
|
return 1;
|
|
|
}
|
|
|
return do_pubkey_field(data, certnum, "ecPublicKey", pubkey);
|
|
@@ -994,7 +1008,7 @@ static int do_pubkey(struct Curl_easy *data, int certnum,
|
|
|
if(data->set.ssl.certinfo) {
|
|
|
char r[sizeof(len) * 8 / 3 + 1];
|
|
|
msnprintf(r, sizeof(r), "%lu", len);
|
|
|
- if(Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", r))
|
|
|
+ if(ssl_push_certinfo(data, certnum, "RSA Public Key", r))
|
|
|
return 1;
|
|
|
}
|
|
|
/* Generate coefficients. */
|
|
@@ -1092,7 +1106,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo) {
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Subject", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Subject", ccp);
|
|
|
if(result)
|
|
|
return result;
|
|
|
}
|
|
@@ -1105,7 +1119,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo) {
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Issuer", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Issuer", ccp);
|
|
|
}
|
|
|
if(!certnum)
|
|
|
infof(data, " Issuer: %s", ccp);
|
|
@@ -1121,7 +1135,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
ccp = curl_maprintf("%x", version);
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Version", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Version", ccp);
|
|
|
free((char *) ccp);
|
|
|
if(result)
|
|
|
return result;
|
|
@@ -1134,7 +1148,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Serial Number", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Serial Number", ccp);
|
|
|
if(!certnum)
|
|
|
infof(data, " Serial Number: %s", ccp);
|
|
|
free((char *) ccp);
|
|
@@ -1147,7 +1161,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
|
|
|
if(!certnum)
|
|
|
infof(data, " Signature Algorithm: %s", ccp);
|
|
|
free((char *) ccp);
|
|
@@ -1159,7 +1173,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Start Date", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Start Date", ccp);
|
|
|
if(!certnum)
|
|
|
infof(data, " Start Date: %s", ccp);
|
|
|
free((char *) ccp);
|
|
@@ -1171,7 +1185,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Expire Date", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Expire Date", ccp);
|
|
|
if(!certnum)
|
|
|
infof(data, " Expire Date: %s", ccp);
|
|
|
free((char *) ccp);
|
|
@@ -1184,7 +1198,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm",
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Public Key Algorithm",
|
|
|
ccp);
|
|
|
if(!result) {
|
|
|
int ret;
|
|
@@ -1203,7 +1217,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
if(!ccp)
|
|
|
return CURLE_OUT_OF_MEMORY;
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Signature", ccp);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Signature", ccp);
|
|
|
if(!certnum)
|
|
|
infof(data, " Signature: %s", ccp);
|
|
|
free((char *) ccp);
|
|
@@ -1238,7 +1252,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|
|
cp2[i] = '\0';
|
|
|
free(cp1);
|
|
|
if(data->set.ssl.certinfo)
|
|
|
- result = Curl_ssl_push_certinfo(data, certnum, "Cert", cp2);
|
|
|
+ result = ssl_push_certinfo(data, certnum, "Cert", cp2);
|
|
|
if(!certnum)
|
|
|
infof(data, "%s", cp2);
|
|
|
free(cp2);
|