from . import signature as _signature
-def get_client(**kwargs):
+SOCKET_PATH = _os_path.expanduser(_os_path.join('~', '.gnupg', 'S.gpgme-tool'))
+
+
+def get_client_params(config):
+ r"""Retrieve Assuan client paramters from a config file.
+
+ >>> from configparser import ConfigParser
+ >>> config = ConfigParser()
+ >>> config.read_string('\n'.join([
+ ... '[gpgme-tool]',
+ ... 'socket-path: /tmp/S.gpgme-tool',
+ ... ]))
+ >>> get_client_params(config)
+ {'socket_path': '/tmp/S.gpgme-tool'}
+ >>> config = ConfigParser()
+ >>> get_smtp_params(ConfigParser())
+ {'socket_path': None}
+ """
+ params = {'socket_path': None}
+ try:
+ params['socket_path'] = config.get('gpgme-tool', 'socket-path')
+ except _configparser.NoSectionError:
+ return params
+ except _configparser.NoOptionError:
+ pass
+ return params
+
+def get_client(socket_path=None):
+ if socket_path is None:
+ socket_path = socket_path
logger = _logging.getLogger('{}.{}'.format(_LOG.name, 'pyassuan'))
client = _client.AssuanClient(
name='pgp-mime', logger=logger, use_sublogger=False,
close_on_disconnect=True)
- client.connect(socket_path='/tmp/gpgme-tool.sock')
+ client.connect(socket_path=socket_path)
return client
def disconnect(client):
def sign_and_encrypt_bytes(data, signers=None, recipients=None,
always_trust=False, mode='detach',
- allow_default_signer=False):
+ allow_default_signer=False, **kwargs):
r"""Sign ``data`` with ``signers`` and encrypt to ``recipients``.
Just sign (with a detached signature):
"""
input_read,input_write = _os.pipe()
output_read,output_write = _os.pipe()
- client = get_client()
+ client = get_client(**kwargs)
try:
hello(client)
if signers:
_os.close(fd)
return d
-def decrypt_bytes(data):
+def decrypt_bytes(data, **kwargs):
r"""Decrypt ``data``.
>>> b = '\n'.join([
"""
input_read,input_write = _os.pipe()
output_read,output_write = _os.pipe()
- client = get_client()
+ client = get_client(**kwargs)
try:
hello(client)
client.send_fds([input_read])
_os.close(fd)
return d
-def verify_bytes(data, signature=None, always_trust=False):
+def verify_bytes(data, signature=None, always_trust=False, **kwargs):
r"""Verify a signature on ``data``, possibly decrypting first.
These tests assume you didn't trust the distributed test key.
else:
message_read = message_write = -1
output_read,output_write = _os.pipe()
- client = get_client()
+ client = get_client(**kwargs)
verified = None
signatures = []
try: