[git] GPGME - branch, master, updated. gpgme-1.4.1-11-gd4371ed

by Werner Koch cvs at cvs.gnupg.org
Wed May 22 16:56:13 CEST 2013


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  d4371ed30da2e8b3d9f440613af299a952bde2b1 (commit)
       via  567e6481d767af60390d649897b897a8b0e7e9a5 (commit)
       via  0c1de7abd57b677998792e6cd5df5ddfb6e451b7 (commit)
       via  18254f88f82da7542a986dca60917fb48d5bccd3 (commit)
      from  e99356306d7bda61802530ebeb07d9ba73c4dec0 (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 d4371ed30da2e8b3d9f440613af299a952bde2b1
Author: Werner Koch <wk at gnupg.org>
Date:   Wed May 22 15:35:12 2013 +0100

    Support --no-encrypt-to also with gpgme_op_encrypt_sign.
    
    * src/engine-gpg.c (gpg_encrypt_sign): Support the
    GPGME_ENCRYPT_NO_ENCRYPT_TO flag.

diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 65012fa..72d3ad1 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1716,6 +1716,9 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[],
       if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
 	err = add_arg (gpg, "--always-trust");
 
+      if (!err && (flags & GPGME_ENCRYPT_NO_ENCRYPT_TO))
+	err = add_arg (gpg, "--no-encrypt-to");
+
       if (!err)
 	err = append_args_from_recipients (gpg, recp);
     }

commit 567e6481d767af60390d649897b897a8b0e7e9a5
Author: Werner Koch <wk at gnupg.org>
Date:   Wed May 22 15:30:12 2013 +0100

    Allow symmetric encryption with gpgme_op_encrypt_sign.
    
    * src/encrypt-sign.c (encrypt_sym_status_handler): New.
    (encrypt_sign_start): Handle recp == NULL case.
    * src/engine-gpg.c (gpg_encrypt_sign): Implement symmetric encryption.
    * tests/gpg/t-encrypt-sign.c (main): Add a test case for this.
    --
    
    Co-authored-by: Kyle L. Huff <g10bts at curetheitch.com>
    GnuPG-bug-id: 1440

diff --git a/NEWS b/NEWS
index dc67bf7..3a583d3 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
 Noteworthy changes in version 1.4.2 (unreleased)
 ------------------------------------------------
 
+ * Allow symmetric encryption with gpgme_op_encrypt_sign.
+
  * Interface changes relative to the 1.4.1 release:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  gpgme_off_t                    NEW.
diff --git a/src/encrypt-sign.c b/src/encrypt-sign.c
index cb0ea61..4f484e9 100644
--- a/src/encrypt-sign.c
+++ b/src/encrypt-sign.c
@@ -47,19 +47,38 @@ encrypt_sign_status_handler (void *priv, gpgme_status_code_t code, char *args)
 
 
 static gpgme_error_t
+encrypt_sym_status_handler (void *priv, gpgme_status_code_t code, char *args)
+{
+  gpgme_error_t err;
+
+  err = _gpgme_progress_status_handler (priv, code, args);
+  if (!err)
+    err = _gpgme_sign_status_handler (priv, code, args);
+  if (!err)
+    err = _gpgme_passphrase_status_handler (priv, code, args);
+  return err;
+}
+
+
+static gpgme_error_t
 encrypt_sign_start (gpgme_ctx_t ctx, int synchronous, gpgme_key_t recp[],
 		    gpgme_encrypt_flags_t flags,
 		    gpgme_data_t plain, gpgme_data_t cipher)
 {
   gpgme_error_t err;
+  int symmetric;
 
   err = _gpgme_op_reset (ctx, synchronous);
   if (err)
     return err;
 
+  symmetric = !recp;
+
   if (!plain)
     return gpg_error (GPG_ERR_NO_DATA);
-  if (!cipher || !recp)
+  if (!cipher)
+    return gpg_error (GPG_ERR_INV_VALUE);
+  if (recp && !*recp)
     return gpg_error (GPG_ERR_INV_VALUE);
 
   err = _gpgme_op_encrypt_init_result (ctx);
@@ -79,7 +98,10 @@ encrypt_sign_start (gpgme_ctx_t ctx, int synchronous, gpgme_key_t recp[],
     }
 
   _gpgme_engine_set_status_handler (ctx->engine,
-				    encrypt_sign_status_handler, ctx);
+                                    symmetric
+                                    ? encrypt_sym_status_handler
+                                    : encrypt_sign_status_handler,
+				    ctx);
 
   return _gpgme_engine_op_encrypt_sign (ctx->engine, recp, flags, plain,
 					cipher, ctx->use_armor,
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 3f02503..65012fa 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -1700,23 +1700,29 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[],
 {
   engine_gpg_t gpg = engine;
   gpgme_error_t err;
+  int symmetric = !recp;
+
+  err = add_arg (gpg, symmetric ? "--symmetric" : "--encrypt");
 
-  err = add_arg (gpg, "--encrypt");
   if (!err)
     err = add_arg (gpg, "--sign");
   if (!err && use_armor)
     err = add_arg (gpg, "--armor");
 
-  /* If we know that all recipients are valid (full or ultimate trust)
-     we can suppress further checks.  */
-  if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
-    err = add_arg (gpg, "--always-trust");
+  if (!symmetric)
+    {
+      /* If we know that all recipients are valid (full or ultimate trust)
+	 we can suppress further checks.  */
+      if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
+	err = add_arg (gpg, "--always-trust");
 
-  if (!err)
-    err = append_args_from_recipients (gpg, recp);
+      if (!err)
+	err = append_args_from_recipients (gpg, recp);
+    }
 
   if (!err)
     err = append_args_from_signers (gpg, ctx);
+
   if (!err)
     err = append_args_from_sig_notations (gpg, ctx);
 
diff --git a/tests/gpg/t-encrypt-sign.c b/tests/gpg/t-encrypt-sign.c
index 9d00340..1e1262f 100644
--- a/tests/gpg/t-encrypt-sign.c
+++ b/tests/gpg/t-encrypt-sign.c
@@ -3,17 +3,17 @@
    Copyright (C) 2001, 2002, 2003, 2004 g10 Code GmbH
 
    This file is part of GPGME.
- 
+
    GPGME is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as
    published by the Free Software Foundation; either version 2.1 of
    the License, or (at your option) any later version.
-   
+
    GPGME is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.
-   
+
    You should have received a copy of the GNU Lesser General Public
    License along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
@@ -83,7 +83,7 @@ check_result (gpgme_sign_result_t result, gpgme_sig_mode_t type)
 }
 
 
-int 
+int
 main (int argc, char **argv)
 {
   gpgme_ctx_t ctx;
@@ -95,7 +95,7 @@ main (int argc, char **argv)
   char *agent_info;
 
   init_gpgme (GPGME_PROTOCOL_OpenPGP);
-    
+
   err = gpgme_new (&ctx);
   fail_if_err (err);
   gpgme_set_textmode (ctx, 1);
@@ -135,6 +135,24 @@ main (int argc, char **argv)
   gpgme_key_unref (key[1]);
   gpgme_data_release (in);
   gpgme_data_release (out);
+
+  /* Now a second time using symmetric encryption.  */
+  err = gpgme_data_new_from_mem (&in, "Hallo Leute\n", 12, 0);
+  fail_if_err (err);
+
+  err = gpgme_data_new (&out);
+  fail_if_err (err);
+
+  err = gpgme_op_encrypt_sign (ctx, NULL, GPGME_ENCRYPT_ALWAYS_TRUST, in, out);
+  fail_if_err (err);
+  sign_result = gpgme_op_sign_result (ctx);
+  check_result (sign_result, GPGME_SIG_MODE_NORMAL);
+  print_data (out);
+
+  gpgme_data_release (in);
+  gpgme_data_release (out);
+
+
   gpgme_release (ctx);
   return 0;
 }

commit 0c1de7abd57b677998792e6cd5df5ddfb6e451b7
Author: Werner Koch <wk at gnupg.org>
Date:   Wed May 22 09:50:12 2013 +0100

    gpgme-tool: Allow for symmetric encryption.
    
    * src/gpgme-tool.c (gt_sign_encrypt): Pass NULL for recp if no
    recipients are given.

diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c
index bce52b8..0ebabab 100644
--- a/src/gpgme-tool.c
+++ b/src/gpgme-tool.c
@@ -1911,11 +1911,14 @@ gt_sign_encrypt (gpgme_tool_t gt, gpgme_encrypt_flags_t flags,
 		 gpgme_data_t plain, gpgme_data_t cipher, int sign)
 {
   gpg_error_t err;
+  gpgme_key_t *recp;
+
+  recp = gt->recipients_nr? gt->recipients : NULL;
 
   if (sign)
-    err = gpgme_op_encrypt_sign (gt->ctx, gt->recipients, flags, plain, cipher);
+    err = gpgme_op_encrypt_sign (gt->ctx, recp, flags, plain, cipher);
   else
-    err = gpgme_op_encrypt (gt->ctx, gt->recipients, flags, plain, cipher);
+    err = gpgme_op_encrypt (gt->ctx, recp, flags, plain, cipher);
 
   gt_recipients_clear (gt);
 

commit 18254f88f82da7542a986dca60917fb48d5bccd3
Author: Werner Koch <wk at gnupg.org>
Date:   Wed May 22 09:50:12 2013 +0100

    tests: Print auditlog in plain text format.
    
    * tests/gpgsm/t-verify.c (show_auditlog): Use plain text format.
    --
    
    The HTML output is not very helpful on the console and a pain to the
    eyes.

diff --git a/tests/gpgsm/t-verify.c b/tests/gpgsm/t-verify.c
index 062c5a1..a26617e 100644
--- a/tests/gpgsm/t-verify.c
+++ b/tests/gpgsm/t-verify.c
@@ -118,7 +118,7 @@ show_auditlog (gpgme_ctx_t ctx)
 
   err = gpgme_data_new (&data);
   fail_if_err (err);
-  err = gpgme_op_getauditlog (ctx, data, GPGME_AUDITLOG_HTML);
+  err = gpgme_op_getauditlog (ctx, data, 0);
   if (err)
     {
       fprintf (stderr, "%s:%i: Can't get audit log: %s\n",

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

Summary of changes:
 NEWS                       |    2 ++
 src/encrypt-sign.c         |   26 ++++++++++++++++++++++++--
 src/engine-gpg.c           |   23 ++++++++++++++++-------
 src/gpgme-tool.c           |    7 +++++--
 tests/gpg/t-encrypt-sign.c |   28 +++++++++++++++++++++++-----
 tests/gpgsm/t-verify.c     |    2 +-
 6 files changed, 71 insertions(+), 17 deletions(-)


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




More information about the Gnupg-commits mailing list