Skip to content

Commit

Permalink
GnuTLS: Print name of primary certificate
Browse files Browse the repository at this point in the history
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
  • Loading branch information
David Woodhouse authored and David Woodhouse committed Jun 11, 2012
1 parent e66e32b commit 70d2ed5
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions gnutls.c
Expand Up @@ -413,6 +413,18 @@ static int count_x509_certificates(gnutls_datum_t *datum)
return count;
}

static int get_cert_name(gnutls_x509_crt_t cert, char *name, size_t namelen)
{
if (gnutls_x509_crt_get_dn_by_oid(cert, GNUTLS_OID_X520_COMMON_NAME,
0, 0, name, &namelen) &&
gnutls_x509_crt_get_dn(cert, name, &namelen)) {
name[namelen-1] = 0;
snprintf(name, namelen-1, "<unknown>");
return -EINVAL;
}
return 0;
}

static int load_certificate(struct openconnect_info *vpninfo)
{
gnutls_datum_t fdata;
Expand All @@ -433,6 +445,7 @@ static int load_certificate(struct openconnect_info *vpninfo)
int cert_is_p11 = 0, key_is_p11 = 0;
unsigned char key_id[20];
size_t key_id_size = sizeof(key_id);
char name[80];

fdata.data = NULL;

Expand Down Expand Up @@ -758,6 +771,9 @@ static int load_certificate(struct openconnect_info *vpninfo)
got_key:
/* Now we have both cert(s) and key, and we should be ready to go. */
check_certificate_expiry(vpninfo, cert);
get_cert_name(cert, name, sizeof(name));
vpn_progress(vpninfo, PRG_INFO, _("Using client certificate '%s'\n"),
name);

if (crl) {
err = gnutls_certificate_set_x509_crl(vpninfo->https_cred, &crl, 1);
Expand Down Expand Up @@ -847,16 +863,7 @@ static int load_certificate(struct openconnect_info *vpninfo)

}
for (i = 1; i < nr_supporting_certs; i++) {
char name[80];
size_t namelen;

sprintf(name, "<unknown>");
namelen = sizeof(name);
if (gnutls_x509_crt_get_dn_by_oid(supporting_certs[i],
GNUTLS_OID_X520_COMMON_NAME,
0, 0, name, &namelen) &&
gnutls_x509_crt_get_dn(supporting_certs[i], name, &namelen))
sprintf(name, "<unknown>");
get_cert_name(supporting_certs[i], name, sizeof(name));

vpn_progress(vpninfo, PRG_DEBUG,
_("Adding supporting CA '%s'\n"), name);
Expand Down

0 comments on commit 70d2ed5

Please sign in to comment.