diff options
-rw-r--r-- | src/command/commands.c | 10 | ||||
-rw-r--r-- | src/pgp/gpg.c | 22 | ||||
-rw-r--r-- | src/pgp/gpg.h | 9 | ||||
-rw-r--r-- | tests/pgp/stub_gpg.c | 4 |
4 files changed, 40 insertions, 5 deletions
diff --git a/src/command/commands.c b/src/command/commands.c index 5d1ddf12..bb8c0381 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -4073,14 +4073,18 @@ cmd_pgp(gchar **args, struct cmd_help_t help) if (g_strcmp0(args[0], "keys") == 0) { GSList *keys = p_gpg_list_keys(); if (keys) { + cons_show("PGP keys:"); while (keys) { - cons_debug("Key: %s", keys->data); + ProfPGPKey *key = keys->data; + cons_show(" %s", key->name); + cons_show(" ID : %s", key->id); + cons_show(" Fingerprint : %s", key->fp); keys = g_slist_next(keys); } } else { - cons_debug("No keys found"); + cons_show("No keys found"); } - g_slist_free_full(keys, (GDestroyNotify)free); + g_slist_free_full(keys, (GDestroyNotify)p_gpg_free_key); } else if (g_strcmp0(args[0], "libver") == 0) { const char *libver = p_gpg_libver(); if (libver) { diff --git a/src/pgp/gpg.c b/src/pgp/gpg.c index 4b1b57c9..67ea8794 100644 --- a/src/pgp/gpg.c +++ b/src/pgp/gpg.c @@ -34,9 +34,12 @@ #include <locale.h> #include <string.h> +#include <stdlib.h> +#include <glib.h> #include <gpgme.h> +#include "pgp/gpg.h" #include "log.h" static const char *libversion; @@ -70,7 +73,14 @@ p_gpg_list_keys(void) if (error) { break; } - result = g_slist_append(result, strdup(key->uids->uid)); + + ProfPGPKey *p_pgpkey = malloc(sizeof(ProfPGPKey)); + p_pgpkey->id = strdup(key->subkeys->keyid); + p_pgpkey->name = strdup(key->uids->uid); + p_pgpkey->fp = strdup(key->subkeys->fpr); + + result = g_slist_append(result, p_pgpkey); + gpgme_key_release(key); } } else { @@ -88,3 +98,13 @@ p_gpg_libver(void) return libversion; } +void +p_gpg_free_key(ProfPGPKey *key) +{ + if (key) { + free(key->id); + free(key->name); + free(key->fp); + free(key); + } +} \ No newline at end of file diff --git a/src/pgp/gpg.h b/src/pgp/gpg.h index 9702e31a..f5271596 100644 --- a/src/pgp/gpg.h +++ b/src/pgp/gpg.h @@ -35,8 +35,15 @@ #ifndef GPG_H #define GPG_H +typedef struct pgp_key_t { + char *id; + char *name; + char *fp; +} ProfPGPKey; + void p_gpg_init(void); GSList* p_gpg_list_keys(void); -char* p_gpg_libver(void); +const char* p_gpg_libver(void); +void p_gpg_free_key(ProfPGPKey *key); #endif diff --git a/tests/pgp/stub_gpg.c b/tests/pgp/stub_gpg.c index f0c30b55..29a1d828 100644 --- a/tests/pgp/stub_gpg.c +++ b/tests/pgp/stub_gpg.c @@ -1,5 +1,7 @@ #include <glib.h> +#include "pgp/gpg.h" + void p_gpg_init(void) {} GSList* p_gpg_list_keys(void) @@ -11,3 +13,5 @@ const char* p_gpg_libver(void) { return NULL; } +void p_gpg_free_key(ProfPGPKey *key) {} + |