gpgme.git
7 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>
7 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>
7 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>
7 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>
7 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>
7 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>
8 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.

8 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).

8 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.

8 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>
8 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>
8 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.

8 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>
8 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.

8 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>
8 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>
2 months 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>
2 months 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>
2 months 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

2 months 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>
2 months 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>
2 months 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>
2 months 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.

2 months 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>
2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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:

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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).

2 months 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.

2 months 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>
2 months 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.

2 months 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.

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

--

2 months 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>
2 months 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

2 months 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.

2 months 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>
2 months 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.

2 months 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.

2 months 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)

2 months 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

2 months 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'

2 months 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>
2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months agodocs: python bindings - protonmail examples
Ben McGinnes [Wed, 29 Aug 2018 10:30:57 +0000 (20:30 +1000)]
docs: python bindings - protonmail examples

* lang/python/docs/GPGMEpythonHOWTOen.org: Updated links to the
  ProtonMail keyserver import scripts and added a warning regarding
  being unable to update third party keys.
* lang/python/examples/howto/pmkey-import-alt.py: added usage.
* lang/python/examples/howto/pmkey-import.py: added usage.

2 months agoMerge branch 'master' of ssh+git://playfair.gnupg.org/git/gpgme
Ben McGinnes [Tue, 28 Aug 2018 18:16:37 +0000 (04:16 +1000)]
Merge branch 'master' of ssh+git://playfair.gnupg.org/git/gpgme

2 months agodocs: python bindings HOWTO
Ben McGinnes [Tue, 28 Aug 2018 18:14:24 +0000 (04:14 +1000)]
docs: python bindings HOWTO

* Finished CFFI vs SWIG bit in known issues.
* tidied up some of the structure.
* Fixed some minor errors and links.

2 months agodocs: python bindings
Ben McGinnes [Tue, 28 Aug 2018 17:42:46 +0000 (03:42 +1000)]
docs: python bindings

* Added section on why no CFFI.

2 months agodocs: python howto
Ben McGinnes [Tue, 28 Aug 2018 08:45:37 +0000 (18:45 +1000)]
docs: python howto

* Added another key import example using ProtonMail's new keyserver.

2 months agojson: Delete primary key if subkey gen fails
Andre Heinecke [Tue, 28 Aug 2018 06:35:06 +0000 (08:35 +0200)]
json: Delete primary key if subkey gen fails

* src/gpgme-json.c (op_delete): Delete primary key on
subkey gen error.

--
This can happen for example if the user cancels the
pinentry to unlock the primary key when adding the
subkey.  To avoid an artifact of a pimary key without
an encryption capable subkey we delete the created
key and treat the whole operation as failed.

2 months agojson: Allow NULL request in encode and chunk
Andre Heinecke [Tue, 28 Aug 2018 06:05:30 +0000 (08:05 +0200)]
json: Allow NULL request in encode and chunk

* src/gpgme-json.c (encode_and_chunk): Don't error on NULL
request.

--
This fixes the error that is passed when parthing the json
object failed and request would be NULL.
Instead of the JSON parser error it would otherwise report
that encode and chunk failed.

2 months agodocs: python bindings
Ben McGinnes [Mon, 27 Aug 2018 20:42:27 +0000 (06:42 +1000)]
docs: python bindings

* Added details on installation troubleshooting.

2 months agojs: small documentation update
Maximilian Krambach [Mon, 27 Aug 2018 11:24:18 +0000 (13:24 +0200)]
js: small documentation update

--

2 months agojs: make non-payload data more encoding-tolerant
Maximilian Krambach [Mon, 27 Aug 2018 11:00:50 +0000 (13:00 +0200)]
js: make non-payload data more encoding-tolerant

--

* src/Helpers.js: As non-payload data might come in different
  encodings, a conversion has been introduced that worked in most
  cases. Data like the userid might come in different encodings,
  which we don't know of. For now, a try..catch returns the data
  as they are if the utf-8 decoding fails. Sometimes this yields the
  correct result, sometimes it may not work, but it won't stop the
  whole operation anymore.

2 months agojs: typecheck destructured parameters
Maximilian Krambach [Mon, 27 Aug 2018 10:32:28 +0000 (12:32 +0200)]
js: typecheck destructured parameters

--

* destructuring just takes the input argument and treats it as object.
  In cases like in src/Keyring/generateKey, where I forgot to change
  the old syntax, the fingerprint as string was destructured into an
  object without "pattern", which caused all Keys to be retrieved.
  So, methods with a destructuring now check if the first argument is
  an object and get a default empty object if no parameter is
  submitted. This allows the further use of destructured parameters,
  while still ensuring nothing vastly incorrect is used.
* src/Kering.js, unittsets.js: fixed old syntax in method usage

2 months agojson: Do not put FILE_NAME into the verify result.
Werner Koch [Mon, 27 Aug 2018 09:42:27 +0000 (11:42 +0200)]
json: Do not put FILE_NAME into the verify result.

* src/gpgme-json.c (verify_result_to_json): Remove "file_name".
--

Having the file name in the verify result may lead developers to
assume that the file name is covered by the signature.  This is not
the case and can easily be checked by hex-editing a signed message.
We better don't output it at all.

The same is true for the is_mime flag but that is anyway only an
advisory and I can't see damage from a faulty one.

Note that we keep file_name in gpgme's output for ABI stability and
because some tools want to display meta information even if they are
subject to tampering.  This is similar to the non-encrypted subject in
mails.

Signed-off-by: Werner Koch <wk@gnupg.org>
2 months agodoc: Add warning that FILE_NAME is not part of the signed data.
Werner Koch [Mon, 27 Aug 2018 09:34:30 +0000 (11:34 +0200)]
doc: Add warning that FILE_NAME is not part of the signed data.

--

2 months agojs: extend information on decoding in decrypt
Maximilian Krambach [Mon, 27 Aug 2018 09:50:09 +0000 (11:50 +0200)]
js: extend information on decoding in decrypt

--

* src/Connection.js: resulting data, if not pure ascii, is base64
  encoded in the result message. A further decoding attempt into
  javascript 'string' will be attempted by default, unless specified
  at the decrypt() method. The return value 'format' now shows which
  of the possibilities has been applied. The old boolean 'base64'
  now turns into format:'base64' if the returned payload is a base64
  string after decryption.

2 months agojs: fix file_name return on decrypt
Maximilian Krambach [Mon, 27 Aug 2018 09:21:02 +0000 (11:21 +0200)]
js: fix file_name return on decrypt

--
* src/gpgmejs: Line 228 checked the wrong variable. To avoid further
  confusion, _result was renamed to returnValue in the whole file

2 months agocore: Export gpgme_data_new_from_estream function.
Jasper Spaans [Mon, 27 Aug 2018 07:04:16 +0000 (09:04 +0200)]
core: Export gpgme_data_new_from_estream function.

Signed-off-by: Werner Koch <wk@gnupg.org>
2 months agojs: add new options to permittedOperations
Maximilian Krambach [Fri, 24 Aug 2018 08:33:42 +0000 (10:33 +0200)]
js: add new options to permittedOperations

--

* reflecting the new optional strings accepted by the backend.
  'file_name' and 'sender' can be  used via the 'additional'
  parameter in encrypt operations

2 months agojson: Add sender and file name to encrypt
Andre Heinecke [Thu, 23 Aug 2018 18:49:26 +0000 (20:49 +0200)]
json: Add sender and file name to encrypt

* src/gpgme-json.c (hlp_encrypt, op_encrypt): Support sender
and file_name.

2 months agojs: fix syntax inside Keyring methods
Maximilian Krambach [Thu, 23 Aug 2018 15:55:35 +0000 (17:55 +0200)]
js: fix syntax inside Keyring methods

--

* recent changes in parameter calling led to a forgotten internal call
  in getDefaultKey using old syntax (and failing in case a default key
  is configured)

2 months agojs: offer an always-trust parameter on encrypt
Maximilian Krambach [Thu, 23 Aug 2018 10:30:49 +0000 (12:30 +0200)]
js: offer an always-trust parameter on encrypt

--

* src/gpgmejs.js: Setting the default to 'always trust' assumes that
  most api users will already have made their internal checks, but may
  not have the gnupg web-of-trust model implemented, thus trusting the
  key themselves, without gnupg having full or even any information.
  Still it should stay an option to have gnupg decide.

2 months agojs: use destructured option parameters
Maximilian Krambach [Thu, 23 Aug 2018 10:15:59 +0000 (12:15 +0200)]
js: use destructured option parameters

--
* Adds to f0409bbdafcbd4f8b0be099a6b3ce0d5352c9bcd and makes use of
  destructuring, allowing for defaults, and cleaning up the
  validation.

2 months agojs: update getDefaultKey to more precise logic
Maximilian Krambach [Thu, 23 Aug 2018 09:28:18 +0000 (11:28 +0200)]
js: update getDefaultKey to more precise logic

--

* src/Keyring.js: Adapted Keyring.getDefaultKey() to my current
  understanding  of a default signing key: either the default key set
  in the gpg config, or 'the first usable private key' - usability
  meaning  'not invalid, expired, revoked, and can be used for
  signing'. It should be the same key used as in command line when
  doing a --sign operation.
  In case the user has a smartcard plugged in, we currently
  won't know of this here, so our choice may differ. But as we do all
  javascript-binding sign operations with the key  fingerprint
  explicitly set, this should not be a real problem. This method is
  seen more as a convenience to tell using librarys which key
  represents the main user.

3 months agojs: add decrypt result options
Maximilian Krambach [Wed, 22 Aug 2018 17:07:05 +0000 (19:07 +0200)]
js: add decrypt result options

--

* As a decrypt result cannot be known beforehand, the decrypt operation
  may add an 'expect' property, taking either 'uint8' or 'base64',
  which will return the decrypted data in the appropiate formats.
  the return property 'format' will give a feedback on which option
  was taken.
  A test was added to reflect these changes.

3 months agojs: make method parameters objects
Maximilian Krambach [Wed, 22 Aug 2018 16:37:46 +0000 (18:37 +0200)]
js: make method parameters objects

--

* As requested by using parties, the options to be passed into the
  methods are now objects, with the objects' properties better
  describing what they do, and to avoid the need to type several nulls
  in a method call if one wants the last parameter.
  - src/Keyring.js, src/gpgme.js: Changed parameters and their
    validations
  - BrowserTest/*.js Had to adapt quite some calls to the new format

3 months agojs: improve decryption performance
Maximilian Krambach [Wed, 22 Aug 2018 14:32:31 +0000 (16:32 +0200)]
js: improve decryption performance

--
* src/Connection.js, src/Helpers.js: performance of decoding incoming
  base64 data was improved to about 4 times the speed by introducing
  two more efficient functions (thanks to rrenkert@intevation.de for
  finding and testing them)

* src/gpgmejs.js: Decrypted data will now return as Uint8Array, if the
  caller does not wish for a decoding. Decoding binary data will return
  invalid data, and a Uint8Array may be desired. This can be indicated
  by using the (new) 'binary' option in decrypt.

* src/Errors.js A new error in case this decoding fails

* src/Message.js, src/Connection.js: expected is change from base64
  to binary, to avoid confusion later on.

3 months agojs: Return error if signature has no fingerprint
Maximilian Krambach [Wed, 22 Aug 2018 12:49:11 +0000 (14:49 +0200)]
js: Return error if signature has no fingerprint

--

* src/Signature.js/get fingerprint: A signature with no fingerprint
  should not happen, but if it does, we should throw an error here,
  as the method is a getter.

3 months agoMerge branch 'javascript-binding'
Andre Heinecke [Wed, 22 Aug 2018 11:15:35 +0000 (13:15 +0200)]
Merge branch 'javascript-binding'

This adds a new language binding "gpgme.js" to GPGME. It
serves as a bridge between the native-messaging service "gpgme-json"
and JavaScript Applications.

The first user of this binding will be Mailvelope which will
see GnuPG integration in the near future.

GnuPG-Bug-Id: T4107

3 months agojs: changed verify signature result infos javascript-binding
Maximilian Krambach [Wed, 22 Aug 2018 10:44:05 +0000 (12:44 +0200)]
js: changed verify signature result infos

--

* the resulting information of verify now are as documented,
  and the same as in a decrypt callback

3 months agojs: throw errors in sync functions
Maximilian Krambach [Wed, 22 Aug 2018 10:18:55 +0000 (12:18 +0200)]
js: throw errors in sync functions

--

* synchronous functions should throw errors if something goes wrong,
  Promises should reject. This commit changes some error cases that
  returned Error objects instead of throwing them

  - src/Key.js: createKey() and sync Key.get() throw errors
  - src/Error.js: Exporting the list of errors to be able to test and
    compare against these strings
  - src/Keyring.js: Setting a null value in pattern is not useful, and
    now caused an error with the new changes.
  - src/Message.js: createMessage and Message.setParameter now throw
    errors

3 months agojs: update decrypt/verify results
Maximilian Krambach [Tue, 21 Aug 2018 13:26:17 +0000 (15:26 +0200)]
js: update decrypt/verify results

--

* src/gpgmejs.js: Decrypt now parses additional optional dec_info
  information, as well as any verify information, if present

* src/permittedOperations: Now decrypt also expect the new return
  object dec_inf (containing info such as is_mime and file_name)

3 months agojs: remove outdated checklists
Maximilian Krambach [Tue, 21 Aug 2018 12:37:50 +0000 (14:37 +0200)]
js: remove outdated checklists

--

* They are heavily outdated and offer no more useful information

3 months agojson: Add proper decrypt_result_t handling
Andre Heinecke [Tue, 21 Aug 2018 12:36:42 +0000 (14:36 +0200)]
json: Add proper decrypt_result_t handling

* src/gpgme-json.c (recipient_to_json, decrypt_result_to_json):
New.
(op_decrypt, hlp_decrypt): Update.

--
The op_decrypt as one of the first operations did not yet
match the current 1 <> 1 mapping of gpgme types to json
dictonaries.

info and dec_info are bad names but used for compatibility reasons.

3 months agojs: Fix library name mentioned in js Makefiles
Andre Heinecke [Tue, 21 Aug 2018 11:58:06 +0000 (13:58 +0200)]
js: Fix library name mentioned in js Makefiles

--

3 months agojs: Update extra_dist files
Andre Heinecke [Tue, 21 Aug 2018 11:56:45 +0000 (13:56 +0200)]
js: Update extra_dist files

* lang/js/BrowserTestExtension/Makefile.am,
lang/js/Makefile.am (EXTRA_DIST): Update.

3 months agoAdd example manifests for gpgme-json
Andre Heinecke [Tue, 21 Aug 2018 11:24:08 +0000 (13:24 +0200)]
Add example manifests for gpgme-json

* doc/examples/gpgme-chrome.json, doc/examples/gpgme-mozilla.json: New.
* doc/Makefile.am (EXTRA_DIST): Include them.

--
The id contained in the examples is the ID of Mailvelope.

3 months agojs: Improve README
Andre Heinecke [Tue, 21 Aug 2018 11:26:01 +0000 (13:26 +0200)]
js: Improve README

* lang/js/README: Clarify structure at the beginning.

3 months agoRemove js as language from configure.ac
Andre Heinecke [Tue, 21 Aug 2018 10:49:22 +0000 (12:49 +0200)]
Remove js as language from configure.ac

* configure.ac: Remove js language.

--
It does not make much sense to integrate gpgme-js into the
GPGME build system. gpgme-js will be distrbuted by it's users
as part of the web extensions / their distribution as that
is the JavaScript way.

So they can use their tools etc. to compile gpgme-js JavaScript
style, which is documented in the lang/js folder.

3 months agojs: set expiry of generatedKey to seconds from now
Maximilian Krambach [Tue, 21 Aug 2018 09:42:11 +0000 (11:42 +0200)]
js: set expiry of generatedKey to seconds from now

--

* src/Keyring.js: Changed key ecpiration from Date to seconds from
  creation, as in gpgme. The Date parameter used before was due to a
  misunderstanding in documentation and requests from potential users.

3 months agojs: add option "subkey-algo" to generateKey
Maximilian Krambach [Mon, 20 Aug 2018 16:05:34 +0000 (18:05 +0200)]
js: add option "subkey-algo" to generateKey

--

* The option was recently added to gpgme-json; this reflects this on
  javascript side