gpgme.git
23 hours agoPython: docs tweaks master
Ben McGinnes [Sun, 21 Oct 2018 18:43:36 +0000 (05:43 +1100)]
Python: docs tweaks

* Fixed a minor error in how the reST version of the HOWTO is
  generated.
* Updated the help() in __init__.py with a little more detail as to
  why not to use the lower level functions.

2 days agopython bindings: callback test
Ben McGinnes [Sat, 20 Oct 2018 00:07:55 +0000 (11:07 +1100)]
python bindings: callback test

* lang/python/tests/t-callbacks.py: Updated test logic to try
  generating a key which expires in 2099 and if that fails then
  fallback to an expiration in 2037 in an attempt to catch the 32-bit
  systems.

4 days agocore: Fix segv in genkey when no endtag is provided.
Werner Koch [Thu, 18 Oct 2018 15:36:30 +0000 (17:36 +0200)]
core: Fix segv in genkey when no endtag is provided.

* src/genkey.c (get_key_parameter): Provide a fallback ENDTAG.
--

It would actually be more correct to return an error in this case but
it is possible tha there are users who did not provide an endtag and
out of luck they also didn't trigger a segv.

GnuPG-bug-id: 4192
Signed-off-by: Werner Koch <wk@gnupg.org>
4 days agocore: Return an error if NULL is provided for genkey's parms.
Werner Koch [Thu, 18 Oct 2018 14:50:18 +0000 (16:50 +0200)]
core: Return an error if NULL is provided for genkey's parms.

* src/debug.c (_gpgme_debug_buffer): Bail out of BUF is NULL.
* src/genkey.c (gpgme_op_genkey): Do no deref a NULL in
TRACE_LOGBUF.
(gpgme_op_genkey_start): Ditto. Return an error if PARMS is NULL.
--

This robustness patch should solve one part of
GnuPG-bug-id: 4192
Signed-off-by: Werner Koch <wk@gnupg.org>
4 days agopython: do not export HAVE_CXX11 definition
Daniel Kahn Gillmor [Thu, 18 Oct 2018 02:23:59 +0000 (22:23 -0400)]
python: do not export HAVE_CXX11 definition

* lang/python/gpgme.i: ignore HAVE_CXX11 in SWIG interface

--

If there are two distinct builds (a) and (b) of gpgme which both build
python bindings, and build (a) also happens to build the C++ bindings,
then the generated gpg/gpgme.py file from build (a) will not be usable
with the .so generated in build (b), despite them being exactly the
same, and having nothing to do with C++.

In particular, it will fail with:

-----------
  File "…/gpg/__init__.py", line 99, in <module>
    from . import core
  File "…/gpg/core.py", line 10, in <module>
    from . import gpgme
  File "…/gpg/gpgme.py", line 152, in <module>
    HAVE_CXX11 = _gpgme.HAVE_CXX11
AttributeError: module 'gpg._gpgme' has no attribute 'HAVE_CXX11'
-----------

By asking SWIG to ignore this definition, we stabilize the generated
.py and the .so, ensuring that they are more cleanly interoperable.

4 days agodoc: convert more links to equivalent https:// URLs
Daniel Kahn Gillmor [Thu, 18 Oct 2018 04:19:34 +0000 (00:19 -0400)]
doc: convert more links to equivalent https:// URLs

--

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
4 days agodoc: convert more http:// links to https://
Daniel Kahn Gillmor [Thu, 18 Oct 2018 04:10:19 +0000 (00:10 -0400)]
doc: convert more http:// links to https://

--

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
4 days agodoc: use https:// for www.gnu.org
Daniel Kahn Gillmor [Thu, 18 Oct 2018 03:56:27 +0000 (23:56 -0400)]
doc: use https:// for www.gnu.org

--

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
5 days agojs: increase default startup timeout
Maximilian Krambach [Wed, 17 Oct 2018 11:13:31 +0000 (13:13 +0200)]
js: increase default startup timeout

--

* src/index.js: change the init default if none is given, so that all
  initialization defaults line up to 1000 miliseconds

5 days agopython: Auto-check for all installed python versions.
Werner Koch [Wed, 17 Oct 2018 08:05:04 +0000 (10:05 +0200)]
python: Auto-check for all installed python versions.

* m4/python.m4 (AM_PATH_PYTHON): Add a 4th arg.
* configure.ac (available_languages): Remove separate python2 and
python3 and keep just python.  Simplify test for pythons.  Use an
explicit list of python versions to test.
--

This seems to be a starightforward chnage to support more than two
python versions.  I am not sure why we had that complicated thing
before.  On my box I get builds and run tests for 2.7, 3.4 and 3.5.
If 3.6, 3.7 or 3.8 are installed they should also work.

GnuPG-bug-id: 3354
Signed-off-by: Werner Koch <wk@gnupg.org>
6 days agocore: Really remove CR from version output.
Werner Koch [Tue, 16 Oct 2018 15:05:14 +0000 (17:05 +0200)]
core: Really remove CR from version output.

* src/version.c (_gpgme_get_program_version): Fix test.
--

Fixes-commit: 6bde056355796f15b6e6954372e87f349847515b
Signed-off-by: Werner Koch <wk@gnupg.org>
10 days agocl: Add missing file
Werner Koch [Fri, 12 Oct 2018 07:05:41 +0000 (09:05 +0200)]
cl: Add missing file

--
Fixes-commit: 85d7af8ff2f6afd63701079e23f31be08d58a15d
My fault, sorry.

Signed-off-by: Werner Koch <wk@gnupg.org>
10 days agocl: Several fixes
Guillaume LE VAILLANT [Fri, 12 Oct 2018 06:49:26 +0000 (08:49 +0200)]
cl: Several fixes

--

* Use wrapper types calling translation functions instead of
  TRANSLATE-{FROM,TO}-FOREIGN methods as they seem not to be
  called in some cases.
* Use the (:STRUCT SOME-C-STRUCT) notation instead of the
  deprecated direct reference to SOME-C-STRUCT.
* Add missing values in enums and bit fields.
* Use cffi-grovel to define system types (SIZE-T, OFF-T, etc).
* Wrap GPGME-DATA-T in a class (like contexts).
* Use the FINALIZE function from trivial-garbage to free the
  C objects for contexts, keys and data automatically.
* Make DATA-READ-CB and DATA-WRITE-CB run faster.
* Update the README file.

Signed-off-by: Guillaume LE VAILLANT <glv@posteo.net>
10 days agoRegister DCO for Guillaume LE VAILLANT
Werner Koch [Fri, 12 Oct 2018 06:38:10 +0000 (08:38 +0200)]
Register DCO for Guillaume LE VAILLANT

--

12 days agobuild: Let configure create the VERSION file.
NIIBE Yutaka [Wed, 10 Oct 2018 04:39:42 +0000 (13:39 +0900)]
build: Let configure create the VERSION file.

* autogen.sh: Update from libgpg-error.
* configure.ac: Use mym4_version to create VERSION file.
* Makefile.am (dist-hook): Do not create VERSION.
(EXTRA_DIST): Add VERSION.

--

GnuPG-bug-id: 3283
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
13 days agocpp: Add KeyListMode::Locate
Andre Heinecke [Tue, 9 Oct 2018 09:26:15 +0000 (11:26 +0200)]
cpp: Add KeyListMode::Locate

* cpp/src/global.h (KeyListMode): Add Locate.

--
Similar to locate in core.

13 days agocpp: Add first manual tests
Andre Heinecke [Tue, 9 Oct 2018 09:24:18 +0000 (11:24 +0200)]
cpp: Add first manual tests

* lang/cpp/Makefile.am: Add tests subdir.
* lang/cpp/tests/Makefile.am: New.
* lang/cpp/tests/README,
lang/cpp/tests/run-getkey.cpp,
lang/cpp/tests/run-keylist.cpp: New.
* configure.ac: Configure tests makefile.

--
The autotests for c++ live in lang/qt/tests these
tests are more for manual experiments to validate some
functionality.

13 days agocore: Add trust-model flag
Andre Heinecke [Wed, 12 Sep 2018 07:42:09 +0000 (09:42 +0200)]
core: Add trust-model flag

* src/context.h (gpgme_context): Extend with trust_model.
* src/engine-gpg.c (engine_gpg): Extend with trust_model.
(gpg_set_engine_flags): Take trust_model from context.
(build_argv): Handle trust_model.
(gpg_release): Free trust_model.
* src/gpgme.c (gpgme_set_ctx_flag): Handle trust-model flag.
(gpgme_release): Release trust-model.
* doc/gpgme.texi: Document new flag for gpgme_set_ctx_flag.
(Context Flags): New subsection for the context flags.
* tests/run-keylist.c (show_usage, main): Add new --trust-model
parameter.

--
This gives a GPGME user fine grained control over the
trust-model.

Changing the trust model for only a single application depends
on:
GnuPG-Bug-Id: T4134
Maniphest Tasks: T4134
Differential Revision: https://dev.gnupg.org/D466

13 days agocpp: Initialize all gpgme_key_t's in context
Andre Heinecke [Tue, 9 Oct 2018 08:47:16 +0000 (10:47 +0200)]
cpp: Initialize all gpgme_key_t's in context

* lang/cpp/src/context.cpp (Context::startKeyListing),
(Context::keyListResult, Context::signingKeys): Initialize key.

--
"Should" not be neccessary but it's cleaner and would have
covered the case of the previous commit.

13 days agocore: Ensure r_key init in gpgme_get_key
Andre Heinecke [Tue, 9 Oct 2018 08:45:12 +0000 (10:45 +0200)]
core: Ensure r_key init in gpgme_get_key

* src/keylist.c (gpgme_get_key): Move r_key init above
the first invalid value check.

--
This fixes the case where someone passes an unitialized
r_key and no fingerprint.

13 days agoqt, tests: Add test for single get key
Andre Heinecke [Tue, 9 Oct 2018 07:37:28 +0000 (09:37 +0200)]
qt, tests: Add test for single get key

* lang/qt/tests/t-keylist.cpp (testGetKey): New.

--
Added this to check if there was a memleak in that function.

2 weeks agoPost release updates
Werner Koch [Mon, 8 Oct 2018 09:36:37 +0000 (11:36 +0200)]
Post release updates

--

2 weeks agoRelease 1.12.0 gpgme-1.12.0
Werner Koch [Mon, 8 Oct 2018 08:28:43 +0000 (10:28 +0200)]
Release 1.12.0

* configure.ac: Bump core LT version to C32/A21/R0.  Bump C++ LT
version to C14/A8/R0.

* lang/qt/tests/Makefile.am (CLEANFILES): Add reader status files.
* Makefile.am (EXTRA_DIST): Add conf/whatisthis.

Signed-off-by: Werner Koch <wk@gnupg.org>
2 weeks agobuild: Update .gitignore
Werner Koch [Fri, 5 Oct 2018 13:46:25 +0000 (15:46 +0200)]
build: Update .gitignore

--

2 weeks agocore: Apply GPGME_EXPORT_MODE_NOUID also to keyserver exports.
Werner Koch [Fri, 5 Oct 2018 13:16:53 +0000 (15:16 +0200)]
core: Apply GPGME_EXPORT_MODE_NOUID also to keyserver exports.

* src/engine-gpg.c (export_common): Add keyserver-options to the
send-keys commands.

Signed-off-by: Werner Koch <wk@gnupg.org>
2 weeks agobuild: Move config.h to conf/config.h
Werner Koch [Fri, 5 Oct 2018 13:14:58 +0000 (15:14 +0200)]
build: Move config.h to conf/config.h

* conf/: New dir.
* configure.ac (AC_CONFIG_HEADER): Move header to conf dir.
* doc/Makefile.am (mkdefsinc): Adjust rule.
* lang/python/Makefile.am (copystamp): Ditto.
--

C++ uses those stupid files without a suffix and thus the new standard
header <version> as included by newer other libc++ versions may
conflict with the VERSION file in out top directory.   This change
should solve the problem.

GnuPG-bug-id: 4168
Signed-off-by: Werner Koch <wk@gnupg.org>
2 weeks agodocs: whitespace bug
Ben McGinnes [Thu, 4 Oct 2018 16:41:45 +0000 (02:41 +1000)]
docs: whitespace bug

* Same as before, but exported.

2 weeks agodocs: org to texinfo whitspace bug
Ben McGinnes [Thu, 4 Oct 2018 16:38:14 +0000 (02:38 +1000)]
docs: org to texinfo whitspace bug

* replaced "." in headings with "·" to prevent whitspace being
  appended by texinfo and breaking git.

2 weeks agodocs: python
Ben McGinnes [Thu, 4 Oct 2018 16:30:20 +0000 (02:30 +1000)]
docs: python

* Fixed an error in the new index page and then exported to the other
  two "source" formats.

2 weeks agodocs: python
Ben McGinnes [Thu, 4 Oct 2018 15:47:56 +0000 (01:47 +1000)]
docs: python

* lang/python/doc/meta/TODO.org: Added the two major documentation
  build system tasks to the TODO list.
* Added an index page in preparation for sorting out the second of
  those TODO lists (Docutils is a lot easier to handle than Texinfo).
* Meanwhile, have confirmed that it all builds just fine under
  GNU/Linux, OS X and FreeBSD while retaining the documentation, so
  that's a nice improvement from 1.11.1.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
2 weeks agopython: makefiles
Ben McGinnes [Thu, 4 Oct 2018 11:10:46 +0000 (21:10 +1000)]
python: makefiles

* doc/Makefile.am: Removed a bit I forgot about.
* Renamed lang/python/docs to lang/python/doc bvecause apparently
  automake cares about that too.
* Decided to be extra explicit in the manifest because if I don't then
  all sorts of things get deleted ... like lang/python
* Tested on an external linux system just in case my osx workstation
  introduces too much weirdness.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
2 weeks agopython: make file
Ben McGinnes [Thu, 4 Oct 2018 08:28:47 +0000 (18:28 +1000)]
python: make file

* lang/python/Makefile.am: Attempting to remove the docs/meta
  directory did a lot worse than I thought it was doing, so better to
  just be sure the documentation is available than destroy the entire
  bindings directory.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
2 weeks agopython: make file
Ben McGinnes [Thu, 4 Oct 2018 08:11:01 +0000 (18:11 +1000)]
python: make file

* lang/python/Makefile.am: Now that gpg2 has been renamed back to gpg
  and gpg1 is semi-deprecated, we should check what the actual gpg
  binary is with gpgconf and use that rather than make assumptions per
  system.
* Also, it means less worry if gpg3 is ever a thing.  (Trust me, I
  remember the Python 1 to 2 transition as well as the current 2 to 3
  transition).  ;)

Signed-off-by: Ben McGinnes <ben@adversary.org>
2 weeks agodocs: more whitespace checks
Ben McGinnes [Wed, 3 Oct 2018 21:20:32 +0000 (07:20 +1000)]
docs: more whitespace checks

* lang/python/docs/texinfo/short-history.texi:

2 weeks agodpcs: python howto
Ben McGinnes [Wed, 3 Oct 2018 21:09:40 +0000 (07:09 +1000)]
dpcs: python howto

* More updates to the docs themselves and the versions to be available
  with the next release.
* .texi and .rst copies of the HOWTO and the short history of (this
  part) of the project.

2 weeks agodocs: python
Ben McGinnes [Wed, 3 Oct 2018 21:06:57 +0000 (07:06 +1000)]
docs: python

* More restructuring.  Also the painstaking task of deciphering some
  of the more eclectic aspects of Texinfo and make.

2 weeks agodocs: python bindings
Ben McGinnes [Wed, 3 Oct 2018 20:57:51 +0000 (06:57 +1000)]
docs: python bindings

* Restructured the docs directory to account for the GNU preferred
  source doc format (.texi) and the Python preferred source doc
  format (.rst) and the real source doc format (.org).
* Both the perceived source formats will need to be generated from the
  .org files and included at this stage.  Unfortunately there is not
  yet a native org-to-rst transformation method in the org-mode
  software in Emacs nor is there a a direct means of going from reST
  to Org-mode from Docutils.  There's only third party packages like
  Pandoc and, while very good, there is no guarantee of consistency;
  so we can't entirely automate this bit (yet).

2 weeks agodocs: pre-python preparation
Ben McGinnes [Wed, 3 Oct 2018 15:42:12 +0000 (01:42 +1000)]
docs: pre-python preparation

* doc/Makefile.am: removed the python howto from this file, restoring
  it to just the main project and the newer .js files.
* deleted: doc/gpgme-python-howto.texi
* renamed the Short_History.org file to short-history.org to keep the
  naming conventions similar.
* All the Python files can (and should) live together.

2 weeks agopython bindings: CPython order
Ben McGinnes [Tue, 2 Oct 2018 20:58:51 +0000 (06:58 +1000)]
python bindings: CPython order

* Changed the order of python versions the configure/make process
  checks for, placing Python 3.7 ahead of 3.6.
* Updated the HOWTO documentation to reflect this change.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
2 weeks agocore: add experimental GPGME_EXPORT_MODE_NOUID.
Werner Koch [Tue, 2 Oct 2018 09:18:00 +0000 (11:18 +0200)]
core: add experimental GPGME_EXPORT_MODE_NOUID.

* src/gpgme.h.in (GPGME_EXPORT_MODE_NOUID): New.
* src/export.c (export_start): Adjust option check.
* src/engine-gpg.c (export_common): Implement option.

Signed-off-by: Werner Koch <wk@gnupg.org>
3 weeks agodocs: python bindings
Ben McGinnes [Sun, 30 Sep 2018 16:10:03 +0000 (02:10 +1000)]
docs: python bindings

* Tightened up the docs a little bit, updated the "what's new"
  section, dropped the "-draft" version in preparation for GPGME
  1.12.0's release.
* Exported another .texi version (and updated the draft copies to this
  commit (which ought to be 1.11.1-beta313).

Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agopython bindings: fixing decrypt-verify
Ben McGinnes [Sun, 30 Sep 2018 09:32:45 +0000 (19:32 +1000)]
python bindings: fixing decrypt-verify

* lang/python/src/core.py: First restoring the exception to the being
  just that.
* The means to manipulate the error output is temporarily in commented
  out code, but ought to be added to a proper test later.
* In the mean time the original test, with a very slight change, works
  again.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agopython bindings: ctx.decrypt
Ben McGinnes [Sun, 30 Sep 2018 06:28:54 +0000 (16:28 +1000)]
python bindings: ctx.decrypt

* lang/python/src/core.py: Fixed methods of detecting whether verify
  is a boolean variable or a list.
* Added methods of catching the missing keys exceptions.
* Still retained PEP8 compliance (which might have been where one or
  two problems crept in).
* Though this is essentially the correct behaviour, it still does not
  quite fit the otiginal test; so that will also require some adjustment.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agoexample: local signatures
Ben McGinnes [Thu, 27 Sep 2018 13:23:37 +0000 (23:23 +1000)]
example: local signatures

* lang/python/examples/howto/local-sign-group.py: added the bit where
  specifying the signing key is actually used for signing rather than
  just pruning the list of keys to certify.

Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agoexample: python bindings
Ben McGinnes [Thu, 27 Sep 2018 12:45:37 +0000 (22:45 +1000)]
example: python bindings

* lang/python/examples/howto/local-sign-group.py: locally sign every
  key in a group line except one's own keys.  Intended to address the
  sort of thing one might see on lists like PGPNET or other closed
  groups amongst activists, journalists, etc. where everyone encrypts
  to all recipients, but may not sign everyone's keys publicly..

Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agodocs: python bindings installation
Ben McGinnes [Thu, 27 Sep 2018 04:06:48 +0000 (14:06 +1000)]
docs: python bindings installation

* lang/python/docs/gpgme-python-howto.org: added a section on
  installing the bindings to a python virtualenv.

3 weeks agotests: python bindings
Ben McGinnes [Thu, 27 Sep 2018 00:07:08 +0000 (10:07 +1000)]
tests: python bindings

* Fixed the final assertion to look for what will actually be reported
  in that case instead of something else (i.e. it looks for an
  IMPORT_ERROR status code).

3 weeks agoexamples: python bindings
Ben McGinnes [Wed, 26 Sep 2018 23:57:50 +0000 (09:57 +1000)]
examples: python bindings

* Fixed homedir specifying logic in several cases.

3 weeks agodocs: a typographical two-step
Ben McGinnes [Tue, 25 Sep 2018 00:17:39 +0000 (10:17 +1000)]
docs: a typographical two-step

* Sometimes you really do need or want punctuation in a heading, but
  ideally without something else generating whitespace and other
  annoyances to go with it.
* Trying a real decimal point instead.

Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agodocs and examples: python bindings
Ben McGinnes [Mon, 24 Sep 2018 23:59:31 +0000 (09:59 +1000)]
docs and examples: python bindings

* Woumd up the "what's new" section.
* Added an example for sending a key to the keyservers via hkp4py.
* Updated the export key code to use a more complete check for the
  $GNUPGHOME location.
* Expanded on the installation and reinstallation troubleshooting
  section.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
3 weeks agodocs: python bindings howto
Ben McGinnes [Mon, 24 Sep 2018 18:32:13 +0000 (04:32 +1000)]
docs: python bindings howto

* Added a What's New section to summarise changes since the last
  release.  There have been quite a few and some attention does need
  to be drawn to some of them.
* Confirming certain issues with some platform builds, especially
  BSD/OSX vs. Linux issues which will need to update the installation
  troubleshooting guides.

4 weeks agodocs and examples: python bindings howto
Ben McGinnes [Sun, 23 Sep 2018 09:36:54 +0000 (19:36 +1000)]
docs and examples: python bindings howto

* Added more comprehensive examples using hkp4py and added a couple
  more example scripts for protonmail.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
4 weeks agoexamples: python bindings and hkp4py updates
Ben McGinnes [Sun, 23 Sep 2018 01:43:34 +0000 (11:43 +1000)]
examples: python bindings and hkp4py updates

* Mostly tightening up the details on the hkp4py example script.
* Also fixed a typo in the LGPL boiler plate text included in all the
  other example scripts for the HOWTO.

4 weeks agopython bindings: importing from keyservers with hkp4py
Ben McGinnes [Sat, 22 Sep 2018 22:18:44 +0000 (08:18 +1000)]
python bindings: importing from keyservers with hkp4py

* added a new example script to search the keyservers and import the
  results, this time using Marcel Fest's hkp4py module.
* Updated the key importing section to match this addition.
* Tested with the current version of hkp4py from github.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
4 weeks agodocs: python bindings howto
Ben McGinnes [Sat, 22 Sep 2018 19:37:40 +0000 (05:37 +1000)]
docs: python bindings howto

* Confirmed that updates to the tests have significant'y improved that
  output.
* Updated some of the additional notes for the section on hkp4py.
** This is in anticipation adding at least import examples using that
   module as well.  It may also include adding examples of exporting a
   key and uploading it to the keyservers.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
4 weeks agopython: Fix a couple of syntax errors.
Werner Koch [Thu, 20 Sep 2018 15:30:48 +0000 (17:30 +0200)]
python: Fix a couple of syntax errors.

* lang/python/tests/t-keylist-from-data.py: Add missing line
continuation.
* lang/python/tests/t-keylist.py: Ditto.
* lang/python/tests/t-quick-key-creation.py: Ditto.
* lang/python/tests/t-quick-subkey-creation.py: Ditto.

Signed-off-by: Werner Koch <wk@gnupg.org>
4 weeks agopython: Silence a few warnings.
Werner Koch [Thu, 20 Sep 2018 15:28:25 +0000 (17:28 +0200)]
python: Silence a few warnings.

* src/gpgme.h.in: Obsolete "class" also for Python.
* lang/python/gpgme.i: Silenece a swig warning.  Silence a gcc
warning.

Signed-off-by: Werner Koch <wk@gnupg.org>
4 weeks agojs: renamed keygen algo option
Maximilian Krambach [Thu, 20 Sep 2018 13:46:03 +0000 (15:46 +0200)]
js: renamed keygen algo option

--

* src/Keyring.js: Confused default-future with future-default

* reverts commit 34be6163f6c1057e2a87705925a9d0c70e4ecf17

4 weeks agopython: Fix regression in the test suite.
Werner Koch [Thu, 20 Sep 2018 09:58:02 +0000 (11:58 +0200)]
python: Fix regression in the test suite.

* lang/python/tests/Makefile.am (GNUPGHOME): Remove stray backslash.
--

Fixes-commit: d09d19fa9fe1e81dd819b32208b4bd09f83e3918
Signed-off-by: Werner Koch <wk@gnupg.org>
4 weeks agotests: Don't try using keys from a scmartcard.
Werner Koch [Wed, 19 Sep 2018 15:28:29 +0000 (17:28 +0200)]
tests: Don't try using keys from a scmartcard.

* tests/gpg/Makefile.am: Disable scdaemon
* lang/python/tests/Makefile.am: Ditto.

Signed-off-by: Werner Koch <wk@gnupg.org>
4 weeks agodocs: python bindings and its special request
Ben McGinnes [Thu, 20 Sep 2018 01:38:20 +0000 (11:38 +1000)]
docs: python bindings and its special request

* 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>
4 weeks agojs: add 'default-future' as createKey option
Maximilian Krambach [Wed, 19 Sep 2018 15:54:59 +0000 (17:54 +0200)]
js: add 'default-future' as createKey option

--
* src/Keyring.js: default-future can be used now for key creation as
  algo.

4 weeks agojson: Remove subkey-algo from createkey command.
Werner Koch [Wed, 19 Sep 2018 09:51:31 +0000 (11:51 +0200)]
json: Remove subkey-algo from createkey command.

* src/gpgme-json.c (op_createkey): Remove subkey-algo param.
(GPG_AGENT_ALLOWS_KEYGEN_TRHOUGH_BROWSER): Fix typo.
* lang/js/src/Keyring.js: Remove subkey-algo support.
* lang/js/src/permittedOperations.js: Ditto.
--

We do not want to expose details of the protocol's key generation and
thus the subkey-algo does not make sense.  Right now we support only
the default and future-default algorithms.  A user can configure them
anyway using new-default-key-algo in gpg.conf.  Eventually we may
officially support a more flexible way of creating special structured
OpenPGP keys but right now that is not part of the API.

Signed-off-by: Werner Koch <wk@gnupg.org>
4 weeks agojs: add configuration option on startup
Maximilian Krambach [Wed, 19 Sep 2018 08:56:36 +0000 (10:56 +0200)]
js: add configuration option on startup

--

* src/index.js: Added an optional configuration object for the startup.

* configuration: timeout - the initial check for a connection ran into
  timeouts on slower testing machines. 500ms for initial startup is
  not sufficient everywhere. The default timeout was raised to 1000ms,
  and as an option this timeout can be increased even further.

* BrowsertestExtension: Set the initial connection timeouts to 2
  seconds, to be able to test on slower machines.

4 weeks agodocs: python bindings
Ben McGinnes [Mon, 17 Sep 2018 22:32:30 +0000 (08:32 +1000)]
docs: python bindings

* Updated the Cython example code slightly, along with the
  corresponding explanation.

5 weeks agodocs: python bindings howto
Ben McGinnes [Mon, 17 Sep 2018 04:33:02 +0000 (14:33 +1000)]
docs: python bindings howto

* Tightened up the Cython demonstration.

5 weeks agodocs: cython sanitized
Ben McGinnes [Sun, 16 Sep 2018 03:58:34 +0000 (13:58 +1000)]
docs: cython sanitized

* Sanitized the shell command examples of extraneous whitespace.
* Removed keycount.c as sanitising it is pointless and it will be
  generated by Cython when the example is followed.
* Regenerated the .texi version.

5 weeks agodocs: python bindings howto
Ben McGinnes [Sun, 16 Sep 2018 03:48:12 +0000 (13:48 +1000)]
docs: python bindings howto

* Added new advanced section with an example of using the Python
  bindings with CPython code compiled back to C code using Cython.
* Though it may seem a bit counter-intuitive to use the bindings just
  to go back to C via a different route, this is not actually stupid.
* Added examples/howto/advanced/cython/ directory.
* Added keycount.pyx, setup.py and the keycount.c file which the first
  two generated with Cython.  Not including the .so and .o files from
  the build.
* Exported the .texi version of the howto for the main docs.

5 weeks agodocs: even more edits
Ben McGinnes [Sun, 16 Sep 2018 01:06:32 +0000 (11:06 +1000)]
docs: even more edits

* doc/gpgme-python-howto.texi: hunting down and killing commas,
  Oxford or not it can't stay in a heading.

5 weeks agodocs: more edits
Ben McGinnes [Sun, 16 Sep 2018 00:52:30 +0000 (10:52 +1000)]
docs: more edits

* lang/python/docs/gpgme-python-howto.org: more tweaks and edits,
  along with another build of output formats.
* doc/gpgme-python-howto.texi: updated texinfo version for parent docs.

5 weeks agodocs: whitespace culled
Ben McGinnes [Sat, 15 Sep 2018 23:47:05 +0000 (09:47 +1000)]
docs: whitespace culled

* lang/python/docs/gpgme-python-howto.org: Identified and fixed the
  headings which kept generating lines with trailing whitespace when
  exporting to Texinfo format and adjusted them to prevent that.

5 weeks agodocs: renaming and drafts
Ben McGinnes [Sat, 15 Sep 2018 22:36:10 +0000 (08:36 +1000)]
docs: renaming and drafts

* lang/python/docs/gpgme-python-howto.org: Renamed file to better fit
  the rest of the project's docs.
* Added a section on the very unofficial drafts I periodically post
  links to since they're often the easiest way to get a web version in
  front of someone in a hurry.

5 weeks agodocs: python howto texinfo update
Ben McGinnes [Sat, 15 Sep 2018 20:42:35 +0000 (06:42 +1000)]
docs: python howto texinfo update

* doc/gpgme-python-howto.texi:

5 weeks agodocs: Python howto update
Ben McGinnes [Sat, 15 Sep 2018 20:35:02 +0000 (06:35 +1000)]
docs: Python howto update

* lang/python/docs/GPGMEpythonHOWTOen.org: Added corresponding GPGME
  version number to table at the start and cut the shortcut from the
  groups.py example.
* doc/gpgme-python-howto.texi: New export of Texinfo file for docs
  build.

5 weeks agodocs: generated whitespace
Ben McGinnes [Sat, 15 Sep 2018 19:02:44 +0000 (05:02 +1000)]
docs: generated whitespace

* doc/gpgme-python-howto.texi: culled whitespace included with the
  org-mode export.

5 weeks agoDocs: including howto with standard docs
Ben McGinnes [Sat, 15 Sep 2018 18:55:33 +0000 (04:55 +1000)]
Docs: including howto with standard docs

* gpgme.spec.in: Added gpgme-python-howto.info build on the grounds
  that it now deals with certain possible installation issues and end
  users encountering them would want the docs to hand.
* doc/gpgme.texi: updated the copyright year to this year.

5 weeks agoDocs: Python bindings HOWTO
Ben McGinnes [Sat, 15 Sep 2018 18:04:13 +0000 (04:04 +1000)]
Docs: Python bindings HOWTO

* Added doc/gpgme-python-howto.texi: generated from
  GPGMEpythonHOWTOen.org and then slightly modified so the generated
  Info file doesn't use camelCase.
* doc/Makefile.am: Updated makefile to include the Python HOWTO with
  gpgme_TEXINFOS and to export the generated files to the webserver
  along with the main GPGME one.

5 weeks agoPython bindings: docs
Ben McGinnes [Sat, 15 Sep 2018 17:36:14 +0000 (03:36 +1000)]
Python bindings: docs

* lang/python/docs/GPGMEpythonHOWTOen.org: Fixed a few errors in the
  newer sections.
* Updated code in the examples using secret key exporting and group
  lines to reflect the Python 2.7 compatibility fixes added.

5 weeks agoPython bindings: examples
Ben McGinnes [Sat, 15 Sep 2018 17:34:36 +0000 (03:34 +1000)]
Python bindings: examples

* lang/python/examples/howto/export-secret-keys.py and groups.py:
  Updated the backwards compatibility adjustments to account for
  unicode differences between python 2 and 3.

5 weeks agoPython examples: backwards compatibility
Ben McGinnes [Sat, 15 Sep 2018 02:10:05 +0000 (12:10 +1000)]
Python examples: backwards compatibility

* lang/python/examples/howto/groups.py: subprocess update
* lang/python/examples/howto/export-secret-keys.py: subprocess update

  Both of these try the nice and easy method of getting the subprocess
  output available in Python 3, but will fall back to the older Popen
  method if it doesn't work.  Essentially this is to be a little nicer
  to Python 2.7.15 (even though the examples are filled with warnings
  that py2 support is not guaranteed with the examples).

6 weeks agojs: Fix errorDetails of GPGME_Signature
Thomas Oberndörfer [Mon, 10 Sep 2018 11:11:48 +0000 (13:11 +0200)]
js: Fix errorDetails of GPGME_Signature

* lang/js/src/Signature.js (GPGME_Signature.errorDetails):
Access properties from the summary object.

6 weeks agoestreams revised
Ben McGinnes [Sat, 8 Sep 2018 04:45:37 +0000 (14:45 +1000)]
estreams revised

* Egon Spengler was right, crossing the streams is bad.
* Restored both src/gpgme.def and src/libgpgme.vers to use the
  estreams symbols without the leading underscore.
* The new_from_estream() function added to lang/python/src/core.py and
  set to alias the new_from_stream() function remains.
* Opted for the solution favouring Linux onthree main grounds:
  1. Andre reported major problems with Windows as well, so the number
     of potentially affected systems would vastly increase.
  2. All the BSDs and OS X have spent far more time and development
     work in order to accommodate the eccentricities of both Microsoft
     and the GNU Project (ref. GCC), so they're more likely to be able
     to cope with doing so again than the other way around.
  3. If I really have to I can write a custom installer for OS X to
     try this and, if it fails, to then patch the two symbol entries and
     recompile from scratch.  That said, I may not have to since it
     actually behaved during the most recent tests for this
     commit; into ten separate CPython installations and all five
     supported versions (standard source installs and OS X Framework
     installs for each version).

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
6 weeks agojs: add new documentation file to extra_dist
Maximilian Krambach [Thu, 6 Sep 2018 09:27:39 +0000 (11:27 +0200)]
js: add new documentation file to extra_dist

--
* jsdoc_index.md is the documentation's 'main page' to offer a better
  intro than only the parser-generated API confusion.

6 weeks agojs: fix error in toKeyIdArray
Maximilian Krambach [Thu, 6 Sep 2018 08:11:10 +0000 (10:11 +0200)]
js: fix error in toKeyIdArray

--
* src/Helpers.js: GPGME_Keys were not parsed as valid, as their
  fingerprint getter is not a fingerprint 'property'.

* BrowserTestExtension: fixed a dsplay typo in counting of tests.

6 weeks agojs: documentation cleanup
Maximilian Krambach [Wed, 5 Sep 2018 16:46:28 +0000 (18:46 +0200)]
js: documentation cleanup

--

7 weeks agoestreams symbols for python bindings
Ben McGinnes [Sun, 2 Sep 2018 09:07:18 +0000 (19:07 +1000)]
estreams symbols for python bindings

* It turns out that even though some platforms detect differing
  symbols for estreams, the two types do not appear to be in
  conflict.  At least they don't from the BSD/OS X side of things.
  As a consequence both versions are now included.

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
7 weeks agojs: key deletion after test
Maximilian Krambach [Fri, 31 Aug 2018 13:24:38 +0000 (15:24 +0200)]
js: key deletion after test

--

* Yet again some wrong syntax in Browsertests

7 weeks agojs: cleanup after key import test
Maximilian Krambach [Fri, 31 Aug 2018 08:35:35 +0000 (10:35 +0200)]
js: cleanup after key import test

--

* one of the public Keys imported was not removed afterwards.

7 weeks agodocs: python bindings
Ben McGinnes [Fri, 31 Aug 2018 07:36:45 +0000 (17:36 +1000)]
docs: python bindings

* minor typographic update.

Signed-off-by: Ben McGinnes <ben@adversary.org>
7 weeks agojs: tests for file name encoding
Maximilian Krambach [Thu, 30 Aug 2018 14:16:13 +0000 (16:16 +0200)]
js: tests for file name encoding

--

* BrowsertestExtension/tests/decryptTest.js: There were cases in which
  file names returned in a wrong encoding from decryption. The test
  cases here are a  'Hello World' in a text file with different names,
  then being encrypted with cli gnupg.

7 weeks agojs: decoding of information
Maximilian Krambach [Thu, 30 Aug 2018 13:37:37 +0000 (15:37 +0200)]
js: decoding of information

--

* src/Helpers.js: This additional escape should 'repair' special
  characters like spaces in filenames. In the strange world of
  encoding there is little hope that this captures all cases, or
  that it will never fail to return some value, let alone meaningful.
  In my test cases it worked.

7 weeks agojs: add tests
Maximilian Krambach [Thu, 30 Aug 2018 13:00:19 +0000 (15:00 +0200)]
js: add tests

--

* BrowserTestExtension/tests:

  - decryptTest.js: Check Decryption and return values of binary data
  - encryptTest.js: Return data type of armored/non-armored encryption
  - added a small encoded input png for testing

* DemoExtension/maindemo.js: Fixed unexpected usage of the Demo encrypt
  (non-armored)

7 weeks agojs: add encoding parameter for encrypt return
Maximilian Krambach [Thu, 30 Aug 2018 12:46:54 +0000 (14:46 +0200)]
js: add encoding parameter for encrypt return

--

* src/gpgme.js: In case the encryption was done unarmored, the result
  is binary data. Added an option to either return the binary data as
  base64-encoded string or as Uint8Array, similar to return values of
  decrypt

7 weeks agojs: separate gpgme answer by type of data
Maximilian Krambach [Thu, 30 Aug 2018 10:04:50 +0000 (12:04 +0200)]
js: separate gpgme answer by type of data

--

* src/Connection.js; src/permittedOperations.js: To avoid further
  encoding problems, data sent by gpgme is now sorted  as either
  'payload' or 'info'. Payload data may come in any encoding, and here
  the 'expected' and 'format' options are used, 'info' data may
  contain text created by gnupg which may need re-encoding, but this
  should not be affected by 'expected' and 'format'

7 weeks agopython bindings: estreams fix ben/estreams-fix
Ben McGinnes [Thu, 30 Aug 2018 05:41:31 +0000 (15:41 +1000)]
python bindings: estreams fix

* lang/python/src/core.py: Adjusted new_from_estream function to alias
  new_from_stream instead of fd.
* fixed the _gpgme import errors introduced in commit
  08cd34afb762975b0273575035dacf69449ef241 by changing the exported
  functions/types to match the inner module where all the work is
  done, rather than the outer one(s).

Tested-by: Ben McGinnes <ben@adversary.org>
Signed-off-by: Ben McGinnes <ben@adversary.org>
7 weeks agojs: return base64 after encrypt with armor=false
Maximilian Krambach [Wed, 29 Aug 2018 15:45:55 +0000 (17:45 +0200)]
js: return base64 after encrypt with armor=false

--

* src/gpgmejs.js/encrypt: the encrypted data were converted back to a
  (incorrect) string, whereas they should be data with no encoding
  specified. Returning base64 data is the expected way.
* DemoExtension: caught yet another usage of old syntax.

7 weeks agopython bindings: core
Ben McGinnes [Wed, 29 Aug 2018 14:57:24 +0000 (00:57 +1000)]
python bindings: core

* lang/python/src/core.py: expanded gpgme_error check lists.

7 weeks agopython bindings: core
Ben McGinnes [Wed, 29 Aug 2018 12:28:53 +0000 (22:28 +1000)]
python bindings: core

* lang/python/src/core.py: added gpgme_data_set_flag to the errorcheck
  funtion.

7 weeks agopython bindings: core
Ben McGinnes [Wed, 29 Aug 2018 12:03:06 +0000 (22:03 +1000)]
python bindings: core

* lang/python/src/core.py: added new function new_from_estream to wrap
  new_from_fd just like new_from_stream does and for the same reason.

7 weeks agojson: Fix detached verify
Andre Heinecke [Wed, 29 Aug 2018 12:32:36 +0000 (14:32 +0200)]
json: Fix detached verify

* src/gpgme-json.c (op_verify): Only create output and
use it for clearsigned and opaque signed.

--
Just passing output to gpgme_op_verify changes the behavior to
no longer do a verify of the signature.