Python 3 port of PyME
[gpgme.git] / lang / py3-pyme / examples / encrypt-to-all.py
1 #!/usr/bin/env python3
2 # $Id$
3 # Copyright (C) 2008 Igor Belyi <belyi@users.sourceforge.net>
4 # Copyright (C) 2002 John Goerzen <jgoerzen@complete.org>
5 #
6 #    This program is free software; you can redistribute it and/or modify
7 #    it under the terms of the GNU General Public License as published by
8 #    the Free Software Foundation; either version 2 of the License, or
9 #    (at your option) any later version.
10 #
11 #    This program is distributed in the hope that it will be useful,
12 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #    GNU General Public License for more details.
15 #
16 #    You should have received a copy of the GNU General Public License
17 #    along with this program; if not, write to the Free Software
18 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20 """
21 This program will try to encrypt a simple message to each key on your keyring.
22 If your keyring has any invalid keys on it, those keys will be removed
23 and it will re-try the encryption."""
24
25 from pyme import core
26 from pyme.core import Data, Context
27 from pyme.constants import validity
28
29 core.check_version(None)
30
31 plain = Data('This is my message.')
32
33 c = Context()
34 c.set_armor(1)
35
36 def sendto(keylist):
37     cipher = Data()
38     c.op_encrypt(keylist, 1, plain, cipher)
39     cipher.seek(0,0)
40     return cipher.read()
41
42 names = []
43 for key in c.op_keylist_all(None, 0):
44     print(" *** Found key for %s" % key.uids[0].uid)
45     valid = 0
46     for subkey in key.subkeys:
47         keyid = subkey.keyid
48         if keyid == None:
49             break
50         can_encrypt = subkey.can_encrypt
51         valid += can_encrypt
52         print("     Subkey %s: encryption %s" % \
53               (keyid, can_encrypt and "enabled" or "disabled"))
54     
55     if valid:
56         names.append(key)
57     else:
58         print("     This key cannot be used for encryption; skipping.")
59
60 passno = 0
61
62 print("Encrypting to %d recipients" % len(names))
63 print(sendto(names))
64
65