63 lines
2.2 KiB
Python
Executable File
63 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# This is more of a documentation on some python-gpgme (https://pypi.python.org/pypi/gpg) examples.
|
|
# Because their only documentation for the python bindings is in pydoc, and the C API manual is kind of useless.
|
|
|
|
import gpg
|
|
import gpg.constants
|
|
import inspect
|
|
import pprint
|
|
|
|
# my key ID
|
|
mykey = '748231EBCBD808A14F5E85D28C004C2F93481F6B'
|
|
# a key to test with
|
|
theirkey = '63D1CEA387C27A92E0D50AB8343C305F9109D4DC'
|
|
|
|
# Create a context
|
|
# Params:
|
|
#armor -- enable ASCII armoring (default False)
|
|
#textmode -- enable canonical text mode (default False)
|
|
#offline -- do not contact external key sources (default False)
|
|
#signers -- list of keys used for signing (default [])
|
|
#pinentry_mode -- pinentry mode (default PINENTRY_MODE_DEFAULT)
|
|
#protocol -- protocol to use (default PROTOCOL_OpenPGP)
|
|
#home_dir -- state directory (default is the engine default)
|
|
ctx = gpg.Context()
|
|
|
|
# Fetch a key from the keyring
|
|
#secret -- to request a secret key
|
|
mkey = ctx.get_key(mykey)
|
|
tkey = ctx.get_key(theirkey)
|
|
|
|
## Print the attributes of our key and other info
|
|
##https://stackoverflow.com/a/41737776
|
|
##for k in (mkey, tkey):
|
|
#for k in [mkey]:
|
|
# for i in inspect.getmembers(k):
|
|
# if not i[0].startswith('_'):
|
|
# pprint.pprint(i)
|
|
#pprint.pprint(ctx.get_engine_info())
|
|
|
|
# Print the constants
|
|
#pprint.pprint(inspect.getmembers(gpg.constants))
|
|
|
|
# Get remote key. Use an OR to search both keyserver and local.
|
|
#ctx.set_keylist_mode(gpg.constants.KEYLIST_MODE_EXTERN|gpg.constants.KEYLIST_MODE_LOCAL)
|
|
klmodes = {'local': gpg.constants.KEYLIST_MODE_LOCAL,
|
|
'remote': gpg.constants.KEYLIST_MODE_EXTERN,
|
|
'both': gpg.constants.KEYLIST_MODE_LOCAL|gpg.constants.KEYLIST_MODE_EXTERN}
|
|
|
|
# List keys
|
|
#pattern -- return keys matching pattern (default: all keys)
|
|
#secret -- return only secret keys (default: False)
|
|
#mode -- keylist mode (default: list local keys)
|
|
#source -- read keys from source instead from the keyring
|
|
# (all other options are ignored in this case)
|
|
ctx.keylist(pattern = 'bts@square-r00t.net',
|
|
secret = False,
|
|
mode = klmodes['both'],
|
|
source = None)
|
|
|
|
# Test fetching from a keyserver
|
|
|