[git] GPGME - branch, ben/export-keys, updated. gpgme-1.11.1-68-g4bbe247

by Ben McGinnes cvs at cvs.gnupg.org
Wed Jun 27 17:53:03 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, ben/export-keys has been updated
       via  4bbe247c845795e2bb09509c40a8472a910e907d (commit)
       via  483de0330ddcb71a94a7964e31241d7309f6c3f5 (commit)
      from  cd03423b8ffb0a70adb878ad9f72ebdd28d71a7d (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 4bbe247c845795e2bb09509c40a8472a910e907d
Author: Ben McGinnes <ben at adversary.org>
Date:   Thu Jun 28 01:50:56 2018 +1000

    python bindings: import example
    
    * Added an example script for importing a key from a file (either
      ASCII armoured or not).

diff --git a/lang/python/examples/howto/import-key.py b/lang/python/examples/howto/import-key.py
new file mode 100755
index 0000000..56cfe25
--- /dev/null
+++ b/lang/python/examples/howto/import-key.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from __future__ import absolute_import, division, unicode_literals
+
+# Copyright (C) 2018 Ben McGinnes <ben at gnupg.org>
+#
+# This program 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.
+#
+# This program 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.
+#
+# This program 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 General Public License and the GNU
+# Lesser General Public Licensefor more details.
+#
+# You should have received a copy of the GNU General Public License and the GNU
+# Lesser General Public along with this program; if not, see
+# <http://www.gnu.org/licenses/>.
+
+import gpg
+import os.path
+import sys
+
+print("""
+This script exports one or more public keys.
+""")
+
+c = gpg.Context(armor=True)
+
+if len(sys.argv) >= 3:
+    keyfile = sys.argv[1]
+    homedir = sys.argv[2]
+elif len(sys.argv) == 2:
+    keyfile = sys.argv[1]
+    homedir = input("Enter the GPG configuration directory path (optional): ")
+else:
+    keyfile = input("Enter the path and filename to import the key(s) from: ")
+    homedir = input("Enter the GPG configuration directory path (optional): ")
+
+if homedir.startswith("~"):
+    if os.path.exists(os.path.expanduser(homedir)) is True:
+        c.home_dir = os.path.expanduser(homedir)
+    else:
+        pass
+elif os.path.exists(homedir) is True:
+    c.home_dir = homedir
+else:
+    pass
+
+if os.path.isfile(keyfile) is True:
+    with open(keyfile, "rb") as f:
+        incoming = f.read()
+    result = c.key_import(incoming)
+else:
+    result = None
+
+if result is not None and hasattr(result, "considered") is False:
+    print(result)
+elif result is not None and hasattr(result, "considered") is True:
+    num_keys = len(result.imports)
+    new_revs = result.new_revocations
+    new_sigs = result.new_signatures
+    new_subs = result.new_sub_keys
+    new_uids = result.new_user_ids
+    new_scrt = result.secret_imported
+    nochange = result.unchanged
+    print("""
+The total number of keys considered for import was:  {0}
+
+   Number of keys revoked:  {1}
+ Number of new signatures:  {2}
+    Number of new subkeys:  {3}
+   Number of new user IDs:  {4}
+Number of new secret keys:  {5}
+ Number of unchanged keys:  {6}
+
+The key IDs for all considered keys were:
+""".format(num_keys, new_revs, new_sigs, new_subs, new_uids, new_scrt,
+           nochange))
+    for i in range(num_keys):
+        print(result.imports[i].fpr)
+    print("")
+elif result is None:
+    print("You must specify a key file to import.")

commit 483de0330ddcb71a94a7964e31241d7309f6c3f5
Author: Ben McGinnes <ben at adversary.org>
Date:   Thu Jun 28 00:57:37 2018 +1000

    python bindings: export public keys
    
    * Updated key_export and key_export_minimal to return None where a
      pattern matched no keys in a manner simnilar to the possible result
      of key_export_secret.

diff --git a/lang/python/src/core.py b/lang/python/src/core.py
index d1376da..f8e0c60 100644
--- a/lang/python/src/core.py
+++ b/lang/python/src/core.py
@@ -578,7 +578,8 @@ class Context(GpgmeWrapper):
         Returns:
                 -- A key block containing one or more OpenPGP keys in
                    either ASCII armoured or binary format as determined
-                   by the Context().
+                   by the Context().  If there are no matching keys it
+                   returns None.
 
         Raises:
         GPGMEError     -- as signaled by the underlying library.
@@ -588,9 +589,14 @@ class Context(GpgmeWrapper):
         try:
             self.op_export(pattern, mode, data)
             data.seek(0, os.SEEK_SET)
-            result = data.read()
+            pk_result = data.read()
         except GPGMEError as e:
-            result = e
+            pk_result = e
+
+        if len(pk_result) > 0:
+            result = pk_result
+        else:
+            result = None
 
         return result
 
@@ -607,7 +613,8 @@ class Context(GpgmeWrapper):
         Returns: 
                 -- A key block containing one or more minimised OpenPGP
                    keys in either ASCII armoured or binary format as 
-                   determined by the Context().
+                   determined by the Context().  If there are no matching
+                   keys it returns None.
 
         Raises:
         GPGMEError     -- as signaled by the underlying library.
@@ -617,9 +624,14 @@ class Context(GpgmeWrapper):
         try:
             self.op_export(pattern, mode, data)
             data.seek(0, os.SEEK_SET)
-            result = data.read()
+            pk_result = data.read()
         except GPGMEError as e:
-            result = e
+            pk_result = e
+
+        if len(pk_result) > 0:
+            result = pk_result
+        else:
+            result = None
 
         return result
 

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

Summary of changes:
 .../howto/{export-key.py => import-key.py}         | 56 ++++++++++++++--------
 lang/python/src/core.py                            | 24 +++++++---
 2 files changed, 55 insertions(+), 25 deletions(-)
 copy lang/python/examples/howto/{export-key.py => import-key.py} (58%)


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




More information about the Gnupg-commits mailing list