a5bd9f6
From 350332f3a15fa7968366cea163a1c88753af80ac Mon Sep 17 00:00:00 2001
a5bd9f6
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
a5bd9f6
Date: Sun, 13 Jan 2013 17:49:05 +0100
a5bd9f6
Subject: [PATCH 103/364] 	New command list_trusted.
a5bd9f6
a5bd9f6
	* grub-core/commands/verify.c (grub_cmd_list): New function.
a5bd9f6
---
a5bd9f6
 ChangeLog                   |  6 ++++++
a5bd9f6
 grub-core/commands/verify.c | 31 ++++++++++++++++++++++++++-----
a5bd9f6
 2 files changed, 32 insertions(+), 5 deletions(-)
a5bd9f6
a5bd9f6
diff --git a/ChangeLog b/ChangeLog
a5bd9f6
index 784d737..6bb855b 100644
a5bd9f6
--- a/ChangeLog
a5bd9f6
+++ b/ChangeLog
a5bd9f6
@@ -1,3 +1,9 @@
a5bd9f6
+2013-01-13  Vladimir Serbinenko  <phcoder@gmail.com>
a5bd9f6
+
a5bd9f6
+	New command list_trusted.
a5bd9f6
+
a5bd9f6
+	* grub-core/commands/verify.c (grub_cmd_list): New function.
a5bd9f6
+
a5bd9f6
 2013-01-13  Colin Watson  <cjwatson@ubuntu.com>
a5bd9f6
 
a5bd9f6
 	* util/grub-mkimage.c (generate_image): Fix "size of public key"
a5bd9f6
diff --git a/grub-core/commands/verify.c b/grub-core/commands/verify.c
a5bd9f6
index 66a027f..d399d0f 100644
a5bd9f6
--- a/grub-core/commands/verify.c
a5bd9f6
+++ b/grub-core/commands/verify.c
a5bd9f6
@@ -298,10 +298,6 @@ grub_load_public_key (grub_file_t f)
a5bd9f6
       *last = sk;
a5bd9f6
       last = &sk->next;
a5bd9f6
 
a5bd9f6
-      for (i = 0; i < 20; i += 2)
a5bd9f6
-	grub_printf ("%02x%02x ", ((grub_uint8_t *) sk->fingerprint)[i], ((grub_uint8_t *) sk->fingerprint)[i + 1]);
a5bd9f6
-      grub_printf ("\n");
a5bd9f6
-
a5bd9f6
       grub_dprintf ("crypt", "actual pos: %x, expected: %x\n", (int)grub_file_tell (f), (int)pend);
a5bd9f6
 
a5bd9f6
       grub_file_seek (f, pend);
a5bd9f6
@@ -557,6 +553,27 @@ grub_cmd_trust (grub_command_t cmd  __attribute__ ((unused)),
a5bd9f6
 }
a5bd9f6
 
a5bd9f6
 static grub_err_t
a5bd9f6
+grub_cmd_list (grub_command_t cmd  __attribute__ ((unused)),
a5bd9f6
+	       int argc __attribute__ ((unused)),
a5bd9f6
+	       char **args __attribute__ ((unused)))
a5bd9f6
+{
a5bd9f6
+  struct grub_public_key *pk = NULL;
a5bd9f6
+  struct grub_public_subkey *sk = NULL;
a5bd9f6
+
a5bd9f6
+  for (pk = grub_pk_trusted; pk; pk = pk->next)
a5bd9f6
+    for (sk = pk->subkeys; sk; sk = sk->next)
a5bd9f6
+      {
a5bd9f6
+	unsigned i;
a5bd9f6
+	for (i = 0; i < 20; i += 2)
a5bd9f6
+	  grub_printf ("%02x%02x ", ((grub_uint8_t *) sk->fingerprint)[i],
a5bd9f6
+		       ((grub_uint8_t *) sk->fingerprint)[i + 1]);
a5bd9f6
+	grub_printf ("\n");
a5bd9f6
+      }
a5bd9f6
+
a5bd9f6
+  return GRUB_ERR_NONE;
a5bd9f6
+}
a5bd9f6
+
a5bd9f6
+static grub_err_t
a5bd9f6
 grub_cmd_distrust (grub_command_t cmd  __attribute__ ((unused)),
a5bd9f6
 		   int argc, char **args)
a5bd9f6
 {
a5bd9f6
@@ -701,7 +718,7 @@ struct gcry_pk_spec *grub_crypto_pk_dsa;
a5bd9f6
 struct gcry_pk_spec *grub_crypto_pk_ecdsa;
a5bd9f6
 struct gcry_pk_spec *grub_crypto_pk_rsa;
a5bd9f6
 
a5bd9f6
-static grub_command_t cmd, cmd_trust, cmd_distrust;
a5bd9f6
+static grub_command_t cmd, cmd_trust, cmd_distrust, cmd_list;
a5bd9f6
 
a5bd9f6
 GRUB_MOD_INIT(verify)
a5bd9f6
 {
a5bd9f6
@@ -752,6 +769,9 @@ GRUB_MOD_INIT(verify)
a5bd9f6
   cmd_trust = grub_register_command ("trust", grub_cmd_trust,
a5bd9f6
 				     N_("PUBKEY_FILE"),
a5bd9f6
 				     N_("Add PKFILE to trusted keys."));
a5bd9f6
+  cmd_list = grub_register_command ("list_trusted", grub_cmd_list,
a5bd9f6
+				    0,
a5bd9f6
+				    N_("List trusted keys."));
a5bd9f6
   cmd_distrust = grub_register_command ("distrust", grub_cmd_distrust,
a5bd9f6
 					N_("PUBKEY_ID"),
a5bd9f6
 					N_("Remove KEYID from trusted keys."));
a5bd9f6
@@ -762,5 +782,6 @@ GRUB_MOD_FINI(verify)
a5bd9f6
   grub_file_filter_unregister (GRUB_FILE_FILTER_PUBKEY);
a5bd9f6
   grub_unregister_command (cmd);
a5bd9f6
   grub_unregister_command (cmd_trust);
a5bd9f6
+  grub_unregister_command (cmd_list);
a5bd9f6
   grub_unregister_command (cmd_distrust);
a5bd9f6
 }
a5bd9f6
-- 
a5bd9f6
1.8.1.4
a5bd9f6