diff options
Diffstat (limited to 'lang/python/examples/exportimport.py')
| -rwxr-xr-x | lang/python/examples/exportimport.py | 115 | 
1 files changed, 49 insertions, 66 deletions
| diff --git a/lang/python/examples/exportimport.py b/lang/python/examples/exportimport.py index d0e1fa89..39b1595c 100755 --- a/lang/python/examples/exportimport.py +++ b/lang/python/examples/exportimport.py @@ -1,75 +1,58 @@  #!/usr/bin/env python3 +# +# Copyright (C) 2016 g10 Code GmbH  # Copyright (C) 2004,2008 Igor Belyi <[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/>.  # Sample of export and import of keys -# It uses keys for [email protected] generated by genkey.pl script +# It uses keys for [email protected] generated by genkey.py script  import sys -from pyme import core - -core.check_version(None) - -expkey = core.Data() -c = core.Context() -c.set_armor(1) -user = b"[email protected]" - -print(" - Export %s's public keys - " % user) -c.op_export(user, 0, expkey) - -# print out exported data to see how it looks in armor. -expkey.seek(0, 0) -expstring = expkey.read() -if expstring: -    print(expstring) -else: -    print("No %s's keys to export!" % user) -    sys.exit(0) - - -# delete keys to ensure that they came from our imported data. -# Note that since joe's key has private part as well we can only delete -# both of them. As a side effect joe won't have private key for this -# exported public one. If it's Ok with you uncomment the next 4 lines. -# print " - Delete %s's public keys - " % user -# for thekey in [x for x in c.op_keylist_all(user, 0)]: -#     if not thekey.secret: -#         c.op_delete(thekey, 1) - - -# initialize import data from a string as if it was read from a file. -newkey = core.Data(expstring) - -print(" - Import exported keys - ") -c.op_import(newkey) -result = c.op_import_result() - -# show the import result -if result: -    print(" - Result of the import - ") -    for k in dir(result): -        if k not in result.__dict__ and not k.startswith("_"): -            if k == "imports": -                print(k, ":") -                for impkey in result.__getattr__(k): -                    print("    fpr=%s result=%d status=%x" % -                          (impkey.fpr, impkey.result, impkey.status)) -            else: -                print(k, ":", result.__getattr__(k)) -else: -    print(" - No import result - ") +import os +import pyme + +user = "[email protected]" + +with pyme.Context(armor=True) as c, pyme.Data() as expkey: +    print(" - Export %s's public keys - " % user) +    c.op_export(user, 0, expkey) + +    # print out exported data to see how it looks in armor. +    expkey.seek(0, os.SEEK_SET) +    expstring = expkey.read() +    if expstring: +        sys.stdout.buffer.write(expstring) +    else: +        sys.exit("No %s's keys to export!" % user) + +# delete keys to ensure that they came from our imported data.  Note +# that if joe's key has private part as well we can only delete both +# of them. +with pyme.Context() as c: +    # Note: We must not modify the key store during iteration, +    # therfore, we explicitly make a list. +    keys = list(c.keylist(user)) + +    for k in keys: +        c.op_delete(k, True) + +with pyme.Context() as c: +    print(" - Import exported keys - ") +    c.op_import(expstring) +    result = c.op_import_result() +    if result: +        print(result) +    else: +        sys.exit(" - No import result - ") | 
