diff options
Diffstat (limited to 'src/common.c')
-rw-r--r-- | src/common.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/common.c b/src/common.c index 068683fcd5..e826f29c0a 100644 --- a/src/common.c +++ b/src/common.c @@ -24,6 +24,7 @@ void print_x509_info(GNUTLS_STATE state) int serial_size = sizeof(serial); char printable[120]; char *print; + int bits[5], algo; cert_list = gnutls_certificate_get_peers(state, &cert_list_size); @@ -64,6 +65,23 @@ void print_x509_info(GNUTLS_STATE state) printf(" # Certificate version: #%d\n", gnutls_x509_extract_certificate_version(&cert_list[0])); + algo = gnutls_x509_extract_certificate_pk_algorithm( &cert_list[0], bits); + printf(" # Certificate public key: "); + + if (algo==GNUTLS_PK_RSA) { + printf("RSA\n"); + printf(" # Modulus: %d bits\n", bits[0]); + printf(" # Exponent: %d bits\n", bits[1]); + } else if (algo==GNUTLS_PK_DSA) { + printf("DSA\n"); + printf(" # p: %d bits\n", bits[0]); + printf(" # q: %d bits\n", bits[1]); + printf(" # g: %d bits\n", bits[2]); + printf(" # Exponent: %d bits\n", bits[3]); + } else { + printf("UNKNOWN\n"); + } + gnutls_x509_extract_certificate_dn(&cert_list[0], &dn); PRINT_DN(dn); |