summaryrefslogtreecommitdiff
path: root/src/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c18
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);