aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/examples/simple.py
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-08-05 12:03:15 +0000
committerJustus Winter <[email protected]>2016-08-05 12:05:49 +0000
commit2a613e87156b23c4aa6aa5ce38505cb285de6a18 (patch)
tree2771ed69bf7299d1b1c9d89dca30b2e4119ac69a /lang/python/examples/simple.py
parentcore: Extend gpgme_subkey_t to carry the keygrip. (diff)
downloadgpgme-2a613e87156b23c4aa6aa5ce38505cb285de6a18.tar.gz
gpgme-2a613e87156b23c4aa6aa5ce38505cb285de6a18.zip
python: Clean up and modernize examples.
* lang/python/examples/Examples.rst: Delete file. * lang/python/examples/t-edit.py: Likewise. This is actually a test case and has been moved to 'tests'. * lang/python/examples/assuan.py: New file. * lang/python/examples/decryption-filter.py: Likewise. * lang/python/examples/delkey.py: Modernize. * lang/python/examples/encrypt-to-all.py: Likewise. * lang/python/examples/exportimport.py: Likewise. * lang/python/examples/genkey.py: Likewise. * lang/python/examples/inter-edit.py: Likewise. * lang/python/examples/sign.py: Likewise. * lang/python/examples/signverify.py: Likewise. * lang/python/examples/simple.py: Likewise. * lang/python/examples/testCMSgetkey.py: Likewise. * lang/python/examples/verifydetails.py: Likewise. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'lang/python/examples/simple.py')
-rwxr-xr-xlang/python/examples/simple.py79
1 files changed, 36 insertions, 43 deletions
diff --git a/lang/python/examples/simple.py b/lang/python/examples/simple.py
index 29a44492..50a3938b 100755
--- a/lang/python/examples/simple.py
+++ b/lang/python/examples/simple.py
@@ -1,52 +1,45 @@
#!/usr/bin/env python3
+#
+# Copyright (C) 2016 g10 Code GmbH
# Copyright (C) 2005 Igor Belyi <[email protected]>
# Copyright (C) 2002 John Goerzen <[email protected]>
#
-# 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 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 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 for more details.
+# 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 for more details.
#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
import sys
import os
-from pyme import core, errors
-
-core.check_version(None)
-
-# Set up our input and output buffers.
-
-plain = core.Data('This is my message.')
-cipher = core.Data()
-
-# Initialize our context.
-
-c = core.Context()
-c.set_armor(1)
-
-# Set up the recipients.
-
-sys.stdout.write("Enter name of your recipient: ")
-sys.stdout.flush()
-name = sys.stdin.readline().strip()
-c.op_keylist_start(name, 0)
-r = c.op_keylist_next()
-
-if r == None:
- print("The key for user \"%s\" was not found" % name)
-else:
- # Do the encryption.
- try:
- c.op_encrypt([r], 1, plain, cipher)
- cipher.seek(0, os.SEEK_SET)
- sys.stdout.buffer.write(cipher.read())
- except errors.GPGMEError as ex:
- print(ex.getstring())
+import pyme
+
+with pyme.Context(armor=True) as c:
+ recipients = []
+ print("Enter name of your recipient(s), end with a blank line.")
+ while True:
+ line = input()
+ if not line:
+ break
+ new = list(c.keylist(line))
+ if not new:
+ print("Matched no known keys.")
+ else:
+ print("Adding {}.".format(", ".join(k.uids[0].name for k in new)))
+ recipients.extend(new)
+
+ if not recipients:
+ sys.exit("No recipients.")
+
+ print("Encrypting for {}.".format(", ".join(k.uids[0].name
+ for k in recipients)))
+
+ ciphertext, _, _ = c.encrypt(b"This is my message,", recipients)
+ sys.stdout.buffer.write(ciphertext)