[git] GPGME - branch, master, updated. gpgme-1.11.1-27-ged20936

by Andre Heinecke cvs at cvs.gnupg.org
Fri May 25 12:23:28 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".

The branch, master has been updated
       via  ed20936ce4d5bb066828346b9a06d2dfa8d6afb2 (commit)
       via  aa59f4970ac106ccd17fa9fadfc264d11e4cd347 (commit)
      from  546e3295eaade073c34364c4ea6ab007532824d8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ed20936ce4d5bb066828346b9a06d2dfa8d6afb2
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Fri May 25 12:22:37 2018 +0200

    json: Add additional commands to help
    
    * src/gpgme-json.c (hlp_help): Add additional commands.

diff --git a/src/gpgme-json.c b/src/gpgme-json.c
index 99f7d42..aa8832f 100644
--- a/src/gpgme-json.c
+++ b/src/gpgme-json.c
@@ -2004,7 +2004,10 @@ static const char hlp_help[] =
   "help mode.  Supported values for \"op\" are:\n\n"
   "  encrypt     Encrypt data.\n"
   "  decrypt     Decrypt data.\n"
+  "  keylist     List keys.\n"
   "  sign        Sign data.\n"
+  "  verify      Verify data.\n"
+  "  version     Get engine information.\n"
   "  getmore     Retrieve remaining data.\n"
   "  help        Help overview.";
 static gpg_error_t

commit aa59f4970ac106ccd17fa9fadfc264d11e4cd347
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Fri May 25 12:17:46 2018 +0200

    json: Refactor signature and ei code
    
    * src/gpgme-json.c (add_summary_to_object): Changed to:
    sigsum_to_json.
    (add_signature_to_object): Changed to signature_to_json.
    (add_signatures_to_object): Changed to verify_result_to_json.
    (add_ei_to_object): Changed to engine_info_to_json.
    (op_decrypt, op_verify, op_version): Use new functions.
    
    --
    This pattern of gpgme_type to json object conversion
    is much cleaner then the error returning "add to object"
    functions.

diff --git a/src/gpgme-json.c b/src/gpgme-json.c
index 635294e..99f7d42 100644
--- a/src/gpgme-json.c
+++ b/src/gpgme-json.c
@@ -646,46 +646,47 @@ data_from_base64_string (gpgme_data_t *r_data, cjson_t json)
 }
 
 
-/* Helper for summary formatting */
-static void
-add_summary_to_object (cjson_t result, gpgme_sigsum_t summary)
+/* Create sigsum json array */
+static cjson_t
+sigsum_to_json (gpgme_sigsum_t summary)
 {
-  cjson_t response = xjson_CreateArray ();
+  cjson_t result = xjson_CreateArray ();
+
   if ( (summary & GPGME_SIGSUM_VALID      ))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("valid"));
   if ( (summary & GPGME_SIGSUM_GREEN      ))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("green"));
   if ( (summary & GPGME_SIGSUM_RED        ))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("red"));
   if ( (summary & GPGME_SIGSUM_KEY_REVOKED))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("revoked"));
   if ( (summary & GPGME_SIGSUM_KEY_EXPIRED))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("key-expired"));
   if ( (summary & GPGME_SIGSUM_SIG_EXPIRED))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("sig-expired"));
   if ( (summary & GPGME_SIGSUM_KEY_MISSING))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("key-missing"));
   if ( (summary & GPGME_SIGSUM_CRL_MISSING))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("crl-missing"));
   if ( (summary & GPGME_SIGSUM_CRL_TOO_OLD))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("crl-too-old"));
   if ( (summary & GPGME_SIGSUM_BAD_POLICY ))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("bad-policy"));
   if ( (summary & GPGME_SIGSUM_SYS_ERROR  ))
-    cJSON_AddItemToArray (response,
+    cJSON_AddItemToArray (result,
         cJSON_CreateString ("sys-error"));
 
-  cJSON_AddItemToObject (result, "summary", response);
+  return result;
 }
 
 
@@ -930,145 +931,62 @@ key_to_json (gpgme_key_t key)
   return result;
 }
 
-/* Add a single signature to a json object */
-static gpg_error_t
-add_signature_to_object (cjson_t result, gpgme_signature_t sig)
+/* Create a signature json object */
+static cjson_t
+signature_to_json (gpgme_signature_t sig)
 {
-  gpg_error_t err = 0;
-
-  if (!cJSON_AddStringToObject (result, "status",
-                                gpgme_strerror (sig->status)))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
-
-  if (!cJSON_AddNumberToObject (result, "code", sig->status))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
-
-  add_summary_to_object (result, sig->summary);
+  cjson_t result = xjson_CreateObject ();
 
-  if (!cJSON_AddStringToObject (result, "fingerprint", sig->fpr))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
+  xjson_AddStringToObject0 (result, "status",
+                            gpgme_strerror (sig->status));
 
-  if (!cJSON_AddNumberToObject (result, "created", sig->timestamp))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
+  xjson_AddStringToObject0 (result, "validity",
+                            validity_to_string (sig->validity));
+  xjson_AddStringToObject0 (result, "fingerprint", sig->fpr);
 
-  if (!cJSON_AddNumberToObject (result, "expired", sig->exp_timestamp))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
+  xjson_AddItemToObject (result, "summary", sigsum_to_json (sig->summary));
 
-  if (!cJSON_AddStringToObject (result, "validity",
-                                validity_to_string (sig->validity)))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
+  xjson_AddNumberToObject (result, "created", sig->timestamp);
+  xjson_AddNumberToObject (result, "expired", sig->exp_timestamp);
+  xjson_AddNumberToObject (result, "code", sig->status);
 
-leave:
-  return err;
+  return result;
 }
 
-
-/* Add multiple signatures as an array to a result */
-static gpg_error_t
-add_signatures_to_object (cjson_t result, gpgme_signature_t signatures)
+/* Create a JSON object from a gpgme_verify result */
+static cjson_t
+verify_result_to_json (gpgme_verify_result_t verify_result)
 {
-  cjson_t response = xjson_CreateArray ();
-  gpg_error_t err = 0;
-  gpgme_signature_t sig;
+  cjson_t response = xjson_CreateObject ();
 
-  for (sig = signatures; sig; sig = sig->next)
+  if (verify_result->signatures)
     {
-      cjson_t sig_obj = xjson_CreateObject ();
-      err = add_signature_to_object (sig_obj, sig);
-      if (err)
-        {
-          cJSON_Delete (sig_obj);
-          sig_obj = NULL;
-          goto leave;
-        }
-
-      cJSON_AddItemToArray (response, sig_obj);
-    }
+      cjson_t array = xjson_CreateArray ();
+      gpgme_signature_t sig;
 
-  if (!cJSON_AddItemToObject (result, "signatures", response))
-    {
-      err = gpg_error_from_syserror ();
-      cJSON_Delete (response);
-      response = NULL;
-      return err;
+      for (sig = verify_result->signatures; sig; sig = sig->next)
+        cJSON_AddItemToArray (array, signature_to_json (sig));
+      xjson_AddItemToObject (response, "signatures", array);
     }
-  response = NULL;
 
-leave:
-  if (err && response)
-    {
-      cJSON_Delete (response);
-      response = NULL;
-    }
-  return err;
+  return response;
 }
 
-
-/* Add an array of signature informations under the name "name". */
-static gpg_error_t
-add_signatures_object (cjson_t result, const char *name,
-                       gpgme_verify_result_t verify_result)
+/* Create a JSON object from an engine_info */
+static cjson_t
+engine_info_to_json (gpgme_engine_info_t info)
 {
-  cjson_t response = xjson_CreateObject ();
-  gpg_error_t err = 0;
-
-  err = add_signatures_to_object (response, verify_result->signatures);
-
-  if (err)
-    {
-      goto leave;
-    }
-
-  if (!cJSON_AddItemToObject (result, name, response))
-    {
-      err = gpg_error_from_syserror ();
-      goto leave;
-    }
- leave:
-  if (err)
-    {
-      cJSON_Delete (response);
-      response = NULL;
-    }
-  return err;
-}
+  cjson_t result = xjson_CreateObject ();
 
-static gpg_error_t
-add_ei_to_object (cjson_t result, gpgme_engine_info_t info)
-{
-  if (!cJSON_AddStringToObject (result, "protocol",
-                                protocol_to_string (info->protocol)))
-    return gpg_error_from_syserror ();
-  if (!cJSON_AddStringToObject (result, "fname", info->file_name))
-    return gpg_error_from_syserror ();
-  if (!cJSON_AddStringToObject (result, "version", info->version))
-    return gpg_error_from_syserror ();
-  if (!cJSON_AddStringToObject (result, "req_version", info->req_version))
-    return gpg_error_from_syserror ();
-  if (!cJSON_AddStringToObject (result, "homedir",
-                                info->home_dir ?
-                                info->home_dir :
-                                "default"))
-    return gpg_error_from_syserror ();
-  return 0;
+  xjson_AddStringToObject0 (result, "protocol",
+                            protocol_to_string (info->protocol));
+  xjson_AddStringToObject0 (result, "fname", info->file_name);
+  xjson_AddStringToObject0 (result, "version", info->version);
+  xjson_AddStringToObject0 (result, "req_version", info->req_version);
+  xjson_AddStringToObject0 (result, "homedir", info->home_dir ?
+                                                info->home_dir :
+                                                "default");
+  return result;
 }
 
 /* Create a gpgme_data from json string data named "name"
@@ -1371,6 +1289,17 @@ static const char hlp_decrypt[] =
   "base64: Boolean indicating whether data is base64 encoded.\n"
   "mime:   A Boolean indicating whether the data is a MIME object.\n"
   "info:   An optional object with extra information.\n"
+  "info:   An object with optional signature information.\n"
+  "  Array values:\n"
+  "   signatures\n"
+  "    String values:\n"
+  "     status: The status of the signature.\n"
+  "     fingerprint: The fingerprint of the signing key.\n"
+  "     validity: The validity as string.\n"
+  "    Number values:\n"
+  "     code: The status as a number.\n"
+  "    Array values:\n"
+  "     summary: A string array of the sig summary.\n"
   "more:   Optional boolean indicating that \"getmore\" is required.";
 static gpg_error_t
 op_decrypt (cjson_t request, cjson_t result)
@@ -1422,14 +1351,8 @@ op_decrypt (cjson_t request, cjson_t result)
   verify_result = gpgme_op_verify_result (ctx);
   if (verify_result && verify_result->signatures)
     {
-      err = add_signatures_object (result, "info", verify_result);
-    }
-
-  if (err)
-    {
-      gpg_error_object (result, err, "Info output failed: %s",
-                        gpg_strerror (err));
-      goto leave;
+      xjson_AddItemToObject (result, "info",
+                             verify_result_to_json (verify_result));
     }
 
   err = make_data_object (result, output, chunksize, "plaintext", -1);
@@ -1611,6 +1534,16 @@ static const char hlp_verify[] =
   "data:   The verified data.  This may be base64 encoded.\n"
   "base64: Boolean indicating whether data is base64 encoded.\n"
   "info:   An object with signature information.\n"
+  "  Array values:\n"
+  "   signatures\n"
+  "    String values:\n"
+  "     status: The status of the signature.\n"
+  "     fingerprint: The fingerprint of the signing key.\n"
+  "     validity: The validity as string.\n"
+  "    Number values:\n"
+  "     code: The status as a number.\n"
+  "    Array values:\n"
+  "     summary: A string array of the sig summary.\n"
   "more:   Optional boolean indicating that \"getmore\" is required.";
 static gpg_error_t
 op_verify (cjson_t request, cjson_t result)
@@ -1669,14 +1602,8 @@ op_verify (cjson_t request, cjson_t result)
   verify_result = gpgme_op_verify_result (ctx);
   if (verify_result && verify_result->signatures)
     {
-      err = add_signatures_object (result, "info", verify_result);
-    }
-
-  if (err)
-    {
-      gpg_error_object (result, err, "Info output failed: %s",
-                    gpg_strerror (err));
-      goto leave;
+      xjson_AddItemToObject (result, "info",
+                             verify_result_to_json (verify_result));
     }
 
   err = make_data_object (result, output, chunksize, "plaintext", -1);
@@ -1728,15 +1655,7 @@ op_version (cjson_t request, cjson_t result)
     }
 
   for (; ei; ei = ei->next)
-    {
-      cjson_t obj = xjson_CreateObject ();
-      if ((err = add_ei_to_object (obj, ei)))
-        {
-          cJSON_Delete (infos);
-          return err;
-        }
-      cJSON_AddItemToArray (infos, obj);
-    }
+    cJSON_AddItemToArray (infos, engine_info_to_json (ei));
 
   if (!cJSON_AddItemToObject (result, "info", infos))
     {

-----------------------------------------------------------------------

Summary of changes:
 src/gpgme-json.c | 246 +++++++++++++++++++------------------------------------
 1 file changed, 84 insertions(+), 162 deletions(-)


hooks/post-receive
-- 
GnuPG Made Easy
http://git.gnupg.org




More information about the Gnupg-commits mailing list