openssl: don't output certinfo data

This commit is contained in:
Alessandro Ghedini
2015-09-14 12:26:12 +02:00
committed by Daniel Stenberg
parent c00cec9864
commit c184a5c6bc

View File

@@ -2213,10 +2213,9 @@ static int asn1_object_dump(ASN1_OBJECT *a, char *buf, size_t len)
return 0; return 0;
} }
#define print_certinfo(_label, _num) \ #define push_certinfo(_label, _num) \
do { \ do { \
long info_len = BIO_get_mem_data(mem, &ptr); \ long info_len = BIO_get_mem_data(mem, &ptr); \
infof(data, " %s: %.*s\n", _label, info_len, ptr); \
Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \ Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
BIO_reset(mem); \ BIO_reset(mem); \
} WHILE_FALSE } WHILE_FALSE
@@ -2234,8 +2233,7 @@ static void pubkey_show(struct SessionHandle *data,
snprintf(namebuf, sizeof(namebuf), "%s(%s)", type, name); snprintf(namebuf, sizeof(namebuf), "%s(%s)", type, name);
BN_print(mem, bn); BN_print(mem, bn);
push_certinfo(namebuf, num);
print_certinfo(namebuf, num);
} }
#define print_pubkey_BN(_type, _name, _num) \ #define print_pubkey_BN(_type, _name, _num) \
@@ -2272,17 +2270,11 @@ static int X509V3_ext(struct SessionHandle *data,
asn1_object_dump(obj, namebuf, sizeof(namebuf)); asn1_object_dump(obj, namebuf, sizeof(namebuf));
infof(data, "%s: %s\n", namebuf,
X509_EXTENSION_get_critical(ext)?"(critical)":"");
if(!X509V3_EXT_print(bio_out, ext, 0, 0)) if(!X509V3_EXT_print(bio_out, ext, 0, 0))
ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext)); ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
BIO_get_mem_ptr(bio_out, &biomem); BIO_get_mem_ptr(bio_out, &biomem);
/* biomem->length bytes at biomem->data, this little loop here is only
done for the infof() call, we send the "raw" data to the certinfo
function */
for(j = 0; j < (size_t)biomem->length; j++) { for(j = 0; j < (size_t)biomem->length; j++) {
const char *sep=""; const char *sep="";
if(biomem->data[j] == '\n') { if(biomem->data[j] == '\n') {
@@ -2295,7 +2287,6 @@ static int X509V3_ext(struct SessionHandle *data,
ptr+=snprintf(ptr, sizeof(buf)-(ptr-buf), "%s%c", sep, ptr+=snprintf(ptr, sizeof(buf)-(ptr-buf), "%s%c", sep,
biomem->data[j]); biomem->data[j]);
} }
infof(data, " %s\n", buf);
Curl_ssl_push_certinfo(data, certnum, namebuf, buf); Curl_ssl_push_certinfo(data, certnum, namebuf, buf);
@@ -2330,9 +2321,7 @@ static CURLcode get_cert_chain(struct connectdata *conn,
mem = BIO_new(BIO_s_mem()); mem = BIO_new(BIO_s_mem());
infof(data, "--- Certificate chain\n");
for(i = 0; i < numcerts; i++) { for(i = 0; i < numcerts; i++) {
long value, len;
ASN1_INTEGER *num; ASN1_INTEGER *num;
X509 *x = sk_X509_value(sk, i); X509 *x = sk_X509_value(sk, i);
@@ -2343,41 +2332,34 @@ static CURLcode get_cert_chain(struct connectdata *conn,
char *ptr; char *ptr;
X509_NAME_print_ex(mem, X509_get_subject_name(x), 0, XN_FLAG_ONELINE); X509_NAME_print_ex(mem, X509_get_subject_name(x), 0, XN_FLAG_ONELINE);
len = BIO_get_mem_data(mem, &ptr); push_certinfo("Subject", i);
infof(data, "%2d Subject: %.*s\n", len, i, ptr);
Curl_ssl_push_certinfo_len(data, i, "Subject", ptr, len);
BIO_reset(mem);
X509_NAME_print_ex(mem, X509_get_issuer_name(x), 0, XN_FLAG_ONELINE); X509_NAME_print_ex(mem, X509_get_issuer_name(x), 0, XN_FLAG_ONELINE);
print_certinfo("Issuer", i); push_certinfo("Issuer", i);
value = X509_get_version(x); BIO_printf(mem, "%lx", X509_get_version(x));
BIO_printf(mem, "%lx", value); push_certinfo("Version", i);
len = BIO_get_mem_data(mem, &ptr);
infof(data, " Version: %lu (0x%lx)\n", value+1, value);
Curl_ssl_push_certinfo_len(data, i, "Version", ptr, len); /* hex */
BIO_reset(mem);
num = X509_get_serialNumber(x); num = X509_get_serialNumber(x);
if(num->type == V_ASN1_NEG_INTEGER) if(num->type == V_ASN1_NEG_INTEGER)
BIO_puts(mem, "-"); BIO_puts(mem, "-");
for(j = 0; j < num->length; j++) for(j = 0; j < num->length; j++)
BIO_printf(mem, "%02x", num->data[j]); BIO_printf(mem, "%02x", num->data[j]);
print_certinfo("Serial Number", i); push_certinfo("Serial Number", i);
cinf = x->cert_info; cinf = x->cert_info;
i2a_ASN1_OBJECT(mem, cinf->signature->algorithm); i2a_ASN1_OBJECT(mem, cinf->signature->algorithm);
print_certinfo("Signature Algorithm", i); push_certinfo("Signature Algorithm", i);
ASN1_TIME_print(mem, X509_get_notBefore(x)); ASN1_TIME_print(mem, X509_get_notBefore(x));
print_certinfo("Start date", i); push_certinfo("Start date", i);
ASN1_TIME_print(mem, X509_get_notAfter(x)); ASN1_TIME_print(mem, X509_get_notAfter(x));
print_certinfo("Expire date", i); push_certinfo("Expire date", i);
i2a_ASN1_OBJECT(mem, cinf->key->algor->algorithm); i2a_ASN1_OBJECT(mem, cinf->key->algor->algorithm);
print_certinfo("Public Key Algorithm", i); push_certinfo("Public Key Algorithm", i);
pubkey = X509_get_pubkey(x); pubkey = X509_get_pubkey(x);
if(!pubkey) if(!pubkey)
@@ -2385,12 +2367,8 @@ static CURLcode get_cert_chain(struct connectdata *conn,
else { else {
switch(pubkey->type) { switch(pubkey->type) {
case EVP_PKEY_RSA: case EVP_PKEY_RSA:
infof(data, " RSA Public Key (%d bits)\n",
BN_num_bits(pubkey->pkey.rsa->n));
BIO_printf(mem, "%d", BN_num_bits(pubkey->pkey.rsa->n)); BIO_printf(mem, "%d", BN_num_bits(pubkey->pkey.rsa->n));
len = BIO_get_mem_data(mem, &ptr); push_certinfo("RSA Public Key", i);
Curl_ssl_push_certinfo_len(data, i, "RSA Public Key", ptr, len);
BIO_reset(mem);
print_pubkey_BN(rsa, n, i); print_pubkey_BN(rsa, n, i);
print_pubkey_BN(rsa, e, i); print_pubkey_BN(rsa, e, i);
@@ -2427,15 +2405,10 @@ static CURLcode get_cert_chain(struct connectdata *conn,
for(j = 0; j < x->signature->length; j++) for(j = 0; j < x->signature->length; j++)
BIO_printf(mem, "%02x:", x->signature->data[j]); BIO_printf(mem, "%02x:", x->signature->data[j]);
len = BIO_get_mem_data(mem, &ptr); push_certinfo("Signature", i);
infof(data, " Signature: %.*s", len, ptr);
Curl_ssl_push_certinfo_len(data, i, "Signature", ptr, len);
BIO_reset(mem);
PEM_write_bio_X509(mem, x); PEM_write_bio_X509(mem, x);
len = BIO_get_mem_data(mem, &ptr); push_certinfo("Cert", i);
Curl_ssl_push_certinfo_len(data, i, "Cert", ptr, len);
BIO_reset(mem);
} }
BIO_free(mem); BIO_free(mem);