<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gpgme/lang/python, branch ben/key-import</title>
<subtitle>GnuPG Made Easy.</subtitle>
<id>http://git.bktus.com/gpgfrontend/gpgme/atom?h=ben%2Fkey-import</id>
<link rel='self' href='http://git.bktus.com/gpgfrontend/gpgme/atom?h=ben%2Fkey-import'/>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/'/>
<updated>2018-06-06T23:46:56Z</updated>
<entry>
<title>python bindings: import keys</title>
<updated>2018-06-06T23:46:56Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-06-06T23:46:56Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=167847f1bcfb1b573bd40fe897f39d4ee4167176'/>
<id>urn:sha1:167847f1bcfb1b573bd40fe897f39d4ee4167176</id>
<content type='text'>
* Adapted from prior submissions by Tobias Mueller and Jacob Adams.
* key_import function added to gpg.core.Context().
* Two example scripts added to to examples/howto: import-key-file.py
  imports keys from a local file and import-keys.py accesses the SKS
  keyserver pool using the requests module to search for keys
  (includes check for key IDs which may not include the leading 0x).
* Added documentation demonstrating the use of the key_import()
  function with a large number of keys matching one domain (eff.org;
  the example shows how EFF staff are following their own advice
  issued last month).
</content>
</entry>
<entry>
<title>docs: python bindings howto</title>
<updated>2018-06-02T14:46:46Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-06-02T14:46:46Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=897423422b9d3b856bfb72fbe1995b91d153a54e'/>
<id>urn:sha1:897423422b9d3b856bfb72fbe1995b91d153a54e</id>
<content type='text'>
* Another attempt at fixing the org-mode version.
* A proof reader ascertained there were tabs in it instead of whitespace.
* Stripped the lot out and replaced with standard 4 spaces, fixed
  every incorrect example ... and it still breaks upon save and/or export.
* Added the reference to the mutt-groups.py script to demonstrate the
  groups.py module/code.
</content>
</entry>
<entry>
<title>examples: mutt crypt-hooks generator</title>
<updated>2018-05-24T21:12:52Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-05-24T21:12:52Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=321005c12f716814d86e139eb265437bda01380f'/>
<id>urn:sha1:321005c12f716814d86e139eb265437bda01380f</id>
<content type='text'>
* Added a script which demonstrates how the groups module works.
* Script generates Mutt/Neomutt crypt-hooks for every group entry in
  gpg.conf, including those entries for multiple keys (Mutt handles
  that differently).
</content>
</entry>
<entry>
<title>docs: python bindings howto</title>
<updated>2018-05-24T19:50:11Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-05-24T19:22:16Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=48e946a96d05effd56b34761b98eebb6b2a6fae1'/>
<id>urn:sha1:48e946a96d05effd56b34761b98eebb6b2a6fae1</id>
<content type='text'>
* Fixed the groups.py script so it really does what is described (the
  old code had the same result for groups, group_lines and
  group_lists).
* Updated the corresponding example in the doc to match.
</content>
</entry>
<entry>
<title>doc: python bindings howto</title>
<updated>2018-05-24T19:50:11Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-05-13T18:14:45Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=9038d30017b2e38b183d093f9b5d46e1f24c70a6'/>
<id>urn:sha1:9038d30017b2e38b183d093f9b5d46e1f24c70a6</id>
<content type='text'>
* Fixed org-mode python source indenting.
** Note: nested indented blocks do not indent correctly when exported
   to [X]HTML.
</content>
</entry>
<entry>
<title>docs and examples: python howto</title>
<updated>2018-05-23T04:43:06Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-05-23T04:43:06Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=3a9e6a8e088e233097866bb0560a36cfbbc4470e'/>
<id>urn:sha1:3a9e6a8e088e233097866bb0560a36cfbbc4470e</id>
<content type='text'>
* Updated the decryption example code in the HOWTO and the
  corresponding decrypt-file.py script to gracefully handle a
  decryption failure.  This error will always be triggered when GPGME
  is used to try to decrypt an old, MDC-less encrypted message or
  file.
</content>
</entry>
<entry>
<title>python: key expiration datetime stamp tests</title>
<updated>2018-05-05T02:27:17Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-05-05T02:27:17Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=46da79e3de99a7b65748994921d6aab73b9974e7'/>
<id>urn:sha1:46da79e3de99a7b65748994921d6aab73b9974e7</id>
<content type='text'>
* Changed the expiration date for the generated test key to NYE this
  century, rather than the NYE this millennium as originally suggested
  in job #3815.
* This covers the lifetimes of current users (except, maybe, some very
  healthy millennials) as well as the 32-bit clock end date in 2038;
  without falling foul of OpenPGP's 2106 expiration.
</content>
</entry>
<entry>
<title>doc: Update copyright years and change two URLs.</title>
<updated>2018-04-18T17:30:50Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2018-04-18T17:30:50Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=67b4dafb6d3fe2b5ab889417126ca5d509c0e3ca'/>
<id>urn:sha1:67b4dafb6d3fe2b5ab889417126ca5d509c0e3ca</id>
<content type='text'>
--

Signed-off-by: Werner Koch &lt;wk@gnupg.org&gt;
</content>
</entry>
<entry>
<title>python: Fix crash by leaving struct members intact</title>
<updated>2018-04-17T08:20:12Z</updated>
<author>
<name>Tobias Mueller</name>
<email>muelli@cryptobitch.de</email>
</author>
<published>2018-02-20T16:34:14Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=bbfa7c42337bb619e6af20bf051fe0755ed5a9fd'/>
<id>urn:sha1:bbfa7c42337bb619e6af20bf051fe0755ed5a9fd</id>
<content type='text'>
* lang/python/setup.py.in: Copy gpgme.h instead of parsing it.
--
The python bindings tried to parse deprecated functions
out of gpgme.h. This fails for the current gpgme.h in
that it removes an entire field in the key sig struct (_obsolete_class).
Hence, the fields were off by an int and the bindings accessed struct
members via the wrong offset. That caused python program to crash.
At least on 32bit platforms, the crash can be easily triggered by
accessing key.uids[0].signatures. On 64bit platforms the compiler
probably aligns the struct so that the missing 4 bytes are not noticed.

With this change, the python bindings will expose all functions
that gpgme exposes, including the deprecated ones.

Credits go to Justus Winter for debugging and identying the issue.

Signed-off-by: Tobias Mueller &lt;muelli@cryptobitch.de&gt;
GnuPG-bug-id: 3892
</content>
</entry>
<entry>
<title>Merge branch 'master' of ssh+git://playfair.gnupg.org/git/gpgme</title>
<updated>2018-03-29T23:38:31Z</updated>
<author>
<name>Ben McGinnes</name>
<email>ben@adversary.org</email>
</author>
<published>2018-03-29T23:38:31Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=fed024eff1091056647296ac589a0c88c2be41bb'/>
<id>urn:sha1:fed024eff1091056647296ac589a0c88c2be41bb</id>
<content type='text'>
* Also fixed a small grammatical error highlighted by a merge conflict
  (in the python bindings howto).
</content>
</entry>
</feed>
