From 027a836a7f1a42b808d3b20d15a426c26883a992 Mon Sep 17 00:00:00 2001 From: Colin Leroy Date: Sat, 16 Nov 2002 14:47:31 +0000 Subject: [PATCH 1/1] check for missing parts in the certificates --- ChangeLog.claws | 5 +++ configure.in | 2 +- src/ssl_certificate.c | 72 +++++++++++++++++++++++++++---------------- 3 files changed, 52 insertions(+), 27 deletions(-) diff --git a/ChangeLog.claws b/ChangeLog.claws index 4af941cdf..89a22c820 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,8 @@ +2002-11-15 [colin] 0.8.5claws157 + + * src/ssl_certificate.c + Check for missing parts in the certificates + 2002-11-15 [colin] 0.8.5claws156 * src/folderview.c diff --git a/configure.in b/configure.in index 118c15b01..8b5a353f0 100644 --- a/configure.in +++ b/configure.in @@ -11,7 +11,7 @@ MINOR_VERSION=8 MICRO_VERSION=5 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws156 +EXTRA_VERSION=claws157 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/ssl_certificate.c b/src/ssl_certificate.c index f2d7ff5e4..c467f9773 100644 --- a/src/ssl_certificate.c +++ b/src/ssl_certificate.c @@ -121,33 +121,53 @@ char* ssl_certificate_to_string(SSLCertificate *cert) unsigned char md[EVP_MAX_MD_SIZE]; /* issuer */ - X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), - NID_commonName, buf, 100); - issuer_commonname = g_strdup(buf); - X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), - NID_localityName, buf, 100); - issuer_location = g_strdup(buf); - X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), - NID_countryName, buf, 100); - issuer_location = g_strconcat(issuer_location,", ",buf, NULL); - X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), - NID_organizationName, buf, 100); - issuer_organization = g_strdup(buf); + if (X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), + NID_commonName, buf, 100) >= 0) + issuer_commonname = g_strdup(buf); + else + issuer_commonname = g_strdup(_("")); + if (X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), + NID_localityName, buf, 100) >= 0) { + issuer_location = g_strdup(buf); + if (X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), + NID_countryName, buf, 100)) + issuer_location = g_strconcat(issuer_location,", ",buf, NULL); + } else if (X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), + NID_countryName, buf, 100) >= 0) + issuer_location = g_strdup(buf); + else + issuer_location = g_strdup(_("")); - /* issuer */ - X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), - NID_commonName, buf, 100); - subject_commonname = g_strdup(buf); - X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), - NID_localityName, buf, 100); - subject_location = g_strdup(buf); - X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), - NID_countryName, buf, 100); - subject_location = g_strconcat(subject_location,", ",buf, NULL); - X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), - NID_organizationName, buf, 100); - subject_organization = g_strdup(buf); - + if (X509_NAME_get_text_by_NID(X509_get_issuer_name(cert->x509_cert), + NID_organizationName, buf, 100) >= 0) + issuer_organization = g_strdup(buf); + else + issuer_organization = g_strdup(_("")); + + /* subject */ + if (X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), + NID_commonName, buf, 100) >= 0) + subject_commonname = g_strdup(buf); + else + subject_commonname = g_strdup(_("")); + if (X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), + NID_localityName, buf, 100) >= 0) { + subject_location = g_strdup(buf); + if (X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), + NID_countryName, buf, 100) >= 0) + subject_location = g_strconcat(subject_location,", ",buf, NULL); + } else if (X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), + NID_countryName, buf, 100) >= 0) + subject_location = g_strdup(buf); + else + subject_location = g_strdup(_("")); + + if (X509_NAME_get_text_by_NID(X509_get_subject_name(cert->x509_cert), + NID_organizationName, buf, 100) >= 0) + subject_organization = g_strdup(buf); + else + subject_organization = g_strdup(_("")); + /* fingerprint */ X509_digest(cert->x509_cert, EVP_md5(), md, &n); fingerprint = readable_fingerprint(md, (int)n); -- 2.25.1