From 27dc5d7d389956befd9f2de7a956073899c264de Mon Sep 17 00:00:00 2001 From: Dan Nicholson Date: Mon, 26 Aug 2019 11:15:25 -0600 Subject: [PATCH] lib/repo: Include WKD update URLs in GPG key listing If the key UID contains a valid email address, include the GPG WKD update URLs in GVariant returned by ostree_repo_remote_get_gpg_keys(). --- src/libostree/ostree-repo.c | 14 ++++++++++++++ src/libostree/ostree-repo.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index b20aa617..5bd76e91 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -2439,6 +2439,16 @@ ostree_repo_remote_get_gpg_keys (OstreeRepo *self, for (gpgme_user_id_t uid = key->uids; uid != NULL; uid = uid->next) { + /* Get WKD update URLs if address set */ + g_autofree char *advanced_url = NULL; + g_autofree char *direct_url = NULL; + if (uid->address != NULL) + { + if (!ot_gpg_wkd_urls (uid->address, &advanced_url, &direct_url, + error)) + return FALSE; + } + g_auto(GVariantDict) uid_dict = OT_VARIANT_BUILDER_INITIALIZER; g_variant_dict_init (&uid_dict, NULL); g_variant_dict_insert_value (&uid_dict, "uid", @@ -2453,6 +2463,10 @@ ostree_repo_remote_get_gpg_keys (OstreeRepo *self, g_variant_new_boolean (uid->revoked)); g_variant_dict_insert_value (&uid_dict, "invalid", g_variant_new_boolean (uid->invalid)); + g_variant_dict_insert_value (&uid_dict, "advanced_url", + g_variant_new ("ms", advanced_url)); + g_variant_dict_insert_value (&uid_dict, "direct_url", + g_variant_new ("ms", direct_url)); g_variant_builder_add (&uids_builder, "(@a{sv})", g_variant_dict_end (&uid_dict)); } diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index 7694d40c..ecf92772 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -1449,6 +1449,8 @@ gboolean ostree_repo_remote_get_gpg_verify_summary (OstreeRepo *self, * - key: `email`, value: `s`, user ID email component * - key: `revoked`, value: `b`, whether user ID is revoked * - key: `invalid`, value: `b`, whether user ID is invalid + * - key: `advanced_url`, value: `ms`, advanced WKD update URL + * - key: `direct_url`, value: `ms`, direct WKD update URL * - a{sv} - Additional metadata dictionary. There are currently no * additional metadata keys defined. *