]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
print randomart for private keys as well.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 28 Dec 2011 18:40:25 +0000 (20:40 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 28 Dec 2011 18:40:34 +0000 (20:40 +0200)
lib/extras/randomart.c
lib/extras/randomart.h
lib/gnutls_ui.c
lib/openpgp/output.c
lib/x509/output.c
src/certtool.c

index cf8d72edf756de7f1a0b7264813f1b2fecd7f6e7..bb267fcaf8f7cb7f38d3b6f6349c296d2cf66e51 100644 (file)
@@ -62,8 +62,8 @@
 #define        FLDSIZE_Y       (FLDBASE + 1)
 #define        FLDSIZE_X       (FLDBASE * 2 + 1)
 char *
-key_fingerprint_randomart (uint8_t * dgst_raw, u_int dgst_raw_len,
-                           const char *key_type, unsigned int key_size)
+_gnutls_key_fingerprint_randomart (uint8_t * dgst_raw, u_int dgst_raw_len,
+                                   const char *key_type, unsigned int key_size)
 {
   /*
    * Chars to be used after each other every time the worm
index 77d912b492973662b33ec96b77ee84fc41e8ec79..51875ac7ab6930211858912152f7fba00b3c8c4c 100644 (file)
@@ -1,3 +1,3 @@
 char *
-key_fingerprint_randomart (uint8_t * dgst_raw, u_int dgst_raw_len,
-                           const char *key_type, unsigned int key_size);
+_gnutls_key_fingerprint_randomart (uint8_t * dgst_raw, u_int dgst_raw_len,
+                                   const char *key_type, unsigned int key_size);
index 6205a913810edfc4f0c3610906e26395105fdcd1..87b9f9924249046158cb2332e33f7a5c215f8a17 100644 (file)
@@ -60,7 +60,7 @@ int gnutls_random_art (gnutls_random_art_t type,
   if (type != GNUTLS_RANDOM_ART_OPENSSH)
     return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
 
-  art->data = key_fingerprint_randomart(fpr, fpr_size, key_type, key_size);
+  art->data = _gnutls_key_fingerprint_randomart(fpr, fpr_size, key_type, key_size);
   if (art->data == NULL)
     return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
   
index defcf95f04fa622e2c867b75fa9804fa85fbcd74..af1dd3b5c92e436a2f826c337c65d016529b44ac 100644 (file)
@@ -123,11 +123,11 @@ print_key_fingerprint (gnutls_buffer_st * str, gnutls_openpgp_crt_t cert)
   if (name == NULL)
     return;
 
-  p = key_fingerprint_randomart(fpr, fpr_size, name, bits);
+  p = _gnutls_key_fingerprint_randomart(fpr, fpr_size, name, bits);
   if (p == NULL)
     return;
   
-  adds (str, _("\trandomart:\n"));
+  adds (str, _("\tpublic key's randomart:\n"));
   adds (str, p);
   adds (str, "\n");
 
index 204c7bd18f5451cad2af6e2902b0a9e9e4a6d5e1..1f97b9be3302e5a6bf976ccf6ccc42035bd035f4 100644 (file)
@@ -1375,11 +1375,11 @@ print_fingerprint (gnutls_buffer_st * str, gnutls_x509_crt_t cert,
   if (name == NULL)
     return;
 
-  p = key_fingerprint_randomart(buffer, size, name, bits);
+  p = _gnutls_key_fingerprint_randomart(buffer, size, name, bits);
   if (p == NULL)
     return;
   
-  adds (str, _("\trandomart:\n"));
+  adds (str, _("\tpublic key's randomart:\n"));
   adds (str, p);
   adds (str, "\n\n");
 
index 110fdeb32491bbd9739d53c65bb83811916ec79b..89131b87e406ccf87a4705c26d3f469f77c2f94b 100644 (file)
@@ -1618,7 +1618,7 @@ crq_info (void)
 
 static void privkey_info_int (gnutls_x509_privkey_t key)
 {
-int ret;
+int ret, key_type, bits = 0;
 size_t size;
 const char *cprint;
 
@@ -1628,14 +1628,16 @@ const char *cprint;
   ret = gnutls_x509_privkey_get_pk_algorithm (key);
   fprintf (outfile, "\tPublic Key Algorithm: ");
 
-  cprint = gnutls_pk_algorithm_get_name (ret);
+  key_type = ret;
+
+  cprint = gnutls_pk_algorithm_get_name (key_type);
   fprintf (outfile, "%s\n", cprint ? cprint : "Unknown");
   fprintf (outfile, "\tKey Security Level: %s\n\n",
            gnutls_sec_param_get_name (gnutls_x509_privkey_sec_param (key)));
 
   /* Print the raw public and private keys
    */
-  if (ret == GNUTLS_PK_RSA)
+  if (key_type == GNUTLS_PK_RSA)
     {
       gnutls_datum_t m, e, d, p, q, u, exp1, exp2;
 
@@ -1648,6 +1650,8 @@ const char *cprint;
       else
         {
           print_rsa_pkey (&m, &e, &d, &p, &q, &u, &exp1, &exp2);
+          bits = m.size * 8;
+
           gnutls_free (m.data);
           gnutls_free (e.data);
           gnutls_free (d.data);
@@ -1658,7 +1662,7 @@ const char *cprint;
           gnutls_free (exp2.data);
         }
     }
-  else if (ret == GNUTLS_PK_DSA)
+  else if (key_type == GNUTLS_PK_DSA)
     {
       gnutls_datum_t p, q, g, y, x;
 
@@ -1669,6 +1673,8 @@ const char *cprint;
       else
         {
           print_dsa_pkey (&x, &y, &p, &q, &g);
+          bits = y.size * 8;
+
           gnutls_free (x.data);
           gnutls_free (y.data);
           gnutls_free (p.data);
@@ -1676,7 +1682,7 @@ const char *cprint;
           gnutls_free (g.data);
         }
     }
-  else if (ret == GNUTLS_PK_ECC)
+  else if (key_type == GNUTLS_PK_ECC)
     {
       gnutls_datum_t y, x, k;
       gnutls_ecc_curve_t curve;
@@ -1688,6 +1694,8 @@ const char *cprint;
       else
         {
           print_ecc_pkey (curve, &k, &x, &y);
+          bits = gnutls_ecc_curve_get_size(curve);
+
           gnutls_free (x.data);
           gnutls_free (y.data);
           gnutls_free (k.data);
@@ -1704,7 +1712,16 @@ const char *cprint;
     }
   else
     {
+      gnutls_datum_t art;
+
       fprintf (outfile, "Public Key ID: %s\n", raw_to_string (buffer, size));
+      
+      ret = gnutls_random_art(GNUTLS_RANDOM_ART_OPENSSH, cprint, bits, buffer, size, &art);
+      if (ret >= 0)
+        {
+          fprintf (outfile, "public key's randomart:\n%s\n", art.data);
+          gnutls_free(art.data);
+        }
     }
   fprintf (outfile, "\n");