aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2024-05-15 08:39:26 +0000
committerIngo Klöcker <[email protected]>2024-05-21 14:38:59 +0000
commitf2575b6313aeb23d867682856f7842704786349e (patch)
tree86ea028b3f2380cc8fd2c1a0cfe4d7fe4037b970 /src
parentcore: Add information about revocation keys to keys (diff)
downloadgpgme-f2575b6313aeb23d867682856f7842704786349e.tar.gz
gpgme-f2575b6313aeb23d867682856f7842704786349e.zip
json: Add information about revocation keys to key list result
* src/gpgme-json.c (revocation_key_to_json): New. (key_to_json): Add list of revocation keys. * tests/json/Makefile.am (pubring-stamp): Import new pub key. * tests/json/key-with-revokers.asc: New. * tests/json/t-json.c (tests): Add "t-keylist-revokers". * tests/json/t-keylist-revokers.in.json, tests/json/t-keylist-revokers.in.json: New. -- GnuPG-bug-id: 7118
Diffstat (limited to 'src')
-rw-r--r--src/gpgme-json.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/gpgme-json.c b/src/gpgme-json.c
index 3d18eee2..c88973a8 100644
--- a/src/gpgme-json.c
+++ b/src/gpgme-json.c
@@ -1024,6 +1024,24 @@ subkey_to_json (gpgme_subkey_t sub)
return result;
}
+/* Create a revocation key json object */
+static cjson_t
+revocation_key_to_json (gpgme_revocation_key_t revkey)
+{
+ cjson_t result = xjson_CreateObject ();
+
+ xjson_AddBoolToObject (result, "sensitive", revkey->sensitive);
+
+ xjson_AddStringToObject0 (result, "fingerprint", revkey->fpr);
+ xjson_AddStringToObject0 (result, "pubkey_algo_name",
+ gpgme_pubkey_algo_name (revkey->pubkey_algo));
+
+ xjson_AddNumberToObject (result, "pubkey_algo", revkey->pubkey_algo);
+ xjson_AddNumberToObject (result, "key_class", revkey->key_class);
+
+ return result;
+}
+
/* Create a key json object */
static cjson_t
key_to_json (gpgme_key_t key)
@@ -1075,6 +1093,16 @@ key_to_json (gpgme_key_t key)
xjson_AddItemToObject (result, "userids", uid_array);
}
+ /* Revocation keys */
+ if (key->revocation_keys)
+ {
+ gpgme_revocation_key_t revkey;
+ cjson_t array = xjson_CreateArray ();
+ for (revkey = key->revocation_keys; revkey; revkey = revkey->next)
+ cJSON_AddItemToArray (array, revocation_key_to_json (revkey));
+ xjson_AddItemToObject (result, "revocation_keys", array);
+ }
+
return result;
}