[git] GPGME - branch, master, updated. gpgme-1.6.0-126-ga42d814

by Justus Winter cvs at cvs.gnupg.org
Mon May 23 16:04:03 CEST 2016


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  a42d814a65fdc29a3be6efa97433997495696a88 (commit)
       via  c9cc0412e940c78c3e9bacb6ff1459b5bb5bb9ad (commit)
      from  10df06ee8f9192309bf124872438f7c32457e1c6 (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 a42d814a65fdc29a3be6efa97433997495696a88
Author: Justus Winter <justus at gnupg.org>
Date:   Mon May 23 15:42:14 2016 +0200

    python: Port more tests.
    
    * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Set
    LD_LIBRARY_PATH.
    (pytests): Add new tests.
    * lang/python/tests/t-callbacks.py: Trim imports.
    * lang/python/tests/t-encrypt-sign.py: New file.
    * lang/python/tests/t-export.py: Likewise.
    * lang/python/tests/t-signers.py: Likewise.
    
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/python/tests/Makefile.am b/lang/python/tests/Makefile.am
index 30f1aec..32dc432 100644
--- a/lang/python/tests/Makefile.am
+++ b/lang/python/tests/Makefile.am
@@ -26,6 +26,7 @@ test_srcdir = $(top_srcdir)/tests/gpg
 TESTS_ENVIRONMENT = GNUPGHOME=$(abs_builddir) \
 	LC_ALL=C GPG_AGENT_INFO= \
 	top_srcdir=$(top_srcdir) \
+	LD_LIBRARY_PATH="../../../src/.libs" \
 	PYTHONPATH=`echo $(abs_builddir)/../build/lib.*`
 
 py_tests = t-wrapper.py \
@@ -33,8 +34,11 @@ py_tests = t-wrapper.py \
 	t-data.py \
 	t-encrypt.py \
 	t-encrypt-sym.py \
+	t-encrypt-sign.py \
 	t-sign.py \
-	t-decrypt.py
+	t-signers.py \
+	t-decrypt.py \
+	t-export.py
 
 TESTS = $(top_srcdir)/tests/gpg/initial.test \
 	$(py_tests) \
diff --git a/lang/python/tests/t-callbacks.py b/lang/python/tests/t-callbacks.py
index bd88d86..13ce486 100755
--- a/lang/python/tests/t-callbacks.py
+++ b/lang/python/tests/t-callbacks.py
@@ -17,7 +17,6 @@
 # You should have received a copy of the GNU Lesser General Public
 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
 
-import os
 from pyme import core, constants
 import support
 
diff --git a/lang/python/tests/t-encrypt-sign.py b/lang/python/tests/t-encrypt-sign.py
new file mode 100755
index 0000000..cba697c
--- /dev/null
+++ b/lang/python/tests/t-encrypt-sign.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2016 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 General Public License as published by
+# the Free Software Foundation; either version 2 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, see <http://www.gnu.org/licenses/>.
+
+import sys
+from pyme import core, constants
+import support
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.set_armor(True)
+
+def check_result(r, typ):
+    if r.invalid_signers:
+        sys.exit("Invalid signer found: {}".format(r.invalid_signers.fpr))
+
+    if len(r.signatures) != 1:
+        sys.exit("Unexpected number of signatures created")
+
+    signature = r.signatures[0]
+    if signature.type != typ:
+        sys.exit("Wrong type of signature created")
+
+    if signature.pubkey_algo != constants.PK_DSA:
+        sys.exit("Wrong pubkey algorithm reported: {}".format(
+            signature.pubkey_algo))
+
+    if signature.hash_algo not in (constants.MD_SHA1, constants.MD_RMD160):
+        sys.exit("Wrong hash algorithm reported: {}".format(
+            signature.hash_algo))
+
+    if signature.sig_class != 0:
+        sys.exit("Wrong signature class reported: {}".format(
+            signature.sig_class))
+
+    if signature.fpr != "A0FF4590BB6122EDEF6E3C542D727CC768697734":
+        sys.exit("Wrong fingerprint reported: {}".format(signature.fpr))
+
+keys = []
+keys.append(c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False))
+keys.append(c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False))
+
+for recipients in (keys, []):
+    source = core.Data("Hallo Leute\n")
+    sink = core.Data()
+
+    c.op_encrypt_sign(recipients, constants.ENCRYPT_ALWAYS_TRUST, source, sink)
+    result = c.op_encrypt_result()
+    assert not result.invalid_recipients, \
+        "Invalid recipient encountered: {}".format(
+            result.invalid_recipients.fpr)
+
+    result = c.op_sign_result()
+    check_result(result, constants.SIG_MODE_NORMAL)
+
+    support.print_data(sink)
diff --git a/lang/python/tests/t-export.py b/lang/python/tests/t-export.py
new file mode 100755
index 0000000..a102425
--- /dev/null
+++ b/lang/python/tests/t-export.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2016 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 General Public License as published by
+# the Free Software Foundation; either version 2 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, see <http://www.gnu.org/licenses/>.
+
+from pyme import core, constants
+import support
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.set_armor(True)
+
+sink = core.Data()
+c.op_export_ext(['Alpha', 'Bob'], 0, sink)
+support.print_data(sink)
+
+# Again. Now using a key array.
+keys = []
+keys.append(c.get_key("0x68697734", False)) # Alpha
+keys.append(c.get_key("0xA9E3B0B2", False)) # Bob
+sink = core.Data()
+c.op_export_keys(keys, 0, sink)
+support.print_data(sink)
diff --git a/lang/python/tests/t-signers.py b/lang/python/tests/t-signers.py
new file mode 100755
index 0000000..26dded5
--- /dev/null
+++ b/lang/python/tests/t-signers.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2016 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 General Public License as published by
+# the Free Software Foundation; either version 2 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, see <http://www.gnu.org/licenses/>.
+
+import sys
+from pyme import core, constants
+import support
+
+def check_result(r, typ):
+    if r.invalid_signers:
+        sys.exit("Invalid signer found: {}".format(r.invalid_signers.fpr))
+
+    if len(r.signatures) != 2:
+        sys.exit("Unexpected number of signatures created")
+
+    for signature in r.signatures:
+        if signature.type != typ:
+            sys.exit("Wrong type of signature created")
+
+        if signature.pubkey_algo != constants.PK_DSA:
+            sys.exit("Wrong pubkey algorithm reported: {}".format(
+                signature.pubkey_algo))
+
+        if signature.hash_algo != constants.MD_SHA1:
+            sys.exit("Wrong hash algorithm reported: {}".format(
+                signature.hash_algo))
+
+        if signature.sig_class != 1:
+            sys.exit("Wrong signature class reported: {}".format(
+                signature.sig_class))
+
+        if signature.fpr not in ("A0FF4590BB6122EDEF6E3C542D727CC768697734",
+                                 "23FD347A419429BACCD5E72D6BC4778054ACD246"):
+            sys.exit("Wrong fingerprint reported: {}".format(signature.fpr))
+
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.set_textmode(True)
+c.set_armor(True)
+
+keys = []
+c.op_keylist_start('', True)
+keys.append(c.op_keylist_next())
+keys.append(c.op_keylist_next())
+c.op_keylist_end()
+
+c.signers_add(keys[0])
+c.signers_add(keys[1])
+
+for mode in (constants.SIG_MODE_NORMAL, constants.SIG_MODE_DETACH,
+             constants.SIG_MODE_CLEAR):
+    source = core.Data("Hallo Leute\n")
+    sink = core.Data()
+
+    c.op_sign(source, sink, mode)
+
+    result = c.op_sign_result()
+    check_result(result, mode)
+    support.print_data(sink)

commit c9cc0412e940c78c3e9bacb6ff1459b5bb5bb9ad
Author: Justus Winter <justus at gnupg.org>
Date:   Mon May 23 15:41:06 2016 +0200

    python: Translate list of strings.
    
    * lang/python/gpgme.i: Add typemap translating list of strings.
    
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 4809fd6..fb882c8 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -42,6 +42,40 @@
 }
 %typemap(freearg) const char * "";
 
+/* Likewise for a list of strings.  */
+%typemap(in) const char *[] {
+  /* Check if is a list */
+  if (PyList_Check($input)) {
+    size_t i, size = PyList_Size($input);
+    $1 = (char **) malloc((size+1) * sizeof(char *));
+
+    for (i = 0; i < size; i++) {
+      PyObject *o = PyList_GetItem($input,i);
+      if (PyUnicode_Check(o))
+        $1[i] = PyUnicode_AsUTF8(o);
+      else if (PyString_Check(o))
+	$1[i] = PyString_AsString(o);
+      else {
+	PyErr_Format(PyExc_TypeError,
+                     "arg %d: list must contain only str or bytes, got %s "
+                     "at position %d",
+                     $argnum, o->ob_type->tp_name, i);
+	free($1);
+	return NULL;
+      }
+    }
+    $1[i] = NULL;
+  } else {
+    PyErr_Format(PyExc_TypeError,
+                 "arg %d: expected a list of str or bytes, got %s",
+                 $argnum, $input->ob_type->tp_name);
+    return NULL;
+  }
+}
+%typemap(freearg) const char *[] {
+  free((char *) $1);
+}
+
 // Release returned buffers as necessary.
 %typemap(newfree) char * "free($1);";
 %newobject gpgme_data_release_and_get_mem;

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

Summary of changes:
 lang/python/gpgme.i                                | 34 ++++++++++
 lang/python/tests/Makefile.am                      |  6 +-
 lang/python/tests/t-callbacks.py                   |  1 -
 lang/python/tests/{t-sign.py => t-encrypt-sign.py} | 53 ++++++---------
 lang/python/tests/{t-decrypt.py => t-export.py}    | 15 +++--
 lang/python/tests/t-signers.py                     | 75 ++++++++++++++++++++++
 6 files changed, 143 insertions(+), 41 deletions(-)
 copy lang/python/tests/{t-sign.py => t-encrypt-sign.py} (68%)
 copy lang/python/tests/{t-decrypt.py => t-export.py} (75%)
 create mode 100755 lang/python/tests/t-signers.py


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




More information about the Gnupg-commits mailing list