docs: python bindings and its special request
authorBen McGinnes <ben@adversary.org>
Thu, 20 Sep 2018 01:38:20 +0000 (11:38 +1000)
committerBen McGinnes <ben@adversary.org>
Thu, 20 Sep 2018 01:38:20 +0000 (11:38 +1000)
* Added some material on using the new-ish hkp4py module with GPGME.
* Example code will be added later once a couple of little issues are
  addressed.

Signed-off-by: Ben McGinnes <ben@adversary.org>
doc/gpgme-python-howto.texi
lang/python/docs/gpgme-python-howto.org

index 7cdce1e..85a8dcf 100644 (file)
@@ -28,7 +28,7 @@
 * Basic Functions::
 * Creating keys and subkeys::
 * Advanced or Experimental Use Cases::
-* Miscellaneous work-arounds::
+* Miscellaneous extras and work-arounds::
 * Copyright and Licensing::
 
 @detailmenu
@@ -125,9 +125,14 @@ Advanced or Experimental Use Cases
 
 * C plus Python plus SWIG plus Cython::
 
-Miscellaneous work-arounds
+Miscellaneous extras and work-arounds
 
 * Group lines::
+* Keyserver access for Python::
+
+Keyserver access for Python
+
+* Key import format::
 
 Copyright and Licensing
 
@@ -763,7 +768,7 @@ one argument which is a bytes literal object containing either the
 binary or ASCII armoured key data for one or more keys.
 
 The following example retrieves one or more keys from the SKS
-keyservers via the web using the requests module. Since requests
+keyservers via the web using the requests module.  Since requests
 returns the content as a bytes literal object, we can then use that
 directly to import the resulting data into our keybox.
 
@@ -811,7 +816,7 @@ else:
 
 @strong{NOTE:} When searching for a key ID of any length or a fingerprint
 (without spaces), the SKS servers require the the leading @samp{0x}
-indicative of hexadecimal be included. Also note that the old short
+indicative of hexadecimal be included.  Also note that the old short
 key IDs (e.g. @samp{0xDEADBEEF}) should no longer be used due to the
 relative ease by which such key IDs can be reproduced, as demonstrated
 by the Evil32 Project in 2014 (which was subsequently exploited in
@@ -2178,11 +2183,12 @@ The example versions include some additional options to annotate the
 existing code and to detect Cython's use.  The latter comes from the
 @uref{http://docs.cython.org/en/latest/src/tutorial/pure.html#magic-attributes-within-the-pxd, Magic Attributes} section of the Cython documentation.
 
-@node Miscellaneous work-arounds
-@chapter Miscellaneous work-arounds
+@node Miscellaneous extras and work-arounds
+@chapter Miscellaneous extras and work-arounds
 
 @menu
 * Group lines::
+* Keyserver access for Python::
 @end menu
 
 @node Group lines
@@ -2249,6 +2255,32 @@ script reads all the group entries in a user's @samp{gpg.conf} file and
 converts them into crypt-hooks suitable for use with the Mutt and
 Neomutt mail clients.
 
+@node Keyserver access for Python
+@section Keyserver access for Python
+
+The @uref{https://github.com/Selfnet/hkp4py, hkp4py} module by Marcel Fest was originally a port of the old
+@uref{https://github.com/dgladkov/python-hkp, python-hkp} module from Python 2 to Python 3 and updated to use the
+@uref{http://docs.python-requests.org/en/latest/index.html, requests} module instead.  It has since been modified to provide
+support for Python 2.7 as well and is available via PyPI.
+
+Since it rewrites the @samp{hkp} protocol prefix as @samp{http} and @samp{hkps} as
+@samp{https}, the module is able to be used even with servers which do not
+support the full scope of keyserver functions.  It will work quite
+readily when incorporated into a @ref{C plus Python plus SWIG plus Cython, , Cython} generated and compiled version
+of any code.
+
+@menu
+* Key import format::
+@end menu
+
+@node Key import format
+@subsection Key import format
+
+The hkp4py module returns key data via requests as string literals
+(@samp{r.text}) instead of byte literals (@samp{r.content}).  This means that
+the retrurned key data must be encoded to UTF-8 when importing that
+key material using a @samp{gpg.Context().key_import()} method.
+
 @node Copyright and Licensing
 @chapter Copyright and Licensing
 
index 0836d21..53ca3a5 100644 (file)
@@ -642,7 +642,7 @@ one argument which is a bytes literal object containing either the
 binary or ASCII armoured key data for one or more keys.
 
 The following example retrieves one or more keys from the SKS
-keyservers via the web using the requests module. Since requests
+keyservers via the web using the requests module.  Since requests
 returns the content as a bytes literal object, we can then use that
 directly to import the resulting data into our keybox.
 
@@ -690,7 +690,7 @@ else:
 
 *NOTE:* When searching for a key ID of any length or a fingerprint
 (without spaces), the SKS servers require the the leading =0x=
-indicative of hexadecimal be included. Also note that the old short
+indicative of hexadecimal be included.  Also note that the old short
 key IDs (e.g. =0xDEADBEEF=) should no longer be used due to the
 relative ease by which such key IDs can be reproduced, as demonstrated
 by the Evil32 Project in 2014 (which was subsequently exploited in
@@ -2084,7 +2084,7 @@ existing code and to detect Cython's use.  The latter comes from the
 [[http://docs.cython.org/en/latest/src/tutorial/pure.html#magic-attributes-within-the-pxd][Magic Attributes]] section of the Cython documentation.
 
 
-* Miscellaneous work-arounds
+* Miscellaneous extras and work-arounds
   :PROPERTIES:
   :CUSTOM_ID: cheats-and-hacks
   :END:
@@ -2157,6 +2157,34 @@ converts them into crypt-hooks suitable for use with the Mutt and
 Neomutt mail clients.
 
 
+** Keyserver access for Python
+   :PROPERTIES:
+   :CUSTOM_ID: hkp4py
+   :END:
+
+The [[https://github.com/Selfnet/hkp4py][hkp4py]] module by Marcel Fest was originally a port of the old
+[[https://github.com/dgladkov/python-hkp][python-hkp]] module from Python 2 to Python 3 and updated to use the
+[[http://docs.python-requests.org/en/latest/index.html][requests]] module instead.  It has since been modified to provide
+support for Python 2.7 as well and is available via PyPI.
+
+Since it rewrites the =hkp= protocol prefix as =http= and =hkps= as
+=https=, the module is able to be used even with servers which do not
+support the full scope of keyserver functions.  It will work quite
+readily when incorporated into a [[#cython][Cython]] generated and compiled version
+of any code.
+
+
+*** Key import format
+    :PROPERTIES:
+    :CUSTOM_ID: hkp4py-strings
+    :END:
+
+The hkp4py module returns key data via requests as string literals
+(=r.text=) instead of byte literals (=r.content=).  This means that
+the retrurned key data must be encoded to UTF-8 when importing that
+key material using a =gpg.Context().key_import()= method.
+
+
 * Copyright and Licensing
   :PROPERTIES:
   :CUSTOM_ID: copyright-and-license