gpgme.git
2 days agopython: Fix a couple of syntax errors. master
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 days 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 days 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 days 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 days 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 days 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>
3 days 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.

3 days 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>
3 days 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 days 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 days 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.

6 days 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.

6 days 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.

6 days 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.

6 days 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.

6 days 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.

6 days 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.

6 days 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:

6 days 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.

6 days 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.

6 days 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.

6 days 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.

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

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

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

12 days 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 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>
2 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.

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

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

--

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

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

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

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

3 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)

3 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

3 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'

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

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

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

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

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

3 weeks 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.

3 weeks 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

3 weeks 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.

3 weeks 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.

3 weeks 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.

3 weeks 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.

3 weeks 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.

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

* Added details on installation troubleshooting.

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

--

3 weeks 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.

3 weeks 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

3 weeks 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>
3 weeks 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.

--

3 weeks 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.

3 weeks 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

3 weeks 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>
4 weeks 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

4 weeks 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.

4 weeks 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)

4 weeks 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.

4 weeks 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.

4 weeks 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.

4 weeks 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.

4 weeks 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

4 weeks 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.

4 weeks 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.

4 weeks 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

4 weeks 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

4 weeks 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

4 weeks 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)

4 weeks 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

4 weeks 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.

4 weeks 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

--

4 weeks 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.

4 weeks 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.

4 weeks 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.

4 weeks 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.

4 weeks 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.

4 weeks 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

4 weeks agojs: set expiry date on generateKey
Maximilian Krambach [Mon, 20 Aug 2018 15:46:29 +0000 (17:46 +0200)]
js: set expiry date on generateKey

--

* on the javascript side a Date is expected, gpggme-json expects
  seconds from 'now'

4 weeks agojson: Add subkey_algo and defaults to createkey
Andre Heinecke [Mon, 20 Aug 2018 14:38:36 +0000 (16:38 +0200)]
json: Add subkey_algo and defaults to createkey

* src/gpgme-json.c (op_createkey, hlp_createkey): Add subkey_algo
handling.
(hlp_createkey): Fix documentation of expiry.
--
Due to the funny quick-gen-key interface generating a key
with an explicit algo would result in bad defaults (only an SC key),
without a subkey.

This adds handling that should probably be in GnuPG proper to fix
the semantics of createkey by adding default subkey_algo handling.

4 weeks agojs: add and apply eslint rules
Maximilian Krambach [Mon, 20 Aug 2018 13:12:01 +0000 (15:12 +0200)]
js: add and apply eslint rules

--

* mainly spacing, see .eslintrc.json for details

4 weeks agojs: revert changes to class read/write restriction
Maximilian Krambach [Mon, 20 Aug 2018 10:12:43 +0000 (12:12 +0200)]
js: revert changes to class read/write restriction

--

* undoes 94ee0988d4eaac27785de6efb7c19ca9976e1e9c and
  e16a87e83910ebb6bfdc4148369165f121f0997e.
  I do not fully understand why my approach was bad, but I am not in
  a position to argue. This revert was requested to me after a review,
  and I'm doing it in the assumption that more experienced people know
  better than me.
* unittests: Also changed some outdated tests that stopped working
  since 754e799d35fd62d7a979452f44342934659908c7 (as GPGME_Key is not
  exported, one cannot check for instanceof in the tests anymore)

4 weeks agoPython bindings examples
Ben McGinnes [Sun, 19 Aug 2018 04:32:30 +0000 (14:32 +1000)]
Python bindings examples

* import-key.py: fixed a minor typo.
* pmkey-import.py: locates and imports keys from the ProtonMail keyserver.
* pmkey-import-alt.py: the same as the previous except with setting an
  alternative $GNUPGHOME directory.

5 weeks agoPython bindings setup file
Ben McGinnes [Sat, 18 Aug 2018 14:21:47 +0000 (00:21 +1000)]
Python bindings setup file

* Moved the build import back up where it belongs.
* Included comments indicating how to build and install for multiple
  Python versions beyond the first 2 on the same system.

5 weeks agoPython bindings tests: Near PEP8 compliance
Ben McGinnes [Sat, 18 Aug 2018 10:29:14 +0000 (20:29 +1000)]
Python bindings tests: Near PEP8 compliance

* PEP8 compliance for the vast majoeity of the tests.

5 weeks agoPython bindings examples: PEP8 conpliance
Ben McGinnes [Sat, 18 Aug 2018 08:46:47 +0000 (18:46 +1000)]
Python bindings examples: PEP8 conpliance

* Appears to be complete compliance.

5 weeks agoPython bindings setup: Near PEP8 compliance
Ben McGinnes [Sat, 18 Aug 2018 08:19:16 +0000 (18:19 +1000)]
Python bindings setup: Near PEP8 compliance

* lang/python/version.py.in: Fixed most things, but there's still an
  issue near the build portion with the existing Python bugs referenced.
* lang/python/setup.py.in: Now PEP8 compliant.

5 weeks agoPython bindings constants: PEP8 compliance (almost)
Ben McGinnes [Sat, 18 Aug 2018 05:36:23 +0000 (15:36 +1000)]
Python bindings constants: PEP8 compliance (almost)

* PEP8 compliance for all constants except the globals in
  src/constants/__init__.py depending on whether the import sequence
  affects the globals themselves.

5 weeks agoPython bindings src: PEP8 compliance
Ben McGinnes [Sat, 18 Aug 2018 05:05:34 +0000 (15:05 +1000)]
Python bindings src: PEP8 compliance

* import namespace clearance for src/*.py.
* Fixed a handful of is/is not None checks as well.

5 weeks agojs: decode arriving gpg message strings
Maximilian Krambach [Fri, 17 Aug 2018 17:20:35 +0000 (19:20 +0200)]
js: decode arriving gpg message strings

--

* Arriving strings (i.e. user id names, error messages) are not
  always in javascript encoding. This is an attempt to go through
  the whole gpgme answer (with the exception of payload data) and
  to fix the encoding of these

5 weeks agojs: correct decrypt result info (2)
Maximilian Krambach [Fri, 17 Aug 2018 16:25:57 +0000 (18:25 +0200)]
js: correct decrypt result info (2)

--

* the permittedOperation from last commit ended up in the wrong place.
  sign does not return an additional 'info' object.

5 weeks agojs: expect additional 'info' to arrive on decrypt, too
Maximilian Krambach [Fri, 17 Aug 2018 15:55:11 +0000 (17:55 +0200)]
js: expect additional 'info' to arrive on decrypt, too

--

* src/permittedOperations.js: if decrypt includes a verification,
  this info needs to pass, too.

5 weeks agojs: decrypt callback is_mime fix
Maximilian Krambach [Fri, 17 Aug 2018 15:44:06 +0000 (17:44 +0200)]
js: decrypt callback is_mime fix

--

* src/gpgmejs: is_mime should report its' counterpart. Also,
  file_name is not optional in specification. We'll send null if
  there is no file_name

5 weeks agojs: don't expire new keys if no date is set
Maximilian Krambach [Fri, 17 Aug 2018 15:20:35 +0000 (17:20 +0200)]
js: don't expire new keys if no date is set

--

* src/Keyring.js A new Key without expiration is documented as
  'never expire' here, and should behave accordingly. This requires
  sending '0' here.