[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