2015-05-05 17:09:44 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# $Id$
|
|
|
|
# Copyright (C) 2008 Igor Belyi <belyi@users.sourceforge.net>
|
|
|
|
# Copyright (C) 2002 John Goerzen <jgoerzen@complete.org>
|
|
|
|
#
|
2015-05-18 11:32:27 +00:00
|
|
|
# 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.
|
2015-05-05 17:09:44 +00:00
|
|
|
#
|
|
|
|
# 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
|
2015-05-18 11:32:27 +00:00
|
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
|
|
# 02111-1307 USA
|
2015-05-05 17:09:44 +00:00
|
|
|
|
|
|
|
"""
|
2015-05-16 18:03:49 +00:00
|
|
|
This program will try to encrypt a simple message to each key on your
|
|
|
|
keyring. If your keyring has any invalid keys on it, those keys will
|
|
|
|
be skipped and it will re-try the encryption."""
|
2015-05-05 17:09:44 +00:00
|
|
|
|
|
|
|
from pyme import core
|
|
|
|
from pyme.core import Data, Context
|
|
|
|
from pyme.constants import validity
|
|
|
|
|
|
|
|
core.check_version(None)
|
|
|
|
|
2015-05-16 18:03:49 +00:00
|
|
|
plain = Data(b'This is my message.')
|
2015-05-05 17:09:44 +00:00
|
|
|
|
|
|
|
c = Context()
|
|
|
|
c.set_armor(1)
|
|
|
|
|
|
|
|
def sendto(keylist):
|
|
|
|
cipher = Data()
|
|
|
|
c.op_encrypt(keylist, 1, plain, cipher)
|
|
|
|
cipher.seek(0,0)
|
|
|
|
return cipher.read()
|
|
|
|
|
|
|
|
names = []
|
|
|
|
for key in c.op_keylist_all(None, 0):
|
2015-05-16 18:03:49 +00:00
|
|
|
try:
|
|
|
|
print(" *** Found key for %s" % key.uids[0].uid)
|
|
|
|
valid = 0
|
|
|
|
for subkey in key.subkeys:
|
|
|
|
keyid = subkey.keyid
|
2015-05-18 11:32:27 +00:00
|
|
|
if keyid is None:
|
2015-05-16 18:03:49 +00:00
|
|
|
break
|
|
|
|
can_encrypt = subkey.can_encrypt
|
|
|
|
valid += can_encrypt
|
2015-05-18 11:32:27 +00:00
|
|
|
print(" Subkey %s: encryption %s" %
|
2015-05-16 18:03:49 +00:00
|
|
|
(keyid, can_encrypt and "enabled" or "disabled"))
|
|
|
|
except UnicodeEncodeError as e:
|
|
|
|
print(e)
|
2015-05-18 11:32:27 +00:00
|
|
|
|
2015-05-05 17:09:44 +00:00
|
|
|
if valid:
|
|
|
|
names.append(key)
|
|
|
|
else:
|
|
|
|
print(" This key cannot be used for encryption; skipping.")
|
|
|
|
|
|
|
|
passno = 0
|
|
|
|
|
|
|
|
print("Encrypting to %d recipients" % len(names))
|
|
|
|
print(sendto(names))
|