f5df68b9fc898c70ae2de09027da4ad3b95a723a
[platform/upstream/gpgme.git] / ChangeLog
1 2019-06-13  Werner Koch  <wk@gnupg.org>
2
3         Release 1.13.1.
4         + commit ea11c2a13cd44caf0bab395bd5132bf232318ad8
5         * configure.ac: Bump LT versions to c=C33/A22/R1 cpp=C16/A10/R0
6         qt=C10/A3/R4.
7
8         python: Fix regression in t-decrypt-verify test.
9         + commit 7d0a979c07d2a32c1e39a9403f009cbe026f77ff
10         * lang/python/tests/t-decrypt-verify.py: Comment recent changes.
11
12         python: Set a default-key into gpg.conf for the tests.
13         + commit ad1395f210f3a3d5839f482f1933eac80a94d174
14         * lang/python/tests/Makefile.am (gpg.conf): Set a default key.
15
16         core: At debug levels up to 9 print only an ascii dump.
17         + commit 4f11210b21a1914a1daf67474e9b82084b2cac01
18         * src/debug.c (_gpgme_debug_buffer): Switch between two output
19         formats.
20
21 2019-06-06  Werner Koch  <wk@gnupg.org>
22
23         tests: Minor fix to run-threaded.c.
24         + commit f6fd90c99aea8b604d76ae49d29bc5269c236a98
25         * tests/run-threaded.c (random_data_close): Correct FD test.
26
27         core: Add commented debug helper to posix-io.c.
28         + commit f84abcad253ace782708c05760e52793814896f4
29         * src/posix-io.c (_gpgme_is_fd_valid): New out-commented function.
30
31         core: Fix error return value of _gpgme_run_io_cb.
32         + commit 6b9ff1ba391a4364b37cb116748194f3f33b4f12
33         * src/wait.c (_gpgme_run_io_cb): Fix return code.
34
35 2019-06-06  Andre Heinecke  <aheinecke@gnupg.org>
36
37         tests: Add option "allow-del" to run-threaded.
38         + commit e6f28273062ff26344163e219c1b784ae99de980
39         * tests/run-threaded.c (main): Handle allow-del.
40         (allow-del): New. Variable to allow deletion of keys.
41         (import): Delete key after import if allow-del is set.
42         (delete_impres): Delete keys from an import result.
43         (delete_fpr): Delete a key by fingerprint.
44
45 2019-06-05  Andre Heinecke  <aheinecke@gnupg.org>
46
47         tests: Implement import in run-threaded.
48         + commit 024a7f75d4b8e017b92a13552b23e7fb1d22a5ce
49         * tests/run-threaded.c (import): New.
50         (do_data_op): Call it.
51
52 2019-06-05  Werner Koch  <wk@gnupg.org>
53
54         core: Prettify _gpgme_io_select debug output again and fix TRACE_SYSRES.
55         + commit 0f68c9f16bdae7295cac4cbf3c9a197840989a85
56         * src/debug.c (_gpgme_debug): Take better care of NULL userinfo.
57         (_gpgme_debug_end): Rework.
58         (_trace_sysres): Print ERRNO and not the supplied RES.
59
60 2019-06-05  Andre Heinecke  <aheinecke@gnupg.org>
61
62         tests: Use synced output for error in run-threaded.
63         + commit 3a3648e3a56712261bda4fa866bd2419a740cec8
64         * tests/run-threaded.c (do_data_op): Use synced out macro.
65
66         tests: Avoid variable named the same as a macro.
67         + commit 3a11421d0f63b8cb5afa407cd65f763b11033241
68         * tests/run-threaded.c (decrypt, verify): Don't use a variable name
69         that is also a macro.
70
71         tests,w32: Fix thread creation in run-threaded.
72         + commit 9bbe15ebbc41533fa219d5b3017a26a75bc72731
73         * tests/run-threaded.c (create_thread): Check proper return
74         value and not return value of CloseHandle.
75
76 2019-06-05  Werner Koch  <wk@gnupg.org>
77
78         core: Improve the debug messages even more.
79         + commit 8f9f3224aac78ce9d54e19e73acf7ab659787168
80         * src/debug.c (_gpgme_debug): Add arg LINE.  Chnage all callers.
81         (_gpgme_debug_begin): Remove.
82         * src/debug.h (TRACE_SEQ): Use the LINE arg of _gpgme_debug.
83
84         core: Avoid explicit locks in the debug code.
85         + commit 856d2e8d64f668855b1c22d3d38fe783904c6c48
86         * src/debug.c (debug_lock): Remove.  Also remove all users.
87         (_gpgme_debug): Use gpgrt_bsprintf to prepare the output and finally
88         print using standard fprintf.  Reformat to prefix to be narrower.
89
90 2019-06-04  Werner Koch  <wk@gnupg.org>
91
92         json: Print "nan", "-inf", "inf" if needed.
93         + commit f56c996318dfa1c9f0d10582b18c2fce10d24668
94         * src/cJSON.c (print_number): Print NaN and INF.
95
96         json: Improve handling of large exponents in the JSON parsor.
97         + commit fabe96126b4ed9c5e07b713813d7db26a02e5e5f
98         * src/cJSON.c: Include stdint.h.
99         (parse_number): Avoid overflob in SUBSCALE and cap integer values.
100
101         core: Implement recpstring option parsing for gpgsm.
102         + commit 1024884e07f750ce781fa74dffa62e126bdda622
103         * src/engine-gpg.c (append_args_from_recipients_string): Detect bad
104         options.
105         * src/engine-gpgsm.c (set_recipients_from_string): Implement option
106         parsing.
107
108         core: Make gpgme_op_encrypt_ext work for CMS.
109         + commit e9ca36f876e1066227668981f5a9e1a7f1031d9e
110         * src/engine-gpgsm.c (gpgsm_encrypt): Fix argument check.
111
112 2019-06-04  NIIBE Yutaka  <gniibe@fsij.org>
113
114         python: Fix typo in DecryptionError exception.
115         + commit 47135ffdb923de66bc275a37e31811ad22c73dd7
116         * lang/python/src/errors.py (DecryptionError): Rename from
117         DeryptionError.
118         (UnsupportedAlgorithm): Use DecryptionError.
119
120 2019-06-03  Andre Heinecke  <aheinecke@gnupg.org>
121
122         Add NEWS for 1.13.1.
123         + commit 49883023f661a18d73f9f2c7a3a98902af62ef6b
124         * NEWS: Add news for 1.13.1
125
126 2019-05-06  Andre Heinecke  <aheinecke@gnupg.org>
127
128         python: Make EXTRA_DIST files explicit.
129         + commit f9c923bb2d87711235312e8085964372d7480ce4
130         * configure.ac: Configure new Makefiles.
131         * lang/python/Makefile.am: Remove dirs from extra dist and use
132         subdirs.
133         * lang/python/examples/Makefile.am, lang/python/src/Makefile.am,
134         lang/python/doc/Makefile.am: New. Files that list EXTRA_DIST files.
135
136         Python, doc: Minor style improvement.
137         + commit 63055f13407760c877e5a3a94e564dfb3077dd47
138         * lang/python/src/core.py (Context): Retab and shorten
139         max line length.
140
141         Merge remote-tracking branch 'origin/dkg/fix-T4276'
142         + commit f303806a110a9813023a5fd9468a55ab0f7fb39d
143
144
145 2019-05-03  Andre Heinecke  <aheinecke@gnupg.org>
146
147         Always use maintainer mode -Wno cflags.
148         + commit 33b13d1c290d7ce35c636cce4265b512fb8e64c3
149         * configure.ac (CFLAGS): Move -Wno flags out of the maintainer mode.
150
151         cpp: Fix initialization warning.
152         + commit 0ed81498147723f0e9282df5ae08b8b8e40edd2f
153         * lanc/cpp/src/gpggencardkeyinteractor.cpp
154         (GpgGenCardKeyInteractor::Private): Fix initialization warning.
155
156 2019-05-03  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
157
158         python: stop raising BadSignatures from decrypt(verify=True)
159         + commit 4100794e305ba22241ea5a4f7b42bb5189fbd948
160         * src/core.py (decrypt): filter out signatures with errors from the
161         returned verify_result, but avoid raising BadSignatures
162         * tests/t-decrypt-verify.py: ensure that only a single signature is
163         returned when evaluating cipher-3.asc, since the other signature is
164         unknown.
165
166         python/tests: try to decrypt and verify new test data.
167         + commit bd2d282e572b5d02669238c9e087259b85638477
168         * lang/python/tests/t-decrypt.py: test decryption of cipher-3.asc and
169         cipher-no-sig.asc
170         * lang/python/tests/t-decrypt-verify.py: test decryption and
171         verification of cipher-3.asc and cipher-no-sig.asc
172
173         tests: add two new types of encrypted data.
174         + commit c5c3a9d10be415ea7bc0cd9730ad6085f16ee7a0
175         * tests/gpg/cipher-3.asc: add an encrypted file containing signatures
176         (one from a known key, and one from an unknown key)
177         * tests/gpg/cipher-no-sig.asc: add an encrypted file containing no
178         signatures at all
179
180         python: make it easier to run a limited number of tests.
181         + commit 30bd1c097544376f257d426d5feb4706fb5d3afd
182         * lang/python/tests/Makefile.am: prefer py_tests from the environment
183         if present.
184
185 2019-05-02  Andre Heinecke  <aheinecke@gnupg.org>
186
187         tests: Add cms mode to run-import.
188         + commit 4746c5c9e2dd9a3ee471a429c19bc1f7fd1d07db
189         * tests/run-import.c (show_usage): Add doc for cms / openpgp.
190         (main): Handle protocol.
191
192 2019-04-24  Andre Heinecke  <aheinecke@gnupg.org>
193
194         cpp: Add wrapper for gpgme_set_global_flag.
195         + commit 7981ec4147f3058d5b56905903456247993dc6f7
196         * lang/cpp/src/context.cpp (setGlobalFlag): New.
197         * lang/cpp/src/global.h (setGlobalFlag): Export it.
198
199 2019-04-19  NIIBE Yutaka  <gniibe@fsij.org>
200
201         core: Fix duplication of close_notify_handler for gpgsm.
202         + commit 7673ef7953482f42cab50dca1810e5c9d10f461e
203         * src/engine-gpgsm.c [!USE_DESCRIPTOR_PASSING] (gpgsm_new): Remove
204         last call to _gpgme_io_set_close_notify.
205
206         core: Fix error return.
207         + commit 814f6c8de8006830f19a029a879bd92f9e584789
208         * src/engine.c (_gpgme_set_engine_info): Add error return.
209
210 2019-04-09  Andre Heinecke  <aheinecke@gnupg.org>
211
212         core,w32: Fix minor potential memleak.
213         + commit 140d694e1fddf16fa3fd2371b9a852ebb14622c8
214         * src/w32-util.c (_gpgme_create_process_utf8): Free converted
215         startup info strings.
216
217         core,w32: Fix new w32-util functions.
218         + commit ecbba12b869106ba03e10b7b7dd80f74d086831b
219         * src/w32-util.c (_gpgme_access): Respect mode parameter.
220         (_gpgme_create_process_utf8): Convert startupinfo, too.
221
222         core,w32: Improve handling of Unicode paths.
223         + commit a82e3a0ae57a48ba173e282a050680751006c074
224         * src/dirinfo.c (get_gpgconf_item): Use _gpgme_access.
225         * src/posix-util.c (_gpgme_access): Add forward to normal access.
226         * src/sys-util.h (_gpgme_access): New for posix and w32.
227         * src/w32-io.c (_gpgme_io_spawn): Use _gpgme_crate_process_utf8.
228         * src/w32-util.c (utf8_to_wchar, utf8_to_wchar0): The usual w32 conv.
229         (find_program_in_dir): Use _gpgme_access.
230         (find_program_at_standard_place): Use wchar API and convert to UTF-8.
231         (_gpgme_access): Convert UTF-8 to wchar and use wchar API.
232         (_gpgme_create_process_utf8): Convert UTF-8 to wchar and use wchar API.
233
234         core,w32: Show w32-spawn warning only once.
235         + commit 937adfdcbb22f715c5a331e5e2d4546ac15a1b7e
236         * src/w32-io.c (_gpgme_io_spawn): Show MessageBox only once.
237
238 2019-03-27  Andre Heinecke  <aheinecke@gnupg.org>
239
240         core, w32: Fix format string errors on windows.
241         + commit 4a4680f8901ecdcb7e8d5ed55f48226ccfccd7c8
242         * src/debug.c (_gpgme_debug): Use gpgrt_vasprintf instead of
243         vfprintf to have a more portable format.
244
245         core: Fix assuan logger-fd hack for windows.
246         + commit 19a4c4daa2cfd075b181d5131a4b8b4d54714b8c
247         * src/assuan-support.c (my_spawn): Zero is a perfectly fine fd.
248
249 2019-03-26  Andre Heinecke  <aheinecke@gnupg.org>
250
251         core,w32,glib: Fix build of w32-glib-io.c.
252         + commit 213c4bc1eb1f45695cc3955cc722ebb363dcbdd0
253         * src/w32-glib-io.c (_gpgme_io_pipe, _gpgme_io_connect): Do not
254         use TRACE_SUC in a return statement.
255
256 2019-03-26  Werner Koch  <wk@gnupg.org>
257
258         Release GPGME 1.13.0.
259         + commit 1b5a6bf27ac9b2e5a1fc4d5e879bd4901fcad5bb
260         * configure.ac: Bump LT versions.
261                         For C to C33/A22/R0.
262                         For C++ to C15/A9/R0.
263                         For Qt to C10/A3/R3.
264
265 2019-03-26  Andre Heinecke  <aheinecke@gnupg.org>
266
267         core: Fix a strtoul to strtol.
268         + commit 10576dc427b3746e2c3b9bc40efe618a3bd40519
269         * src/assuan-support.c (my_spawn): Fix using strtoul for
270         a long.
271
272         cpp: Fix GenCardKeyInteractor and extend it.
273         + commit ffdb75217bc09561cf651dab15cd26e0024d89a7
274         * NEWS: Mention interface change.
275         * lang/cpp/src/gpggencardkeyinteractor.cpp
276         (GpgGenCardKeyInteractor::setAlgo): New.
277         (GpgGenCardKeyInteractor::action),
278         (GpgGenCardKeyInteractor::nextState: Handle new interface.
279
280 2019-03-25  Andre Heinecke  <aheinecke@gnupg.org>
281
282         core, w32: Add hack to translate diag logger-fd.
283         + commit 129def87b262241483ba3a8b6771ad6d07c2e3be
284         * src/assuan-support.c (my_spawn): Add hack to
285         mark the logger fd for w32spawn translation.
286
287 2019-03-20  Andre Heinecke  <aheinecke@gnupg.org>
288
289         qt: Handle diagnostic audit log for CMS.
290         + commit 47369569e23482bdd24a136b071192352b1d1347
291         * lang/qt/src/threadedjobmixin.cpp(_detail::audit_log_as_html):
292         Handle CMS audit log.
293
294 2019-03-19  Werner Koch  <wk@gnupg.org>
295             Andre Heinecke  <aheinecke@gnupg.org>
296
297         core: Support GPGME_AUDITLOG_DIAG for gpgsm.
298         + commit dd21ec997cf4b6ba18538c63c728478110ad1f60
299         * src/engine-gpgsm.c (struct engine_gpgsm): Add fields diag_cb and
300         diagnostics.
301         (close_notify_handler): Close the diag fd on status fd close.
302         Handle diag close.
303         (gpgsm_cancel): Handle diag.
304         (gpgsm_release): Free DIAGNOSTICS.
305         (gpgsm_new): Support the diag feature.
306         (start): Set a handler for the diag fd.
307         (gpgsm_getauditlog): Support GPGME_AUDITLOG_DIAG.
308
309 2019-03-13  Andre Heinecke  <aheinecke@gnupg.org>
310
311         cpp: Fix Error::hasSystemError.
312         + commit c4cc47ee8f0bedc58e58ab416689d7014b0df2e7
313         * lang/cpp/src/context.cpp (Error::hasSystemError): Invert logic to
314         do what it says.
315
316 2019-02-28  Werner Koch  <wk@gnupg.org>
317
318         json: Fix cosmetic error in the repl.
319         + commit 1bdab961c51fc038c33ae8116595aa0213ab1dd5
320         * src/gpgme-json.c (native_messaging_repl): Use correct var with sizeof.
321
322         tests: Let run-verify print the de-vs flag.
323         + commit b159b2eddd9df5df6cc8f29bd999cf1603c56991
324         * tests/run-verify.c (print_result): Chack is_de_vs.
325         * tests/run-import.c (main): Fix bad parameter for format string.
326
327 2019-02-27  Andre Heinecke  <aheinecke@gnupg.org>
328
329         json: Limit recursion depth.
330         + commit 4a117859e7a512458ab78cfedfae0372805196b1
331         * src/cJSON.c (MAX_DEPTH): New. Maximum recursion depth.
332         (parse_value, parse_array, parse_object): Carry and check
333         depth argument.
334         (cJSON_ParseWithOpts): Initialize depth.
335
336 2019-02-21  Andre Heinecke  <aheinecke@gnupg.org>
337
338         cpp: Add ostream operators for import result.
339         + commit 73b2f40ae5e6881991dea609b0781373b28d7d30
340         * lang/cpp/src/importresult.cpp: Add ostream operators.
341         * lang/cpp/src/importresult.h: Update accordingly.
342
343         cpp: Make GpgME::Data::toKeys really const.
344         + commit 6175025c822678102c3f089e37952aa84b19a3ec
345         * lang/cpp/src/data.cpp (GpgME::Data::toKeys): Rewind afterards.
346
347 2019-02-19  Werner Koch  <wk@gnupg.org>
348
349         core,w32: Fix missing sentinel in dir name builder.
350         + commit 4c49417cc0dbd7f34269aff00fccafba150af744
351         * src/w32-util.c (_gpgme_get_gpgconf_path): Add NULL top strconcat.
352
353 2019-02-11  Andre Heinecke  <aheinecke@gnupg.org>
354
355         tests: Fix memleak in run-threaded.
356         + commit f8312d7c333193582dcb5816198219b9564023f0
357         * tests/run-threaded.c (verify): Free msg.
358
359 2019-02-10  Ben McGinnes  <ben@adversary.org>
360
361         python: examples.
362         + commit 302d5ef52e095378231efd54677b5c315354ad78
363         * A rather obvious variant of the existing key import examples, except
364           directed at Mailvelope's keyserver.
365         * Yeah, Werner, I know ... but it exists because I used it and there's
366           no harm in sharing.
367
368 2019-01-30  Ben McGinnes  <ben@adversary.org>
369
370         python: docs.
371         + commit e005052f4d5b29beda2252f8042dbf5728f5e2aa
372         * Version bump in preparation for whenever GPGME 1.13.0 happens.
373         * Ran the post_installer.py for docs preparation again.
374
375 2019-01-27  Ben McGinnes  <ben@adversary.org>
376
377         python: post installer script.
378         + commit 2de1e599770cdb129b84302d963f65fdd3ddd2a4
379         * Removed auto-generated .texi files from doc/src/ so only the
380           corrected versions are left.
381         * Which means now it is complete, but with the initial work to expand
382           it with info file generation later.
383
384         python: post installer docs fix script.
385         + commit 1e265723653042bc1010b457537b69a2011b43b7
386         * Moved post_installer.py into the examples/howto/ directory.
387         * Added instructions for its use to the Python Bindings HOWTO.
388         * Ran it as intended from the lang/python/ directory in order to both
389           prove it works and quickly and easily get the updated howto
390           replicated.  Also to fix all those .texi files.
391
392 2019-01-25  Werner Koch  <wk@gnupg.org>
393
394         json: Better use gpgme_free.
395         + commit ed81892917f47dddc23aa99d88733e3f8f344256
396         * src/gpgme-json.c (subkey_to_json): here
397
398         json: Fix minor memory leaks.
399         + commit 7f2423371964263784252cf839269023b6573bd2
400         * src/gpgme-json.c (interactive_repl): Fix memleak.
401         (subkey_to_json): Ditto
402         (op_config): Delay init of j_comps to avoid a leak on error.
403
404 2019-01-16  NIIBE Yutaka  <gniibe@fsij.org>
405
406         build: With LD_LIBRARY_PATH defined, use --disable-new-dtags.
407         + commit 66bcb8acb2452cf19318023ed0ff1ea7d7bb8439
408         * configure.ac (LDADD_FOR_TESTS_KLUDGE): New for --disable-new-dtags.
409         * tests/Makefile.am (LDADD): Use LDADD_FOR_TESTS_KLUDGE.
410         * lang/cpp/tests/Makefile.am, lang/qt/tests/Makefile.am: Likewise.
411         * tests/gpg/Makefile.am, tests/gpgsm/Makefile.am: Likewise.
412         * tests/json/Makefile.am, tests/opassuan/Makefile.am: Likewise.
413
414 2019-01-15  Andre Heinecke  <aheinecke@gnupg.org>
415
416         tests: Add diagnostic example to run-import.c.
417         + commit ce327f994a2888b807b63cf202ddcecc3fb9c685
418         * tests/run-import.c (main): Show diagnostics in verbose mode.
419
420 2019-01-09  Andre Heinecke  <aheinecke@gnupg.org>
421
422         qt: Use tofu conflict test keys without expiry.
423         + commit 66376f3e206a1aa791d712fb8577bb3490268f60
424         * lang/qt/tests/t-tofuinfo.cpp: Use new test keys without
425         expiry.
426
427 2019-01-02  Ben McGinnes  <ben@adversary.org>
428
429         python docs: post installer.
430         + commit a0dbdfebbb60f0d34dd16894803e95221d8be668
431         * Merging post installer script.
432         * Included ammended Sphinx config file to try to reduce the
433           auto-generated EPUB validation failures it produces.
434
435         python: post installer doc fix script.
436         + commit a2e7c863c821ca035f1e3f8077bdae3b0f81f5eb
437         * Got rid of the bash bit in the comments.
438         * Made the final printed instructions far more obvious.
439
440         python: examples.
441         + commit 207d4289d84971d11ec1824fbe7d4a2be63b56e4
442         * Fixed inter-edit.py so it will actually work now.
443         * made 3 others executable.
444         * Fixed the semantics of assuan.py's instructions.
445
446 2018-12-26  Ben McGinnes  <ben@adversary.org>
447
448         python: examples.
449         + commit d406471d4bf9c79140e4bc91de7d316ec7465892
450         * Fixed inter-edit.py so it will actually work now.
451         * made 3 others executable.
452         * Fixed the semantics of assuan.py's instructions.
453
454 2018-12-24  Ben McGinnes  <ben@adversary.org>
455
456         python: docs processing.
457         + commit ef9355c2fe8f81ccd73e0ed45ce33e925928f8e1
458         * Added some EPUB specific config options to the Sphinx config file
459           which might help reduce some of Sphinx's more stupid default errors
460           with EPUB validation.
461         * Added lang/python/post_installer.py script for automating the
462           generation of .texi and .rst "source" files from the real source
463           files written in Org mode.  Includes recreating the Sphinx Makefile
464           which is excluded due to the m4 toolchain in parent directories, it
465           also handles the rewriting of the reST index file properly and
466           rewrites the .texi files so they don't impale themselves on Unicode.
467
468 2018-12-21  Ben McGinnes  <ben@adversary.org>
469
470         python: docs.
471         + commit 06bca0eaa8de8405fafc892ab7864990f8853bcf
472         * Found a bug in org-mode's export to texinfo function which will
473           require either manual modification of each file or a customs sed run
474           over the generated files for all updates.
475         * Manually updated the current files for now, but will need to add
476           some post-install processing scripts for future use (I already have
477           some of these for my specific setup, they just need to be made a
478           little more generic and platform independent for here).
479
480         python: groups example.
481         + commit dc5f416351e47bfafb46a53f8fd8435dd6c231ba
482         * Tightened code a little more.
483
484 2018-12-17  Ben McGinnes  <ben@adversary.org>
485
486         python docs: house keeping.
487         + commit daded4925489d306f6a65271c2f55101b331187c
488         * Dropped the ASCII copyright line, since even MS have conceded their
489           battle against Unicode enough to load UTF-8.
490         * Fixed the drafts section since there will be less need of multiple
491           output format testing from next year.
492
493 2018-12-17  Werner Koch  <wk@gnupg.org>
494
495         core: Silence newer compiler warnings.
496         + commit 8b41fb08f00f01fe0dd8b2b5455d3422d97ddc60
497         * configure.ac: Add -Wno-format-truncation and
498           -Wno-sizeof-pointer-div.
499         * src/b64dec.c (_gpgme_b64dec_proc): Add fallthrough annotation.
500         * src/cJSON.c (parse_string): Ditto.
501         * src/gpgme-json.c (main): Ditto.
502
503 2018-12-16  Ben McGinnes  <ben@adversary.org>
504
505         python: howto and examples.
506         + commit fbc298dc1b0fbb51ebc92a9d56c45b78c5e9989d
507         * Tightening up both the documentation and some of the example code.
508
509 2018-12-13  Ben McGinnes  <ben@adversary.org>
510
511         python: examples bugfix.
512         + commit 4308d172816f3172454fac1dc0771014056764a1
513         * Fixed a bug in the ProtonMail importers (pmkey-*.py) where multiple
514           keys found for a username would always result in the last email
515           address checked being returned in the printed output for all located
516           keys.
517
518 2018-12-12  Ben McGinnes  <ben@adversary.org>
519
520         python: new example script.
521         + commit 3849b60e22432ef33f0d1d39b88e07922ad7779e
522         * Though Keybase really should not be encouraged due to
523           disengenuosness and FUD emanating from that souce, this new script
524           will obtain a key hosted on that site and import it when supplied
525           with the keybase username.
526
527         python: what's new summary.
528         + commit 3ca7cf07f5d3ec4af89e69ed13ea7ab701e33c03
529         * Added a little more detail to the what's new section.
530
531         python: advanced howto example.
532         + commit 64758a0dac4c7c3b312dccbc1661813e2c3e2888
533         * Added Cython requirement to this advanced use case.
534
535         python: howto examples equirements.
536         + commit 4c324ac1beb710714262af0040dea21232ba87d9
537         * Added small requirements.txt file for additional modules not in the
538           standard python library and not including the bindings themselves
539           and not including Cython, which is for more advanced examples.
540
541 2018-12-10  Ben McGinnes  <ben@adversary.org>
542
543         python: hkp key importer.
544         + commit 772b5aae24a2a3a996f399024845de612192fc2f
545         * Tweaked it slightly to avoid repetition of key searches when there
546           is only one search pattern to check (i.e. usually a single key ID or
547           fingerprint).
548
549         python: HKP search and import updates.
550         + commit 2e7a14c9b369096775a035091c197f2d438142a0
551         * Tweaked the code again so that it can also handle the cases where
552           someone has included a hexadecimal string in their user ID.
553         * Updated the HOWTO to match.
554         * Exported to .rst and .texi.
555
556         python: key import via HKP example.
557         + commit fe7e01d164b64ad5e7f65cb80e4bf13f06d8d3ef
558         * Fixed the logic used to search for any given pattern.
559         * Added a sensible method of checking whether a pattern is a key ID or
560           fingerprint.
561
562         python: docs updates.
563         + commit 7c63bfe4ab434b61a871aec4bc1d0a05b4c068e6
564         * Multiple updates, expanding on the Windows installation issues.
565         * Also adding to the new maintenance mode reference document.
566         * Includes content relating to the resolution of T4271 and T4191.
567
568 2018-12-07  Andre Heinecke  <aheinecke@intevation.de>
569
570         core: Fix ERR_INV_ARG check in genkey_start.
571         + commit 78f6291a3bf56769f53af66fe39718ddd2d74bf2
572         * src/genkey.c (gpgme_op_genkey_start): Fix check for
573         parms.
574
575 2018-12-05  Ben McGinnes  <ben@adversary.org>
576
577         python: examples.
578         + commit dc5600d306f808767068bad5117232fc3d35ac43
579         * cut some of then poor len usage.
580
581 2018-12-05  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
582
583         python: overhaul logic of Context.decrypt()
584         + commit 65c28da4e49a8778607fdcf6f51a840166616d9f
585         * lang/python/src/core.py (Context.decrypt): simplify and clarify the
586         logic behind handling verify=False.
587         * lang/python/tests/t-decrypt.py: ensure that we test verify=False
588
589         python: ctx.decrypt() has problematic error handling.
590         + commit 878a0ad01265dba5b06429276bdcc5c21fedb6f5
591         * lang/python/src/core.py (Context.decrypt): document odd
592         error-handling behavior as a potential problem to be addressed.
593
594         python: Clarify the meaning of ctx.decrypt(verify=[])
595         + commit 5d8b4f74891af22379899ccee9e8ee849144eee3
596         * lang/python/src/core.py (Context.decrypt): docstring clarification
597         of what it means to pass an empty list to the verify argument.
598
599         python: gpg.Context.decrypt verify_sigs and sink_result are bools.
600         + commit b8fa76a30c02afc3d7f6aad0a59bb613d1b711fc
601         Both of these function-internal variables are never used for anything
602         other than a binary state.  Implement them as the booleans they are.
603         Otherwise, casual readers of the code might think that they're
604         supposed to represent something other than a flag (e.g. "verify_sigs"
605         could mean "the signatures to verify", and "sink_result" could mean
606         "the place where we sink the result").
607
608         Signed-Off-By: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
609
610         python: clarify documentation for verify argument for Context.decrypt()
611         + commit 49af6d76e55f348c7b3cece756d6ac643d17ee68
612         It's easy to miss that verify can take a list of keys.  Make it more
613         obvious to the average python dev who reads docstrings.
614
615         python: simplify Context.decrypt()
616         + commit 2491e6f92f5b562cbd6f7f931df630cb106f6688
617         In the course of trying to address https://dev.gnupg.org/T4271, i
618         discovered that gpg.Context.decrypt() has a bit of superfluous code.
619         This changeset is intended to simplify the code without making any
620         functional changes.
621
622 2018-12-05  Ben McGinnes  <ben@adversary.org>
623
624         python: windows c and cython.
625         + commit 1dffdcc6e9d249111eb8761d29ef3b35b32a8c3d
626         * added warning that he Windows C runtime issues will also affect use
627           with Cython and that relying on binary installers would remove that
628           possible use case.
629
630 2018-12-04  Ben McGinnes  <ben@adversary.org>
631
632         python: sphinx modification.
633         + commit c8a04af676d981b42172c9bdad82eb83f91c8ce6
634         * The make.bat file incorrectly triggers the trailing whitespace check
635           in the git repo (it doesn't actually have any trailing whitespace,
636           but triggers the error on every line).
637         * Will need to add a script to handle future org-mode conversions of
638           the index page anyway, so will get that script to deal with this
639           problem too by generating the make.bat file if the platform is
640           detected as Windows.
641
642         python: Sphinx support.
643         + commit 6d8823b81162c18406d40ec59bd252cfdf1df648
644         * Added framework from sphinx-quickstart to lang/python/doc/rst/ so
645           that Python developers already using Sphinx can use the generated
646           reST files with existing documentation systems.
647         * Note that when generating source files from Org-mode, the index page
648           will require manual intervention to match the Sphinx requirements.
649
650         python: docs update.
651         + commit 8613727f1ee985c3cfa2c815523312914f033ffd
652         * Expanded the section on issues with Windows installations, with
653           greater detail of which versions of Visual Studio are needed
654           depending on which version of CPython is to be used.
655         * Included a recommendation which is a bit harsh without being totally
656           prickish.
657         * Updated all files to not link to author's key or related data in
658           order to make them all consistent with the changes in commit
659           649b19688132dd315e361c0f5b63ba6d8f45996d.
660
661 2018-12-04  NIIBE Yutaka  <gniibe@fsij.org>
662
663         build: Remove --with-*-prefix, which is no need any more.
664         + commit 5dbac555f23bcec4adcfd82de61878f0f23ff272
665         * autogen.rc (configure_opts): Remove --with-*-prefix.
666
667 2018-12-03  Andre Heinecke  <aheinecke@intevation.de>
668
669         qt,cpp: Consistently use nullptr and override.
670         + commit 1d31420650bfa7ca1d1503cc7431b3360e86022c
671         * lang/cpp/src/Makefile.am, lang/qt/src/Makefile.am (AM_CPPFLAGS):
672         Add suggest-override and zero-as-null-pointer-constant warnings.
673
674         * lang/cpp/src/*, lang/qt/src/*: Consistenly use nullptr and override.
675
676 2018-11-30  Ben McGinnes  <ben@adversary.org>
677
678         python: documentation fixes.
679         + commit 2e3a681d0c35bbf6db584fedc9d7f0a010430b51
680         * Typographic and whitespace error correction pertaining to the
681           previous update.
682
683         python: documentation.
684         + commit 3b056a01a252bb72df5744409ba494e1a6e54d31
685         * Added long description to setup.py.in.
686         * Added maintenance mode details with clarification for what type of
687           things would be a bug as far as MM is concerned and what wouldn't
688           be.
689         ** Includes a not too subtle hint directed towards the donations page.
690         * Miscellaneous tightening of documentation.
691
692 2018-11-28  Andre Heinecke  <aheinecke@intevation.de>
693
694         tests, json: Make them run on debian stable.
695         + commit a9cfb6dad8ac60543bcb06f4d0515f4a64ad897a
696         * tests/json/t-json.c (main): Relax version check a bit.
697
698 2018-11-26  Ben McGinnes  <ben@adversary.org>
699
700         python docs: checking key signatures.
701         + commit 1c92f3ff55ad0cdda06d05ad0a83193e3a147b7e
702         * Added instructions for checking key certifications or key
703           signatures (depending on preferred terminology).
704         * Added pendulum module to recommended installations, but not to
705           requirements.
706
707 2018-11-22  Ben McGinnes  <ben@adversary.org>
708
709         python: docs update.
710         + commit c87155e6eba2e97e4e6c6ee7e2591088a5489556
711         * Added documentation for the new methods added to gpgme.version.
712         * Removed the Flask based advanced use case from the what-is-new
713           section as that type of code will not be added here.
714
715         python: version as integers.
716         + commit de6bb23279796b9ae4dc369d58591cb75f818684
717         * lang/python/version.py.in: added gpg.version.versionintlist
718         * If gpg.version.versionintlist[2] ever returns -1 then there's a
719           serious problem with the build and it should be lodged as a bug if
720           it's repeatable.  Seeing this should never happen, but checking for
721           it is better than not doing so.
722
723 2018-11-19  Werner Koch  <wk@gnupg.org>
724
725         core: Fix format string errors in w32-io.c and use of TRACE_SUC.
726         + commit b182838f71d8349d6cd7be9ecfb859b893d09127
727         * src/w32-io.c: Fix use of TRACE_SUC.  Fix some format strung errors.
728
729 2018-11-19  Ben McGinnes  <ben@adversary.org>
730
731         python: import type.
732         + commit fd34415bdd57332424bd5a98d279e2331678a2fb
733         * Fixed bug T4242 and tested that dropping "Import" in favour of
734           "import_type" does indeed work just fine.
735
736         python: import constant.
737         + commit f773ad392da57e6be4ade93c44baa5d2057c40b6
738         * lang/python/src/constants/__init__.py: dropped use of Import
739           capitalisation and renamed lang/python/src/constants/import.py to
740           lang/python/src/constants/import_type.py to address bug T4242.
741         * lang/python/doc/src/gpgme-python-howto: minor docs updates.
742
743 2018-11-16  Werner Koch  <wk@gnupg.org>
744
745         core: Protect the trace macros for fun and profit.
746         + commit 7a1e7006d06fdbab86ea79a197c316744b09d933
747         * src/debug.h: Protect macros using.
748         (_trace_err, _trace_sysres, _trace_syserr): New helper inline
749         functions.
750
751         core: Fix a LF problem in the new debug fucntion.
752         + commit 7eda50a673d15320022375360fd220e8381b69ab
753         * src/debug.c (_gpgme_debug): Print a LF for an empty FORMAT unless we
754         are in legacy mode.
755
756         core: Remove old debug helper function.
757         + commit 94d274a1a33c6fb30981290b127f2c4babc27245
758         * src/debug.c (_gpgme_debug): Remove.
759         (_gpgme_debugf): Rename to _gpgme_debug.
760
761         core: Simplify the trace maros by using variadics.
762         + commit 5857491a2aa7d4975100d90f1ad62c08aa345e3e
763         * src/debug.h (TRACE_BEG, TRACE_LOG, TRACE_SUC): Use variadic macros
764         and remove the TRACE_BEG1 et al.  Change all users to always pass a
765         format string.
766         (TRACE): Ditto.
767         * src/debug.c (_gpgme_debugf): New.
768         * configure.ac <GCC>: Add -Wno-format-zero-length.
769
770 2018-11-15  Andre Heinecke  <aheinecke@intevation.de>
771
772         tests: Add run-threaded for multithread tests.
773         + commit d0402f886b720d03369887c807581bd980ee70cf
774         * tests/Makefile.am (run-threaded): Add.
775         * tests/run-threaded.c: New.
776
777         tests,json: Clean openpgp-revocs.d.
778         + commit 004e2cad2f26250cd010684f11dc187f08e6f9e1
779         * tests/json/clean-local: Remove revocs.d
780
781         tests,json: Move version check into t-json.
782         + commit 40d962b43a183070ba8602cac1e83f2292ebf2c3
783         * tests/gpg/t-support.h (check_gpg_version, compare_versions),
784         (parse_version_string, parse_version_number): Remove version
785         check code.
786         * tests/json/t-json.c (check_gpg_version, compare_versions),
787         (parse_version_string, parse_version_number): Add.
788
789 2018-11-14  Andre Heinecke  <aheinecke@intevation.de>
790
791         tests,json: Add sig-notations test.
792         + commit d3dae4a445d950c94c952ddf54e534ef71675bd1
793         * tests/json/t-sig-notations.in.json,
794         tests/json/t-sig-notations.out.json: New
795         * tests/json/Makefile.am (EXTRA_DIST): Add files.
796         * tests/json/t-json.c: Register it.
797
798         tests,json: Fix distcheck.
799         + commit def030e843bd4576597272abe9fe12f846066576
800         * tests/json/Makefile.am (EXTRA_DIST): Add inital and final scripts.
801         (t_json_SOURCES): Don't use cJSON.o as source.
802
803         tests,json: Add more tests.
804         + commit d0087d45f0207bf82a4f078d972c28c4d1cd2690
805         * t-config-opt.in.json,
806          t-config-opt.out.json,
807          t-import.in.json,
808          t-import.out.json,
809          t-sign.in.json,
810          t-sign.out.json: New.
811
812         tests,json: Add missing files and chunking test.
813         + commit 88b7221eb737a3102ec61ea385990b7ea7ef2b30
814         * tests/json/Makefile.am, tests/json/final.test,
815         tests/json/initial.test: New.
816         * tests/json/t-chunking.in.json, tests/json/t-chunking.out.json:
817         New test.
818         * tests/json/t-json.c: Register new test.
819
820         tests,json: Fix match if the first child differs.
821         + commit 27ca12e815c0a582d357641a04b889d648b8766e
822         * tests/json/t-json.c (test_contains): Try all siblings of
823         the haystack child.
824
825         tests,json: Add the bulk of tests.
826         + commit dd4b80a5f640232bb44eb825ff5a74ec295fad10
827         * t-json.c (tests): Register new tests.
828         * t-createkey.in.json,
829           t-createkey.out.json,
830           t-decrypt-verify.in.json,
831           t-decrypt-verify.out.json,
832           t-decrypt.in.json,
833           t-decrypt.out.json,
834           t-delete.in.json,
835           t-delete.out.json,
836           t-encrypt-sign.in.json,
837           t-encrypt-sign.out.json,
838           t-encrypt.in.json,
839           t-encrypt.out.json,
840           t-export-secret-info.in.json,
841           t-export-secret-info.out.json,
842           t-export.in.json,
843           t-export.out.json,
844           t-json.c,
845           t-keylist-secret.in.json,
846           t-keylist-secret.out.json,
847           t-keylist.in.json,
848           t-keylist.out.json,
849           t-verify.in.json,
850           t-verify.out.json,
851           t-version.in.json,
852           t-version.out.json: New.
853
854         tests,json: Add wildcard string matching.
855         + commit 9a31fdcb11d04d47dfcc38a8409b84436c549108
856         * tests/json/t-json.c (test_contains): When searching for "*" accept
857         every string.
858
859         tests,json: Skip tests for older GnuPG versions.
860         + commit e55e467d5ffb32c428566a876616d309ef2d15cd
861         * tests/json/t-json.c (main): Skip if version is not at least
862         2.2.0
863
864         tests,json: Suffix .json to test pattern.
865         + commit ca2e2b3d6973b1f942571ba65bd8b57153847777
866         * tests/json/t-config.in, tests/json/t-config.out: Renamed.
867         * t-json.c (run_test): Use new naming pattern.
868
869         tests,gpg: Add version check hlp to t-support.
870         + commit 5b61c092e7444749b08e39ac5aa9fb0818e1a076
871         * t-support.h (parse_version_number, parse_version_string)
872         (compare_versions): New. Copy&Paste from src/version.c
873         (check_gpg_version): New helper to check for a gpg version.
874
875         tests,json: Improve verbose mode and add verbose 2.
876         + commit 9933641cce595ba308d0f3a1f3ae8f13a9743dd1
877         * tests/json/t-json.c (main): Handle multiple verbose args.
878         (test-contains): Improve verbose output
879
880         tests,json: Fix and improve t-json.
881         + commit 3e5684d99b881787f9739e53fd8e8c22eadc2146
882         * tests/json/t-json.c (run_test): Terminate argv array correctly.
883         (run_test): Note and handle empty response.
884
885         tests: Add json testrunner.
886         + commit 0c31837766e016227b3c8dfd44c476949cd4741e
887         * configure.ac: Configure makefile.
888         * tests/Makefile.am: Run json tests if gpg tests are run.
889         * tests/json/t-json.c: New testrunner for json tests.
890         * tests/json/t-config.in, tests/json/t-config.out: First test.
891
892 2018-11-13  NIIBE Yutaka  <gniibe@fsij.org>
893
894         build: Update gpg-error.m4 and libassuan.m4.
895         + commit c4aa4af50f3102b251cfff9c9755e2dde8d1bd1f
896         * m4/gpg-error.m4: Update from master.
897         * m4/libassuan.m4: Update from master.
898
899 2018-11-12  NIIBE Yutaka  <gniibe@fsij.org>
900
901         Fix the previous commit.
902         + commit 895176f42af3a1b13614f15dd537a426bb4ac16a
903
904
905         build: Make gpgme.m4 use gpgrt-config with *.pc.
906         + commit 60828a505a1c74fd34476c181df2a588ea6f9c83
907         * src/gpgme.m4 (_AM_PATH_GPGME_CONFIG): Use gpgrt-config with gpgme.pc
908         when possible.
909         (AM_PATH_GPGME_GLIB): Likewise with gpgme-glib.pc.
910
911         build: Provide gpgme-glib.pc too.
912         + commit a76e145a1057e11953b71f804cf3a499c3ad5362
913         * src/gpgme-glib.pc.in: New.
914         * src/gpgme.pc.in (avail_lang): Remove.
915
916         build: Provide gpgme.pc, generated by configure.
917         + commit f3e60521899e6126229b6efedc9f011b84122e11
918         * configure.ac: Generate src/gpgme.pc.
919         * src/Makefile.am (pkgconfigdir, pkgconfig_DATA): New.
920         (EXTRA_DIST): Add gpgme.pc.in.
921         * src/gpgme.pc.in: New.
922         * src/gpgme-config.in: Use variables.
923
924 2018-11-08  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
925
926         spelling: fix misspellings.
927         + commit 2557d0ae6ff0336b041129b7bf5c1e3a8c20a805
928
929
930 2018-11-06  Ben McGinnes  <ben@adversary.org>
931
932         docs: python bindings.
933         + commit d0a5caf73c2d6b73dd043f62574c31946e4f347d
934         * Continued restructuring as part of moving beyond mere;y the HOWTO
935           file.
936         * Generated the alternative source files for reST and Texinfo.
937         * Fixed some errors and updated links after moving the what's new
938           section to two new files (yes, two).
939
940         python examples: another importer.
941         + commit 0cb625da84d7e5deeacad113c404a8bc2154c8e7
942         * Fixed a similar type of bug with the non-protonmail importer.
943
944         python examples: protonmail hkp scripts.
945         + commit 1b9d30db089e9de3ef859195ad58d2164a0231a0
946         * fixed a bug in the import try statement for both versions.
947
948 2018-11-05  Werner Koch  <wk@gnupg.org>
949
950         gpg: Avoid error diagnostics with --override-session-key.
951         + commit bded8ebc59c7fdad2617f4c9232a58047656834c
952         * src/engine-gpg.c (gpg_decrypt): Add --no-keyring.
953
954 2018-11-03  Ben McGinnes  <ben@adversary.org>
955
956         docs: typo.
957         + commit 13e09bd21a531b448f2f34b1f075315502b76fb6
958         * lang/python/doc/src/gpgme-python-howto: s/Revokinging/Revoking/g
959
960 2018-11-02  Werner Koch  <wk@gnupg.org>
961
962         w32: Fix a few compiler warnings.
963         + commit 5262ce0c815193fc901b00a9b4132925ba672df7
964         * src/debug.h (TRACE_SYSERR_NR): New.
965         * src/w32-io.c: Fix compiler warnings.
966
967         w32: Log all errors from CloseHandle and WFSO in w32-io.
968         + commit ed3f5ad760a28566fa2571e0c7392467bfc3770d
969         * src/w32-io.c (close_handle, _close_handle): New macro and function;
970         use in place of all CloseHandle calls.
971         (wait_for_single_object, _wait_for_single_object): Likewise.
972
973         w32: Don't use CloseHandle on an arbitrary integer.
974         + commit 4faa0ccf58c7a0f64f51dcbc8466add660080414
975         * src/assuan-support.c (my_waitpid): Do not close the PID = it is not
976         a handle.
977
978         w32: Revamp the closing of system objects.
979         + commit da89528ac39b687bfbed2209ca2637e3bd8e0ac5
980         * src/w32-io.c (hddesc_t): New.
981         (reader_context_s, writer_context_s): Replace file_sock and file_hd by
982         the hddesc_t hdd.
983         (fd_table): Ditto.  Add want_reader and want_writer.
984         (hddesc_lock): New lock variable.
985         (new_hddesc, ref_hddesc): New.
986         (release_hddesc): New.
987         (reader, writer): Call release_hddesc.
988         (create_reader, create_writer): Change for new hddesc scheme.
989         (destroy_reader, destroy_writer): Replace closing by a call to
990         release_hddesc.
991         (_gpgme_io_pipe): Change for new hddesc scheme.
992         (_gpgme_io_close): Ditto.
993         (_gpgme_io_dup): Ditto.  Use want_reader and want_writer.
994         (_gpgme_io_socket): Change for new hddesc scheme.
995
996         core: Print a dump of the I/O data only at level 8.
997         + commit 337c10825525d4084f3f437fde5af3806707e6a4
998         * src/debug.h (TRACE_SUC3): New.
999         (TRACE_LOGBUFX): New.
1000         * src/posix-io.c: Use TRACE_LOGBUFX instead of TRACE_LOGBUF.
1001         * src/w32-glib-io.c: Ditto.
1002
1003         w32: Fix and improve CancelSynchronousIo use.
1004         + commit acef4f775f273bbef63bc81afbad8feaabc7414e
1005         * src/w32-util.c (_gpgme_w32_cancel_synchronous_io): Fix name of DLL
1006         and print trace info only on error.
1007
1008 2018-11-01  Werner Koch  <wk@gnupg.org>
1009
1010         w32: Use CancelSynchronousIo in destroy_reader.
1011         + commit 63ba09b541dabbe838253926896e721cb9be564a
1012         * src/w32-util.c (_gpgme_w32_cancel_synchronous_io): New.
1013         * src/w32-io.c (destroy_reader): Use it here.
1014
1015         w32: Merge all the object tables of w32-io into one.
1016         + commit 338e9edfdb9239f1c9d4409f6d08d79a9d6f285b
1017         * src/w32-io.c (fd_table_size): New.  Used in most places instead of
1018         the MAX_SLAFD constant.
1019         (reader_table, writer_table, notify_table): Merge them into ...
1020         (fd_table): this table.  Chnage all affected code to take just one
1021         lock.
1022
1023 2018-10-31  Werner Koch  <wk@gnupg.org>
1024
1025         w32: Remove unused arg from two functions.
1026         + commit 79fc7c0fe825014e75bb825c4966a04a22e78254
1027         * src/w32-io.c (find_reader, find_writer): Remove unused start_it
1028         arg.  It is always passed as true.  Change callers.
1029
1030         w32: Remove all support for WindowsCE.
1031         + commit 3c04dea3ecebed35208f6b631b2e8b04222ea432
1032         * configure.ac: Remove WindwosCE support.
1033         * contrib/: Remove all; it was only used for WindowsCE.
1034         * src/w32-ce.c, src/w32-ce.h: Remove files.
1035         * src/Makefile.am (system_components): Remove these files.
1036         * src/ath.c, src/ath.h: Remove W32CE support.
1037         * src/data-compat.c (gpgme_data_new_from_filepart): Ditto.
1038         (gpgme_data_new_from_file): Ditto.
1039         * src/debug.c (debug_init, _gpgme_debug): Ditto.
1040         * src/gpgme-tool.c (gpgme_server): Ditto.
1041         (main): Ditto.
1042         * src/priv-io.h: Do not include w32-ce.h.
1043         * src/util.h: Remove WindowsCE support.
1044         * src/w32-io.c: Ditto.
1045         * src/w32-util.c: Ditto.
1046         * src/debug.h (TRACE_SUC4): New.
1047
1048         w32: Remove cruft in w32-io from WindowsME times.
1049         + commit 2e07d4f89a26bb56a55b2743d39fb37532028ffd
1050         * src/w32-io.c (set_synchronize): Remove.
1051         (create_reader, create_writer): No need for set_synchronize.
1052
1053 2018-10-30  Ben McGinnes  <ben@adversary.org>
1054
1055         docs: python docs restructure.
1056         + commit 78be1e2f543667576a49286476e7d66a707dd17e
1057         * Moved the what's new section out of the HOWTO (mostly), in
1058           anticipation of expanding the docs to be more than merely a HOWTO.
1059
1060         docs: python.
1061         + commit d5c22966d5bf397cccfa171095885cd207ef6ae3
1062         * dropped the ".org" extension and added a mode line for each file as
1063           this will make scripting format conversions a lot easier.
1064
1065 2018-10-30  Werner Koch  <wk@gnupg.org>
1066
1067         w32: Fix previous commit.
1068         + commit 9eef23fcf39f2b2eb2645afd31a79ba1286d9885
1069         * src/w32-io.c (_gpgme_io_spawn): Move freeing of TMP_NAME behind its
1070         use in an error handling.
1071
1072 2018-10-29  Andre Heinecke  <aheinecke@intevation.de>
1073
1074         core,w32: Fix memleak of tmp_name in w32-io.
1075         + commit 7a1b58045f980c4df76daf225a2a1b604e8604d2
1076         * src/w32-io.c (_gpgme_io_spawn): Free tmp_name.
1077
1078         tests: Add repeat argument to run-verify.
1079         + commit 681525be003433728d127303d40712803b70cb9c
1080         * tests/run-verify.c (main): Add repeat argument.
1081
1082         core: Do not crash if CMS plaintext is ignored.
1083         + commit 8f27511862cabac8fa1dd8f883cb78faebc05ef6
1084         * src/engine-gpgsm.c (gpgsm_verify): Fix handling both
1085         plaintext and signed_text as NULL.
1086
1087         cpp,tests: Add another test runner.
1088         + commit 62c736ba76a19d3b41af69e1f340a53b80f13fe0
1089         * lang/cpp/tests/run-verify.cpp: New.
1090         * lang/cpp/tests/Makefile.am: Update accordingly.
1091
1092 2018-10-25  Andre Heinecke  <aheinecke@intevation.de>
1093
1094         cpp: Add some convenience functions.
1095         + commit 05a0e97f5c12c06082fbeab0fba6f86ddbfbe6b2
1096         * lang/cpp/src/context.cpp (Context::create): New.
1097         * lang/cpp/src/context.h: Update accordingly.
1098         * lang/cpp/src/key.cpp, lang/cpp/src/key.h:
1099         (Key::isBad, Subkey::isBad, UserID::isBad)
1100         (UserID::Signature::isBad): Add shorthand for the isX checks.
1101         * NEWS: Mention it.
1102
1103 2018-10-23  Ben McGinnes  <ben@adversary.org>
1104
1105         docs: python howto.
1106         + commit 04791c896712857feaf9a472a48d7a4c4f287775
1107         * Fixed a few spelling and grammatical errors.
1108
1109 2018-10-21  Ben McGinnes  <ben@adversary.org>
1110
1111         Python: docs tweaks.
1112         + commit 59e38e3d2c14b40045e15c45b6c2f300e8f097dc
1113         * Fixed a minor error in how the reST version of the HOWTO is
1114           generated.
1115         * Updated the help() in __init__.py with a little more detail as to
1116           why not to use the lower level functions.
1117
1118 2018-10-20  Ben McGinnes  <ben@adversary.org>
1119
1120         python bindings: callback test.
1121         + commit 651a1afe80bcc421da26f38015e8a322e140f130
1122         * lang/python/tests/t-callbacks.py: Updated test logic to try
1123           generating a key which expires in 2099 and if that fails then
1124           fallback to an expiration in 2037 in an attempt to catch the 32-bit
1125           systems.
1126
1127 2018-10-18  Werner Koch  <wk@gnupg.org>
1128
1129         core: Fix segv in genkey when no endtag is provided.
1130         + commit fbac11b19d97730494dc9dad3b7f71453ef15581
1131         * src/genkey.c (get_key_parameter): Provide a fallback ENDTAG.
1132
1133         core: Return an error if NULL is provided for genkey's parms.
1134         + commit 174af15725d4989a840ff3098996cc8a0568f724
1135         * src/debug.c (_gpgme_debug_buffer): Bail out of BUF is NULL.
1136         * src/genkey.c (gpgme_op_genkey): Do no deref a NULL in
1137         TRACE_LOGBUF.
1138         (gpgme_op_genkey_start): Ditto. Return an error if PARMS is NULL.
1139
1140 2018-10-18  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1141
1142         python: do not export HAVE_CXX11 definition.
1143         + commit 9de1c96ac3cf6fa126325002b61a1b606037ca88
1144         * lang/python/gpgme.i: ignore HAVE_CXX11 in SWIG interface
1145
1146 2018-10-17  Werner Koch  <wk@gnupg.org>
1147
1148         python: Auto-check for all installed python versions.
1149         + commit ff6ff616aea6f59b7f2ce1176492850ecdf3851e
1150         * m4/python.m4 (AM_PATH_PYTHON): Add a 4th arg.
1151         * configure.ac (available_languages): Remove separate python2 and
1152         python3 and keep just python.  Simplify test for pythons.  Use an
1153         explicit list of python versions to test.
1154
1155 2018-10-16  Werner Koch  <wk@gnupg.org>
1156
1157         core: Really remove CR from version output.
1158         + commit d63d6d8b8030ec1dc19f9f66c8af3b2f3288d309
1159         * src/version.c (_gpgme_get_program_version): Fix test.
1160
1161 2018-10-10  NIIBE Yutaka  <gniibe@fsij.org>
1162
1163         build: Let configure create the VERSION file.
1164         + commit 85dd0fa4b5f026a13da842bf64ab8a37a68918d4
1165         * autogen.sh: Update from libgpg-error.
1166         * configure.ac: Use mym4_version to create VERSION file.
1167         * Makefile.am (dist-hook): Do not create VERSION.
1168         (EXTRA_DIST): Add VERSION.
1169
1170 2018-10-09  Andre Heinecke  <aheinecke@intevation.de>
1171
1172         cpp: Add KeyListMode::Locate.
1173         + commit c565cf42a38a8bda936df8c52936589cc8a06ca3
1174         * cpp/src/global.h (KeyListMode): Add Locate.
1175
1176         cpp: Add first manual tests.
1177         + commit 9f85f4967e617e9f97529b89f530c1bc36b52a5c
1178         * lang/cpp/Makefile.am: Add tests subdir.
1179         * lang/cpp/tests/Makefile.am: New.
1180         * lang/cpp/tests/README,
1181         lang/cpp/tests/run-getkey.cpp,
1182         lang/cpp/tests/run-keylist.cpp: New.
1183         * configure.ac: Configure tests makefile.
1184
1185         core: Add trust-model flag.
1186         + commit 85627e58184529e982369cfc00ed7865244c13d6
1187         * src/context.h (gpgme_context): Extend with trust_model.
1188         * src/engine-gpg.c (engine_gpg): Extend with trust_model.
1189         (gpg_set_engine_flags): Take trust_model from context.
1190         (build_argv): Handle trust_model.
1191         (gpg_release): Free trust_model.
1192         * src/gpgme.c (gpgme_set_ctx_flag): Handle trust-model flag.
1193         (gpgme_release): Release trust-model.
1194         * doc/gpgme.texi: Document new flag for gpgme_set_ctx_flag.
1195         (Context Flags): New subsection for the context flags.
1196         * tests/run-keylist.c (show_usage, main): Add new --trust-model
1197         parameter.
1198
1199         cpp: Initialize all gpgme_key_t's in context.
1200         + commit 7a1e6dbfb16f71f692a53f7e0955bde86dbb7fee
1201         * lang/cpp/src/context.cpp (Context::startKeyListing),
1202         (Context::keyListResult, Context::signingKeys): Initialize key.
1203
1204         core: Ensure r_key init in gpgme_get_key.
1205         + commit ecfa88e65fda9c9766ad526d57e2fc8b2884f634
1206         * src/keylist.c (gpgme_get_key): Move r_key init above
1207         the first invalid value check.
1208
1209         qt, tests: Add test for single get key.
1210         + commit bf4aae45129c1093ee7712bdbcdfe1c8f2ca7c0f
1211         * lang/qt/tests/t-keylist.cpp (testGetKey): New.
1212
1213 2018-10-08  Werner Koch  <wk@gnupg.org>
1214
1215         Release 1.12.0.
1216         + commit 1aff2512d846ea640d400caa31c20c40230b3b04
1217         * configure.ac: Bump core LT version to C32/A21/R0.  Bump C++ LT
1218         version to C14/A8/R0.
1219
1220         * lang/qt/tests/Makefile.am (CLEANFILES): Add reader status files.
1221         * Makefile.am (EXTRA_DIST): Add conf/whatisthis.
1222
1223 2018-10-05  Werner Koch  <wk@gnupg.org>
1224
1225         core: Apply GPGME_EXPORT_MODE_NOUID also to keyserver exports.
1226         + commit 913601f4879f011878b53b885f35524df98b5570
1227         * src/engine-gpg.c (export_common): Add keyserver-options to the
1228         send-keys commands.
1229
1230         build: Move config.h to conf/config.h.
1231         + commit ecfa48fffa93f3d1b66354d2d46872ff614c4a68
1232         * conf/: New dir.
1233         * configure.ac (AC_CONFIG_HEADER): Move header to conf dir.
1234         * doc/Makefile.am (mkdefsinc): Adjust rule.
1235         * lang/python/Makefile.am (copystamp): Ditto.
1236
1237 2018-10-04  Ben McGinnes  <ben@adversary.org>
1238
1239         docs: whitespace bug.
1240         + commit 033da18b88af69b7846de62af4aeea359d27ec20
1241         * Same as before, but exported.
1242
1243         docs: org to texinfo whitspace bug.
1244         + commit a8d4aa6f763599bbd8ea36ef98b7b4931bf326dc
1245         * replaced "." in headings with "·" to prevent whitspace being
1246           appended by texinfo and breaking git.
1247
1248         docs: python.
1249         + commit 0b5930b276186afd1ca1dd91d82db7e60dd20606
1250         * Fixed an error in the new index page and then exported to the other
1251           two "source" formats.
1252
1253         docs: python.
1254         + commit 48258879720a4f423d0efa955da942d69f3c49d4
1255         * lang/python/doc/meta/TODO.org: Added the two major documentation
1256           build system tasks to the TODO list.
1257         * Added an index page in preparation for sorting out the second of
1258           those TODO lists (Docutils is a lot easier to handle than Texinfo).
1259         * Meanwhile, have confirmed that it all builds just fine under
1260           GNU/Linux, OS X and FreeBSD while retaining the documentation, so
1261           that's a nice improvement from 1.11.1.
1262
1263         python: makefiles.
1264         + commit f3fc73738264d21baf0e9b49fdd5cb67faa11d31
1265         * doc/Makefile.am: Removed a bit I forgot about.
1266         * Renamed lang/python/docs to lang/python/doc bvecause apparently
1267           automake cares about that too.
1268         * Decided to be extra explicit in the manifest because if I don't then
1269           all sorts of things get deleted ... like lang/python
1270         * Tested on an external linux system just in case my osx workstation
1271           introduces too much weirdness.
1272
1273         python: make file.
1274         + commit 2cca422ca4b2df831a824393077d0b52d79532aa
1275         * lang/python/Makefile.am: Attempting to remove the docs/meta
1276           directory did a lot worse than I thought it was doing, so better to
1277           just be sure the documentation is available than destroy the entire
1278           bindings directory.
1279
1280         python: make file.
1281         + commit 582f14d97a900106dce0c8d8666a443c6ec25050
1282         * lang/python/Makefile.am: Now that gpg2 has been renamed back to gpg
1283           and gpg1 is semi-deprecated, we should check what the actual gpg
1284           binary is with gpgconf and use that rather than make assumptions per
1285           system.
1286         * Also, it means less worry if gpg3 is ever a thing.  (Trust me, I
1287           remember the Python 1 to 2 transition as well as the current 2 to 3
1288           transition).  ;)
1289
1290 2018-10-03  Ben McGinnes  <ben@adversary.org>
1291
1292         docs: more whitespace checks.
1293         + commit a174b269432fd37e8546c43e0127580e826432da
1294         * lang/python/docs/texinfo/short-history.texi:
1295
1296         dpcs: python howto.
1297         + commit 962dfca9b86b53bb00f5b89e453b9eed95454934
1298         * More updates to the docs themselves and the versions to be available
1299           with the next release.
1300         * .texi and .rst copies of the HOWTO and the short history of (this
1301           part) of the project.
1302
1303         docs: python.
1304         + commit 2151b9828af3760867e856ab939b835a6e2f42e7
1305         * More restructuring.  Also the painstaking task of deciphering some
1306           of the more eclectic aspects of Texinfo and make.
1307
1308         docs: python bindings.
1309         + commit a982f9131520bce0b25f84cba19040bbe5f275bb
1310         * Restructured the docs directory to account for the GNU preferred
1311           source doc format (.texi) and the Python preferred source doc
1312           format (.rst) and the real source doc format (.org).
1313         * Both the perceived source formats will need to be generated from the
1314           .org files and included at this stage.  Unfortunately there is not
1315           yet a native org-to-rst transformation method in the org-mode
1316           software in Emacs nor is there a a direct means of going from reST
1317           to Org-mode from Docutils.  There's only third party packages like
1318           Pandoc and, while very good, there is no guarantee of consistency;
1319           so we can't entirely automate this bit (yet).
1320
1321         docs: pre-python preparation.
1322         + commit b2802053192ba0000866b145b715a557d34ed0eb
1323         * doc/Makefile.am: removed the python howto from this file, restoring
1324           it to just the main project and the newer .js files.
1325         * deleted: doc/gpgme-python-howto.texi
1326         * renamed the Short_History.org file to short-history.org to keep the
1327           naming conventions similar.
1328         * All the Python files can (and should) live together.
1329
1330 2018-10-02  Ben McGinnes  <ben@adversary.org>
1331
1332         python bindings: CPython order.
1333         + commit 23894ac9a96081428a590791010ca8beebaf6f9f
1334         * Changed the order of python versions the configure/make process
1335           checks for, placing Python 3.7 ahead of 3.6.
1336         * Updated the HOWTO documentation to reflect this change.
1337
1338 2018-10-02  Werner Koch  <wk@gnupg.org>
1339
1340         core: add experimental GPGME_EXPORT_MODE_NOUID.
1341         + commit 7b861945fdc71fd3c82c91f824172dadd2220fa0
1342         * src/gpgme.h.in (GPGME_EXPORT_MODE_NOUID): New.
1343         * src/export.c (export_start): Adjust option check.
1344         * src/engine-gpg.c (export_common): Implement option.
1345
1346 2018-09-30  Ben McGinnes  <ben@adversary.org>
1347
1348         docs: python bindings.
1349         + commit 76bdfabb057f4ffc56beee15b48d8fa836ba7cce
1350         * Tightened up the docs a little bit, updated the "what's new"
1351           section, dropped the "-draft" version in preparation for GPGME
1352           1.12.0's release.
1353         * Exported another .texi version (and updated the draft copies to this
1354           commit (which ought to be 1.11.1-beta313).
1355
1356         python bindings: fixing decrypt-verify.
1357         + commit 837a4760533e80f075cd727f18354904b8a54132
1358         * lang/python/src/core.py: First restoring the exception to the being
1359           just that.
1360         * The means to manipulate the error output is temporarily in commented
1361           out code, but ought to be added to a proper test later.
1362         * In the mean time the original test, with a very slight change, works
1363           again.
1364
1365         python bindings: ctx.decrypt.
1366         + commit 11403a46358f9b6e98776974f3c70f211d9adf85
1367         * lang/python/src/core.py: Fixed methods of detecting whether verify
1368           is a boolean variable or a list.
1369         * Added methods of catching the missing keys exceptions.
1370         * Still retained PEP8 compliance (which might have been where one or
1371           two problems crept in).
1372         * Though this is essentially the correct behaviour, it still does not
1373           quite fit the otiginal test; so that will also require some adjustment.
1374
1375 2018-09-27  Ben McGinnes  <ben@adversary.org>
1376
1377         example: local signatures.
1378         + commit ce045a1ef9c63042fcffb5487b19646d67addba0
1379         * lang/python/examples/howto/local-sign-group.py: added the bit where
1380           specifying the signing key is actually used for signing rather than
1381           just pruning the list of keys to certify.
1382
1383         example: python bindings.
1384         + commit a047e0f68ef471097e514665249063f267257b19
1385         * lang/python/examples/howto/local-sign-group.py: locally sign every
1386           key in a group line except one's own keys.  Intended to address the
1387           sort of thing one might see on lists like PGPNET or other closed
1388           groups amongst activists, journalists, etc. where everyone encrypts
1389           to all recipients, but may not sign everyone's keys publicly..
1390
1391         docs: python bindings installation.
1392         + commit 1d40d360bccb05b4c66313a60a902d04a0d3c9ff
1393         * lang/python/docs/gpgme-python-howto.org: added a section on
1394           installing the bindings to a python virtualenv.
1395
1396         tests: python bindings.
1397         + commit b9aea3b9c2c2762a9ae8d677196f82acc6a1c028
1398         * Fixed the final assertion to look for what will actually be reported
1399           in that case instead of something else (i.e. it looks for an
1400           IMPORT_ERROR status code).
1401
1402         examples: python bindings.
1403         + commit 7c9f49a4991c1ccd0cb582875207b373d4fccf50
1404         * Fixed homedir specifying logic in several cases.
1405
1406 2018-09-25  Ben McGinnes  <ben@adversary.org>
1407
1408         docs: a typographical two-step.
1409         + commit b625258d54782040195cc5ad3b255685af6f6c4e
1410         * Sometimes you really do need or want punctuation in a heading, but
1411           ideally without something else generating whitespace and other
1412           annoyances to go with it.
1413         * Trying a real decimal point instead.
1414
1415         docs and examples: python bindings.
1416         + commit 62e4e2cb5edb09183b9f9d448f992fe65cb6db85
1417         * Woumd up the "what's new" section.
1418         * Added an example for sending a key to the keyservers via hkp4py.
1419         * Updated the export key code to use a more complete check for the
1420           $GNUPGHOME location.
1421         * Expanded on the installation and reinstallation troubleshooting
1422           section.
1423
1424 2018-09-24  Ben McGinnes  <ben@adversary.org>
1425
1426         docs: python bindings howto.
1427         + commit e9da4d97107b40a48583775df34783f07be5dfdb
1428         * Added a What's New section to summarise changes since the last
1429           release.  There have been quite a few and some attention does need
1430           to be drawn to some of them.
1431         * Confirming certain issues with some platform builds, especially
1432           BSD/OSX vs. Linux issues which will need to update the installation
1433           troubleshooting guides.
1434
1435 2018-09-23  Ben McGinnes  <ben@adversary.org>
1436
1437         docs and examples: python bindings howto.
1438         + commit b12b2cc99621fe32a2d698ce7f091f3225f35bd0
1439         * Added more comprehensive examples using hkp4py and added a couple
1440           more example scripts for protonmail.
1441
1442         examples: python bindings and hkp4py updates.
1443         + commit ced4bdbbb239c1fe209665b4f5a7aeb9651889ed
1444         * Mostly tightening up the details on the hkp4py example script.
1445         * Also fixed a typo in the LGPL boiler plate text included in all the
1446           other example scripts for the HOWTO.
1447
1448         python bindings: importing from keyservers with hkp4py.
1449         + commit 6ed9a77c92c32f77092b36c149185d4359cd6e55
1450         * added a new example script to search the keyservers and import the
1451           results, this time using Marcel Fest's hkp4py module.
1452         * Updated the key importing section to match this addition.
1453         * Tested with the current version of hkp4py from github.
1454
1455 2018-09-22  Ben McGinnes  <ben@adversary.org>
1456
1457         docs: python bindings howto.
1458         + commit 3622576105ae1924d9b40ce0d09bf9a7accc0ed1
1459         * Confirmed that updates to the tests have significant'y improved that
1460           output.
1461         * Updated some of the additional notes for the section on hkp4py.
1462         ** This is in anticipation adding at least import examples using that
1463            module as well.  It may also include adding examples of exporting a
1464            key and uploading it to the keyservers.
1465
1466 2018-09-20  Werner Koch  <wk@gnupg.org>
1467
1468         python: Fix a couple of syntax errors.
1469         + commit 6878126b6f53cdf7daeeaf68116dda008564c2fa
1470         * lang/python/tests/t-keylist-from-data.py: Add missing line
1471         continuation.
1472         * lang/python/tests/t-keylist.py: Ditto.
1473         * lang/python/tests/t-quick-key-creation.py: Ditto.
1474         * lang/python/tests/t-quick-subkey-creation.py: Ditto.
1475
1476         python: Silence a few warnings.
1477         + commit dcdabf5f2ef84e1f304fcc0590ec4bb160354af5
1478         * src/gpgme.h.in: Obsolete "class" also for Python.
1479         * lang/python/gpgme.i: Silenece a swig warning.  Silence a gcc
1480         warning.
1481
1482         python: Fix regression in the test suite.
1483         + commit 9f19b3aaecd23a12b2e6692faeefa936e490d343
1484         * lang/python/tests/Makefile.am (GNUPGHOME): Remove stray backslash.
1485
1486         tests: Don't try using keys from a scmartcard.
1487         + commit a824f4498ea9bae5dca515c56e2455ec0ce98b50
1488         * tests/gpg/Makefile.am: Disable scdaemon
1489         * lang/python/tests/Makefile.am: Ditto.
1490
1491 2018-09-20  Ben McGinnes  <ben@adversary.org>
1492
1493         docs: python bindings and its special request.
1494         + commit 5cb67257f2b3b5fcfd3444e366f26a0f2ae09504
1495         * Added some material on using the new-ish hkp4py module with GPGME.
1496         * Example code will be added later once a couple of little issues are
1497           addressed.
1498
1499 2018-09-19  Werner Koch  <wk@gnupg.org>
1500
1501         json: Remove subkey-algo from createkey command.
1502         + commit c569adb5e3e3082bd68cdc34a2d349b7c28d3768
1503         * src/gpgme-json.c (op_createkey): Remove subkey-algo param.
1504         (GPG_AGENT_ALLOWS_KEYGEN_TRHOUGH_BROWSER): Fix typo.
1505         * lang/js/src/Keyring.js: Remove subkey-algo support.
1506         * lang/js/src/permittedOperations.js: Ditto.
1507
1508 2018-09-18  Ben McGinnes  <ben@adversary.org>
1509
1510         docs: python bindings.
1511         + commit 362caaf02f3a25b7e626572aa30b87771c2c8f4d
1512         * Updated the Cython example code slightly, along with the
1513           corresponding explanation.
1514
1515 2018-09-17  Ben McGinnes  <ben@adversary.org>
1516
1517         docs: python bindings howto.
1518         + commit f4d83800d89173e618cceca44b584778217fadb3
1519         * Tightened up the Cython demonstration.
1520
1521 2018-09-16  Ben McGinnes  <ben@adversary.org>
1522
1523         docs: cython sanitized.
1524         + commit 44c846345e91413b9d6a1f7b26f59db5b1c32433
1525         * Sanitized the shell command examples of extraneous whitespace.
1526         * Removed keycount.c as sanitising it is pointless and it will be
1527           generated by Cython when the example is followed.
1528         * Regenerated the .texi version.
1529
1530         docs: python bindings howto.
1531         + commit 61c08f7435570783f5c267e42d288d31bf77e560
1532         * Added new advanced section with an example of using the Python
1533           bindings with CPython code compiled back to C code using Cython.
1534         * Though it may seem a bit counter-intuitive to use the bindings just
1535           to go back to C via a different route, this is not actually stupid.
1536         * Added examples/howto/advanced/cython/ directory.
1537         * Added keycount.pyx, setup.py and the keycount.c file which the first
1538           two generated with Cython.  Not including the .so and .o files from
1539           the build.
1540         * Exported the .texi version of the howto for the main docs.
1541
1542         docs: even more edits.
1543         + commit fbec29fdac7a4f162e73f24dac2a6b205239ef03
1544         * doc/gpgme-python-howto.texi: hunting down and killing commas,
1545           Oxford or not it can't stay in a heading.
1546
1547         docs: more edits.
1548         + commit 2a1b0b88d96b722817f3ac9edf002a54c65084b8
1549         * lang/python/docs/gpgme-python-howto.org: more tweaks and edits,
1550           along with another build of output formats.
1551         * doc/gpgme-python-howto.texi: updated texinfo version for parent docs.
1552
1553         docs: whitespace culled.
1554         + commit 91b26b0638d9f92f0e90aab1c3750c14d72db301
1555         * lang/python/docs/gpgme-python-howto.org: Identified and fixed the
1556           headings which kept generating lines with trailing whitespace when
1557           exporting to Texinfo format and adjusted them to prevent that.
1558
1559         docs: renaming and drafts.
1560         + commit 766ec0e4a36c120ed4ef5463b5fdf8e7ed3b4563
1561         * lang/python/docs/gpgme-python-howto.org: Renamed file to better fit
1562           the rest of the project's docs.
1563         * Added a section on the very unofficial drafts I periodically post
1564           links to since they're often the easiest way to get a web version in
1565           front of someone in a hurry.
1566
1567 2018-09-15  Ben McGinnes  <ben@adversary.org>
1568
1569         docs: python howto texinfo update.
1570         + commit 76f77022848894ee9d8490255cefdd0100248b45
1571         * doc/gpgme-python-howto.texi:
1572
1573         docs: Python howto update.
1574         + commit 7e9df9b9e33131f5d7c58ad58249f9ae766f1341
1575         * lang/python/docs/GPGMEpythonHOWTOen.org: Added corresponding GPGME
1576           version number to table at the start and cut the shortcut from the
1577           groups.py example.
1578         * doc/gpgme-python-howto.texi: New export of Texinfo file for docs
1579           build.
1580
1581         docs: generated whitespace.
1582         + commit 93a2ea0207fac0a18a48b671df11dc8575579c39
1583         * doc/gpgme-python-howto.texi: culled whitespace included with the
1584           org-mode export.
1585
1586         Docs: including howto with standard docs.
1587         + commit 2e5b0603709855eb1d8a1a3fd51d3245f4301ada
1588         * gpgme.spec.in: Added gpgme-python-howto.info build on the grounds
1589           that it now deals with certain possible installation issues and end
1590           users encountering them would want the docs to hand.
1591         * doc/gpgme.texi: updated the copyright year to this year.
1592
1593         Docs: Python bindings HOWTO.
1594         + commit b19faa26e01df4d78286e013313e5ab25f517d49
1595         * Added doc/gpgme-python-howto.texi: generated from
1596           GPGMEpythonHOWTOen.org and then slightly modified so the generated
1597           Info file doesn't use camelCase.
1598         * doc/Makefile.am: Updated makefile to include the Python HOWTO with
1599           gpgme_TEXINFOS and to export the generated files to the webserver
1600           along with the main GPGME one.
1601
1602         Python bindings: docs.
1603         + commit d04fb0bf1271c91b88686c947a5b14ffc9b505ef
1604         * lang/python/docs/GPGMEpythonHOWTOen.org: Fixed a few errors in the
1605           newer sections.
1606         * Updated code in the examples using secret key exporting and group
1607           lines to reflect the Python 2.7 compatibility fixes added.
1608
1609         Python bindings: examples.
1610         + commit 4e8a92ed14ea3da3d92f07d5f62fd325a2adebde
1611         * lang/python/examples/howto/export-secret-keys.py and groups.py:
1612           Updated the backwards compatibility adjustments to account for
1613           unicode differences between python 2 and 3.
1614
1615         Python examples: backwards compatibility.
1616         + commit 864ef9b40f5f9d0c66a458b6033277938d7d1d50
1617         * lang/python/examples/howto/groups.py: subprocess update
1618         * lang/python/examples/howto/export-secret-keys.py: subprocess update
1619
1620           Both of these try the nice and easy method of getting the subprocess
1621           output available in Python 3, but will fall back to the older Popen
1622           method if it doesn't work.  Essentially this is to be a little nicer
1623           to Python 2.7.15 (even though the examples are filled with warnings
1624           that py2 support is not guaranteed with the examples).
1625
1626 2018-09-10  Thomas Oberndörfer  <thomas@mailvelope.com>
1627
1628         js: Fix errorDetails of GPGME_Signature.
1629         + commit dd7d37ca21684d4d77db4f513c6212776fc6ea82
1630         * lang/js/src/Signature.js (GPGME_Signature.errorDetails):
1631         Access properties from the summary object.
1632
1633 2018-09-08  Ben McGinnes  <ben@adversary.org>
1634
1635         estreams revised.
1636         + commit 2375959180aa8eb0d23cc3f8240c3f5b5262b819
1637         * Egon Spengler was right, crossing the streams is bad.
1638         * Restored both src/gpgme.def and src/libgpgme.vers to use the
1639           estreams symbols without the leading underscore.
1640         * The new_from_estream() function added to lang/python/src/core.py and
1641           set to alias the new_from_stream() function remains.
1642         * Opted for the solution favouring Linux onthree main grounds:
1643           1. Andre reported major problems with Windows as well, so the number
1644              of potentially affected systems would vastly increase.
1645           2. All the BSDs and OS X have spent far more time and development
1646              work in order to accommodate the eccentricities of both Microsoft
1647              and the GNU Project (ref. GCC), so they're more likely to be able
1648              to cope with doing so again than the other way around.
1649           3. If I really have to I can write a custom installer for OS X to
1650              try this and, if it fails, to then patch the two symbol entries and
1651              recompile from scratch.  That said, I may not have to since it
1652              actually behaved during the most recent tests for this
1653              commit; into ten separate CPython installations and all five
1654              supported versions (standard source installs and OS X Framework
1655              installs for each version).
1656
1657 2018-09-02  Ben McGinnes  <ben@adversary.org>
1658
1659         estreams symbols for python bindings.
1660         + commit 879cc1f84fbf09cb4eeb78bce16f52a1a36032ba
1661         * It turns out that even though some platforms detect differing
1662           symbols for estreams, the two types do not appear to be in
1663           conflict.  At least they don't from the BSD/OS X side of things.
1664           As a consequence both versions are now included.
1665
1666 2018-08-31  Ben McGinnes  <ben@adversary.org>
1667
1668         docs: python bindings.
1669         + commit 55991aa91667b9184cc9fc86a3ac21b9640511ef
1670         * minor typographic update.
1671
1672 2018-08-30  Ben McGinnes  <ben@adversary.org>
1673
1674         python bindings: estreams fix.
1675         + commit 1d00fb987b903e245d484bddfe3c0a0aba670ac1
1676         * lang/python/src/core.py: Adjusted new_from_estream function to alias
1677           new_from_stream instead of fd.
1678         * fixed the _gpgme import errors introduced in commit
1679           08cd34afb762975b0273575035dacf69449ef241 by changing the exported
1680           functions/types to match the inner module where all the work is
1681           done, rather than the outer one(s).
1682
1683 2018-08-29  Ben McGinnes  <ben@adversary.org>
1684
1685         python bindings: core.
1686         + commit 18ea83867168e8db0a2f2c8057d087363083486c
1687         * lang/python/src/core.py: expanded gpgme_error check lists.
1688
1689         python bindings: core.
1690         + commit dcedddecb6f8f11682aed3b09b88ee1511010faf
1691         * lang/python/src/core.py: added gpgme_data_set_flag to the errorcheck
1692           funtion.
1693
1694         python bindings: core.
1695         + commit 6078b5303362b2e5ce56660967fac313ca3d5ae9
1696         * lang/python/src/core.py: added new function new_from_estream to wrap
1697           new_from_fd just like new_from_stream does and for the same reason.
1698
1699 2018-08-29  Andre Heinecke  <aheinecke@intevation.de>
1700
1701         json: Fix detached verify.
1702         + commit 1420c3bd681648b032d756536311621a3627bedb
1703         * src/gpgme-json.c (op_verify): Only create output and
1704         use it for clearsigned and opaque signed.
1705
1706 2018-08-29  Ben McGinnes  <ben@adversary.org>
1707
1708         docs: python bindings - protonmail examples.
1709         + commit f7e5ae7f1618bd355b885c5c32dd028afad35453
1710         * lang/python/docs/GPGMEpythonHOWTOen.org: Updated links to the
1711           ProtonMail keyserver import scripts and added a warning regarding
1712           being unable to update third party keys.
1713         * lang/python/examples/howto/pmkey-import-alt.py: added usage.
1714         * lang/python/examples/howto/pmkey-import.py: added usage.
1715
1716 2018-08-28  Ben McGinnes  <ben@adversary.org>
1717
1718         docs: python bindings HOWTO.
1719         + commit 02d0b97bfedc732351cc4e89c92fcd9d31209535
1720         * Finished CFFI vs SWIG bit in known issues.
1721         * tidied up some of the structure.
1722         * Fixed some minor errors and links.
1723
1724         docs: python bindings.
1725         + commit a8a983c5bc0f0deeeebda455ad73309fff48b61f
1726         * Added section on why no CFFI.
1727
1728         docs: python howto.
1729         + commit c2831e2377843c8625df158ef32e01f8c19494eb
1730         * Added another key import example using ProtonMail's new keyserver.
1731
1732 2018-08-28  Andre Heinecke  <aheinecke@intevation.de>
1733
1734         json: Delete primary key if subkey gen fails.
1735         + commit 3bdf8be6d2c57319399fe14e27e52b323a17750a
1736         * src/gpgme-json.c (op_delete): Delete primary key on
1737         subkey gen error.
1738
1739         json: Allow NULL request in encode and chunk.
1740         + commit 7d3c13df263ed88c17005920e75e0486abeae5b9
1741         * src/gpgme-json.c (encode_and_chunk): Don't error on NULL
1742         request.
1743
1744 2018-08-27  Ben McGinnes  <ben@adversary.org>
1745
1746         docs: python bindings.
1747         + commit 1c261b9fa3462360b6c3f43b243091cd50534903
1748         * Added details on installation troubleshooting.
1749
1750 2018-08-27  Werner Koch  <wk@gnupg.org>
1751
1752         json: Do not put FILE_NAME into the verify result.
1753         + commit 53c5b9a265d33f2cc54f489375a929602338aee8
1754         * src/gpgme-json.c (verify_result_to_json): Remove "file_name".
1755
1756 2018-08-27  Jasper Spaans  <jasper@startmail.com>
1757
1758         core: Export gpgme_data_new_from_estream function.
1759         + commit 08cd34afb762975b0273575035dacf69449ef241
1760
1761
1762 2018-08-23  Andre Heinecke  <aheinecke@intevation.de>
1763
1764         json: Add sender and file name to encrypt.
1765         + commit a5f8dac77d50480a208c99398df323c58ce6dc58
1766         * src/gpgme-json.c (hlp_encrypt, op_encrypt): Support sender
1767         and file_name.
1768
1769 2018-08-21  Andre Heinecke  <aheinecke@intevation.de>
1770
1771         json: Add proper decrypt_result_t handling.
1772         + commit 263dadb04aed4f973248b32c52af6ca59bcb7c1f
1773         * src/gpgme-json.c (recipient_to_json, decrypt_result_to_json):
1774         New.
1775         (op_decrypt, hlp_decrypt): Update.
1776
1777         js: Update extra_dist files.
1778         + commit 738a8e6f950af08305c082d59a91d3d5d45800fa
1779         * lang/js/BrowserTestExtension/Makefile.am,
1780         lang/js/Makefile.am (EXTRA_DIST): Update.
1781
1782         Add example manifests for gpgme-json.
1783         + commit 9608996d88549b60da490e5eeb41db023f97a038
1784         * doc/examples/gpgme-chrome.json, doc/examples/gpgme-mozilla.json: New.
1785         * doc/Makefile.am (EXTRA_DIST): Include them.
1786
1787         js: Improve README.
1788         + commit 605eb8a8bfcb12141d7cc5626e75af812cda6c75
1789         * lang/js/README: Clarify structure at the beginning.
1790
1791         Remove js as language from configure.ac.
1792         + commit fe3de5b86b4a25f5b23cf1af2fd1809ef6c087a0
1793         * configure.ac: Remove js language.
1794
1795 2018-08-20  Andre Heinecke  <aheinecke@intevation.de>
1796
1797         json: Add subkey_algo and defaults to createkey.
1798         + commit 8103eeba809b6e7156d861783309574b93909169
1799         * src/gpgme-json.c (op_createkey, hlp_createkey): Add subkey_algo
1800         handling.
1801         (hlp_createkey): Fix documentation of expiry.
1802
1803 2018-08-19  Ben McGinnes  <ben@adversary.org>
1804
1805         Python bindings examples.
1806         + commit 75bc5e6356eca1b7fb76653e7c82c2477f8859b0
1807         * import-key.py: fixed a minor typo.
1808         * pmkey-import.py: locates and imports keys from the ProtonMail keyserver.
1809         * pmkey-import-alt.py: the same as the previous except with setting an
1810           alternative $GNUPGHOME directory.
1811
1812 2018-08-18  Ben McGinnes  <ben@adversary.org>
1813
1814         Python bindings setup file.
1815         + commit 03b899dbe14a3c32fd018c20c7d5156366fdcc3d
1816         * Moved the build import back up where it belongs.
1817         * Included comments indicating how to build and install for multiple
1818           Python versions beyond the first 2 on the same system.
1819
1820         Python bindings tests: Near PEP8 compliance.
1821         + commit 5facba45c83f7daaacc49e66306e13a35aeb74be
1822         * PEP8 compliance for the vast majoeity of the tests.
1823
1824         Python bindings examples: PEP8 conpliance.
1825         + commit b5fbe90676f46b9615919133753a65b20318fe63
1826         * Appears to be complete compliance.
1827
1828         Python bindings setup: Near PEP8 compliance.
1829         + commit fc55caccfc87253e1703df66b21917cc399fba62
1830         * lang/python/version.py.in: Fixed most things, but there's still an
1831           issue near the build portion with the existing Python bugs referenced.
1832         * lang/python/setup.py.in: Now PEP8 compliant.
1833
1834         Python bindings constants: PEP8 compliance (almost)
1835         + commit 8a6a73b9c4f92b159450edb5e4a780fc7389ca82
1836         * PEP8 compliance for all constants except the globals in
1837           src/constants/__init__.py depending on whether the import sequence
1838           affects the globals themselves.
1839
1840         Python bindings src: PEP8 compliance.
1841         + commit 7962cde13c5cbdc643bbde795e2c29e638dfc186
1842         * import namespace clearance for src/*.py.
1843         * Fixed a handful of is/is not None checks as well.
1844
1845 2018-08-13  Ben McGinnes  <ben@adversary.org>
1846
1847         Symmetric example.
1848         + commit 279cac0ffbb3d865d997dc7fc9c1b53bbb55d3a2
1849         * lang/python/examples/howto/symcrypt-file.py: *sigh*; passphrase was
1850           right the first time, just the error check that wasn't.
1851         * I really should stop second guessing myself one of these days ...
1852
1853         Symmetric encryption example.
1854         + commit a256d84882616341b3f357340533893a1db8b5c1
1855         * lang/python/examples/howto/symcrypt-file.py: Fixed the error code
1856           and the passphrase key word arg.
1857
1858         Symmetric encryption example.
1859         + commit ed5ef8293cdbfcc3b91268eeae1eb6b4f8d271bb
1860         * lang/python/examples/howto/symcrypt-file.py: A variation on standard
1861           key based encryption.
1862
1863 2018-08-10  Ben McGinnes  <ben@adversary.org>
1864
1865         PEP8 compliance and other code fixes.
1866         + commit 94bf13e78e65e1d1bc2e5d6b2311f9c9657bfe5f
1867         * Ran all the .py files in src/ and below through Yapf.
1868         * Included some manual edits of core.py, this time successfully making
1869           two notorious sections a bit more pythonic than scheming.
1870         * Left the module imports as is.
1871         * This will be committed if it passes the most essential test:
1872           compiling, installing and running it.
1873
1874 2018-08-09  Ben McGinnes  <ben@adversary.org>
1875
1876         Link fixes.
1877         + commit b6d2a66b41fee5b7fb484566aefcdbcc4cdad094
1878         * lang/python/README: Fixed links in both versions of the README.
1879
1880 2018-08-08  Andre Heinecke  <aheinecke@intevation.de>
1881
1882         json: Wipe memory in cJSON_Delete.
1883         + commit 4dd1d0abd34a382d1cd67cabb737950a39cb3fdc
1884         * src/cJSON.c (cJSON_Delete): Wipe memory on deletion.
1885
1886         json: Only use calloc instead of malloc.
1887         + commit fdc07b3ddc2f68e6fcb33703ea41126d0a841290
1888         * src/cJSON.c, src/gpgme-json.c (CALLOC_ONLY): New define
1889         to change xmalloc / xtrymalloc to use calloc.
1890
1891         json: Add checks when skipping byte.
1892         + commit 974a95db04f9cdea02867f0246445b4679517ba0
1893         * src/cJSON.c (parse_string, cJSON_Minify): Check for
1894         terminating NULL byte when skipping the byte after a an escaped
1895         quote.
1896
1897         json: Don't error out if chunksize is omitted.
1898         + commit 6e48bb0f1cbf662026bf0f70549b52bafe00c017
1899         * src/gpgme-json.c (encode_and_chunk): Don't error out
1900         if no chunksize is provided.
1901
1902         cpp: Fix use after free in gencardkeyinteractor.
1903         + commit 3b782443600e8091c5f19580cb218100bcbb4ad7
1904         * lang/cpp/src/gpggencardkeyinteractor.cpp
1905         (GpgGenCardKeyInteractor::Private::keysize): Change to string.
1906
1907 2018-08-06  Andre Heinecke  <aheinecke@intevation.de>
1908
1909         Make GNUPGHOME for tests overridable.
1910         + commit d09d19fa9fe1e81dd819b32208b4bd09f83e3918
1911         * lang/python/tests/Makefile.am,
1912         lang/qt/tests/Makefile.am,
1913         tests/Makefile.am,
1914         tests/gpg/Makefile.am,
1915         tests/gpgsm/Makefile.am,
1916         tests/opassuan/Makefile.am (GNUPGHOME): Make variable explict.
1917
1918 2018-07-24  Andre Heinecke  <aheinecke@intevation.de>
1919
1920         cpp: Add safety checks for key update.
1921         + commit a6e5c8bf18696007c48c6f362aa355020fe82f21
1922         * lang/cpp/src/key.cpp (Key::update): Check that the key is
1923         not NULL.
1924         * lang/cpp/src/verificationresult.cpp (GpgME::Signature::key):
1925         Check for fingerprint.
1926
1927 2018-07-22  Ben McGinnes  <ben@adversary.org>
1928
1929         docs: python bindings howto.
1930         + commit 4d1642b11ea64b8009a8720d9b59e89636d691d2
1931         * Fixed and tested the changes necessary for org-mode to correctly
1932           parse pythonic (Python 3) indentation.
1933         * Updated the source blocks to recommended upper case for BEGIN_SRC
1934           and END_SRC.
1935         * Tested and confirmed XHTML output matches correct examples.
1936         * Tested against pseudo-control output via exporting from org-mode to
1937           org-mode and then exporting that to XHTML.  Remaining differences
1938           appear to be discarding the custom tags used to provide X[HT]ML id
1939           elements to each section which does not appear to offer any benefit.
1940         * Exporting directly to XHTML or other HTML output should no longer
1941           cause problems, but if there are any then the first step should be
1942           exporting from org-to-org and then exporting that to XHTML.
1943
1944         doc: python bindings howto.
1945         + commit d7c5366d58d035d7b7119f955824e842d0b6bbe0
1946         * Another retrofitting of the HOWTO Python example code, this time
1947           following adjustments to python-mode configuration and having
1948           trawled through the org-mode mailing lists for clues.
1949
1950         doc: python bindings howto.
1951         + commit b47e1bb98a8ff93cae560449bfa9103c47f4d4f8
1952         * Added org-mode byline.
1953
1954 2018-07-19  Werner Koch  <wk@gnupg.org>
1955
1956         core: Clear all flags for a new data property.
1957         + commit 5ef492c5635ae1677eed6f439a75a86a99dbbe18
1958         * src/data.c (PROPERTY_TABLE_ALLOCATION_CHUNK): New.
1959         (insert_into_property_table): Use it here.  Clear all flags.
1960
1961         core: Blank out the plaintext after decryption failure.
1962         + commit 085cdeddef637cc057362fcbde13b0261b8699ec
1963         * src/data.h (data_prop_t): New enum.
1964         (struct gpgme_data): Add field propidx.
1965         * src/data.c (property_t): New.
1966         (property_table, property_table_size, property_table_lock): New.
1967         (insert_into_property_table): New.
1968         (remove_from_property_table): New.
1969         (_gpgme_data_get_dserial): New.
1970         (_gpgme_data_set_prop): New.
1971         (_gpgme_data_get_prop): New.
1972         (_gpgme_data_new): Connect new object to property_table.
1973         (_gpgme_data_release): Remove from property_table.
1974         (gpgme_data_read): With DATA_PROP_BLANKOUT set don't fill the buffer.
1975         * src/data-mem.c (gpgme_data_release_and_get_mem): Likewise.
1976         * src/decrypt.c (struct op_data): Add field plaintext_dserial.
1977         (_gpgme_op_decrypt_init_result): Add arg plaintext and init new field.
1978         (_gpgme_decrypt_status_handler): Set DATA_PROP_BLANKOUT on decryption
1979         failure.
1980         (_gpgme_decrypt_start): Pass PLAIN to the init function.
1981         * src/decrypt-verify.c (decrypt_verify_start): Ditto.
1982         * configure.ac: Check for stdint.h and bail out if uint64_t is not
1983         available.
1984
1985 2018-07-19  Andre Heinecke  <aheinecke@intevation.de>
1986
1987         cpp: Print origin and last update for key/uid.
1988         + commit 8168dfbeb12042a7f7b1bad918ef60df92bfd1a7
1989         * lang/cpp/src/key.cpp: Print origin and last update in
1990         iostream operators.
1991
1992 2018-07-19  Werner Koch  <wk@gnupg.org>
1993
1994         json: Don't use strdup but the xtrystrdup wrapper.
1995         + commit af2c74d6c06a9fb08f7de15d41162d09f871a62e
1996         * src/gpgme-json.c (create_keylist_patterns): Use CNT as first arg for
1997         xcalloc.
1998         (process_request): s/strdup/xtrystrdup/.
1999
2000         core: New interface gpgme_data_new_from_estream.
2001         + commit f42cd70f18d53df47cc2d027bade736377d39b71
2002         * src/gpgme.h.in (gpgme_data_new_from_estream): New.
2003         * src/data-estream.c: New.
2004         * src/data.h (gpgme_data): New union member e_stream.
2005
2006 2018-07-18  Andre Heinecke  <aheinecke@intevation.de>
2007
2008         json: Fix memleak in native msging repl.
2009         + commit 98a75a16ccdfe51799a27894d2eb26dba04b34f2
2010         * src/gpgme-json.c (native_messaging_repl): Free request and
2011         response after each loop.
2012
2013         json: Ensure that native msging request is string.
2014         + commit 6d7b4382c3e12ba1dbbd0762dfa850c76750d838
2015         * src/gpgme-json.c (native_messaging_repl): Ensure that the
2016         request is NULL terminated.
2017
2018         json: Fix crash by ensuring response is never NULL.
2019         + commit 82e4b900a96c837392259469a9a5821a95e7a707
2020         * src/gpgme-json.c (encode_and_chunk): Try to always
2021         return at least an error.
2022         (process_request): Double check that it does not return NULL.
2023
2024         json: Fix memory errors in create_keylist_patterns.
2025         + commit b78140daf7720132711314a4e5ed878b49da99f4
2026         * src/gpgme-json.c (create_keylist_patterns): Reserve two
2027         pointers more then linefeeds.
2028         (create_keylist_patterns): Fix loop to count linebreaks.
2029         (create_keylist_patterns): Use calloc for good measure.
2030
2031         qt: Handle encoding for diagnostics.
2032         + commit 16462c54b3503e77bc48c2486234531d7bc31b6d
2033         * lang/qt/src/threadedjobmixin.cpp (fromEncoding)
2034         (stringFromGpgOutput): New helpers.
2035         (markupDiagnostics): Use it.
2036
2037 2018-07-16  Andre Heinecke  <aheinecke@intevation.de>
2038
2039         json: Fix crash on invalid json.
2040         + commit 1686e07e77a1eee3b2708d0231a5a549956021f7
2041         * src/gpgme-json.c (process_request): Init res. Check for
2042         json object before encode and chunk.
2043
2044         json: Fix uninitialized key unref in op_delete.
2045         + commit cc21101a7494ea0a17c3012fcb86e77b00b494fa
2046         * src/gpgme-json.c (op_delete): Init key.
2047
2048 2018-07-16  Werner Koch  <wk@gnupg.org>
2049
2050         json: Minor cleanups in cJSON.c.
2051         + commit 1933f5b8056b2671301379106cca4504c4187795
2052         * src/cJSON.c: Add comments on the origin of the code.
2053         (parse_string): Allocate an extra byte for safeness.
2054         (cJSON_AddItemToArray): Allo ARRAY to be NULL.
2055
2056         json: Fix buffer overflow in cJSON.c.
2057         + commit 013a7f47ab486c380b3c97637d3b15f11de74fe8
2058         * src/cJSON.c (parse_string): Correctly detect bad hex.
2059
2060 2018-07-13  Ben McGinnes  <ben@adversary.org>
2061
2062         python bindings: example scripts.
2063         + commit 1bb3f8409d4bbec403bea768184a691d9d7ea42d
2064         * Fixed incorrect mention of output prompt referencing secret keys
2065           when the scripts are only for exporting public keys in whole or
2066           minimised forms.
2067
2068 2018-07-11  Andre Heinecke  <aheinecke@intevation.de>
2069
2070         json: Add with-sec-fprs param to export.
2071         + commit 6cc842c9aa76d19448141e5117ac59452d7a1ff3
2072         * src/gpgme-json.c (add_secret_fprs): New helper.
2073         (op_export, hlp_export): Extend for with-sec fprs.
2074
2075 2018-07-10  Ben McGinnes  <ben@adversary.org>
2076
2077         example scripts: python work-arounds.
2078         + commit 0e760e396fbf13e902d0dc0c048bff0d5410fa16
2079         * fixed three typos which were guaranteed to break said script.
2080
2081 2018-07-09  Ben McGinnes  <ben@adversary.org>
2082
2083         docs: python bindings howto.
2084         + commit 1eceacaff4ad5d6a4b759a7d00907dbc8278f12c
2085         * Complete typographic overhaul.
2086         * Removed all section level indentation since it does not affect
2087           output formatting, but might affect source code examples.
2088         * In text-mode stripped out all tabs which had crept in and replaced
2089           them with four spaces.
2090         * Updated all code examples (again) to conform with Python-mode.
2091         * Bumped version number in preparation for next release of GPG 2.2.9
2092           and corresponding GPGME release.
2093
2094 2018-07-09  Andre Heinecke  <aheinecke@intevation.de>
2095
2096         json: Add with-secret without secret only.
2097         + commit 40471ec12f7b4ba37922813a02ebb2aaaa963b51
2098         * src/gpgme-json.c (op_keylist, hlp_keylist): Add "with-secret"
2099         as a flag to do a public keylist with secret information.
2100
2101         tests: Add --with-secret to run-keylist.c.
2102         + commit c287f09ac0f090a65299ac7c15e3c9b4947d4b67
2103         * run-keylist.c (show_usage, main): Add --with-secret.
2104
2105         doc: More explicit doc for EXTERN and LOCAL modes.
2106         + commit 31bc51e2aff0a28b551410c9def2f578d0d28cea
2107         * doc/gpgme.texi (GPGME_KEYLIST_MODE_EXTERN),
2108         (GPGME_KEYLIST_MODE_LOCATE, GPGME_KEYLIST_MODE_LOCAL): Mention
2109         command line flags for CMS and OpenPGP Protocol.
2110
2111         Add ctx flag for auto-key-locate.
2112         + commit 7bc5d3c7e41c6e42a583a61a4c9504058fbb2976
2113         * src/context.h (gpgme_context): Add auto_key_locate.
2114         * src/engine-gpg.c (engine_gpg): Add auto_key_locate.
2115         (gpg_set_engine_flags, build_argv): Handle auto_key_locate.
2116         (gpg_release): Free auto_key_locate.
2117         * src/gpgme.c (gpgme_release): Free auto_key_locate.
2118         (gpgme_get_ctx_flag, gpgme_set_ctx_flag): Handle auto-key-locate.
2119         * doc/gpgme.texi: Document auto-key-locate flag.
2120         * tests/run-keylist.c (show_usage, main): Add --from-wkd option.
2121
2122 2018-07-07  Ben McGinnes  <ben@adversary.org>
2123
2124         python bindings: howto examples.
2125         + commit cacca62d06c6cf4a291f7ab2571cf52d671d140f
2126         * Made sure all example scripts meet PEP8 compliance.
2127         * Required fixing approx. a dozen of them in minor ways.
2128
2129 2018-07-05  Andre Heinecke  <aheinecke@intevation.de>
2130
2131         qt: Handle OpenPGP Diagnostic log.
2132         + commit 66c2a99422dd9a52d8342165ed1d033c4f29b9e0
2133         * lang/qt/src/threadedjobmixin.cpp (_detail::audit_log_as_html):
2134         Handle OpenPGP audit log differently.
2135
2136         cpp: Add enum mapping for GPGME_AUDIT_LOG_DIAG.
2137         + commit 629afebe5017db97f2a318f6878fe1f9d3e60189
2138         * src/context.cpp (to_auditlog_flags): Map DIAG value.
2139         * src/context.h (AuditLogFlags): Add it.
2140
2141         core: Add gpg auditlog to get diagnostics.
2142         + commit a2458806f8bf04b66795e1dde765b42fe1ef6797
2143         * src/engine-gpg.c (engine_gpg): Add diagnostics member.
2144         (gpg_release): Release diagnostics data.
2145         (gpg_new): Set up logger-fd and diagnostics.
2146         (gpg_getauditlog): New. Copy diagnostics to a user data.
2147         (engine_ops): Add getauditlog.
2148         * src/engine-gpgsm.c (gpgsm_getauditlog): Return not implemented
2149         for GPGME_AUDITLOG_DIAG.
2150         * src/getauditlog.c (getauditlog_start): Don't reset engine
2151         for diagnostics.
2152         * src/gpgme.h.in (GPGME_AUDITLOG_DIAG): New.
2153         (GPGME_AUDITLOG_DEFAULT): New alias to 0.
2154         * tests/run-decrypt.c (show_usage, main): Add --diagnostics.
2155         * doc/gpgme.texi(Additional Logs): Document getauditlog.
2156
2157 2018-07-04  Andre Heinecke  <aheinecke@intevation.de>
2158
2159         cpp: Fix memory of DecryptionResult::symkeyAlgo.
2160         + commit 7d65dc2a5c4f32139a1b9b1f0bd375f7ab1c58f6
2161         * lang/cpp/src/decryptionresult.cpp (Private, ~Private): strdup
2162         the symkey algo.
2163
2164         json: Add keylist mode locate.
2165         + commit 76b847091593669c8a7e38918267d6be97dbd4d0
2166         * src/gpgme-json.c (op_keylist, hlp_keylist): Add locate.
2167
2168 2018-07-01  Ben McGinnes  <ben@adversary.org>
2169
2170         python bindings: scheming serpents.
2171         + commit 5bca49975063f788b2499342d5a565faf54511db
2172         * Apparently I am wrong and Scheme is the new Python after all.
2173         * Non-import related PEP8 compliance must wait for another day, though
2174           the other PEP8 fixes remain.
2175
2176         python bindings: gpg.core.
2177         + commit 789ea1b019885d5d1db1662e3cd4fda33636e30c
2178         * Changed id/else statements to a more pythonic form from scheme
2179           masquerading as python - sorry Justus, it had to go ;).
2180         * With the added bonus of enabling PEP8 compliance in those sections.
2181         * Fixed remaining PEP8 compliance issues with the exception of the
2182           imports at the beginning of the file (changing those will break the
2183           entire module, so we'll cope with it as it is).
2184
2185 2018-06-29  Ben McGinnes  <ben@adversary.org>
2186
2187         m4 update: python 3.7.
2188         + commit 35e29e139534ed217340879732a7adfdbd57c91d
2189         * Fixed an error in arcane m4 syntax.
2190
2191         python bindings: python 3.7.
2192         + commit 43a2b5754571292b25402e20cd044ebda9316c77
2193         * Bindings confirmed to work with the newly released 3.7.0.
2194         * Updated M4 file to reflect this change and correct the Python binary
2195           search order (3.7 is not yet given priority, but will still be found
2196           first via the more generic python3 executable).
2197         * Updated setup.py.in, bindings documentation and README to reflect this.
2198
2199 2018-06-28  Ben McGinnes  <ben@adversary.org>
2200
2201         whitespace police:
2202         + commit 48174b2bcc319e4542aefd0cc3aae02c4083784e
2203         * There's always one or, in this case, two.
2204
2205         docs: python bindings howto.
2206         + commit 6aec7d6e4a5173f54a079719020704a0098b8f0a
2207         * Updated official doc (the org-mode file) with the instructions on
2208           importing and exporting both public and secret keys.
2209
2210         python bindings examples.
2211         + commit a7ccdc51efd8c199b902eb942e9db7b3549e721f
2212         * Added a secret key export variant which saves output as both GPG
2213           binary and ASCII armoured, plus saves in $GNUPGHOME and uses
2214           multiple methods of determining what that location is.
2215
2216         python bindings examples.
2217         + commit 7fc7e80e54235c558051cbf72b51dd60b4ca485e
2218         * Added a key import variant which accesses the SKS keyservers in a
2219           RESTful fashion and then imports or attempts to import the response.
2220
2221         python bindings examples: three export scripts.
2222         + commit 0d163a7d121eacacc5f6da11a3dee3548f98f124
2223         * Example of default exporting keys.
2224         * Example of exporting minimised keys.
2225         * Example of exporting secret keys to a file with correct permissions.
2226
2227         python bindings: import example.
2228         + commit 4251cae34da0d825a29f509ac828f7ecb90c1752
2229         * Added an example script for importing a key from a file (either
2230           ASCII armoured or not).
2231
2232         python bindings: export secret keys.
2233         + commit a5b91b21f561d7b13ddcb62fca3749ed92ea8720
2234         * The holy grail: a function to export secret keys.
2235         * GPGME will still invoke pinentry and gpg-agent as usual to authorise
2236           the export.
2237         * Mostly similar to the two previous export functions for public keys
2238           except that it will return None if the result had a length of zero
2239           bytes.  Meaning that the difference between the specified pattern
2240           (if any) not matching available keys and an incorrect passphrase is
2241           not able to be determined from this function (or the underlying one
2242           for that matter).
2243
2244         python bindings: export public keys.
2245         + commit 7faef33d13fa8efce152ca7aa6e9d39030c1cf08
2246         * Updated key_export and key_export_minimal to return None where a
2247           pattern matched no keys in a manner simnilar to the possible result
2248           of key_export_secret.
2249
2250         python bindings: export public keys.
2251         + commit 89c548efdf46bd7d9e6f0ca34a07efbbf420e821
2252         * Added functions for exporting public keys to gpg.core in both
2253           complete form and in minimised form.
2254         * Rather than letting people need to worry about the export modes we
2255           are simply separating the functions as people would be more familiar
2256           with from the command line usage anyway.
2257         * Functions added for Context are: ctx.key_export_minimal and
2258           ctx.key_export as the default or full export.
2259
2260 2018-06-20  Andre Heinecke  <aheinecke@intevation.de>
2261
2262         json: Add file handling for debug output.
2263         + commit d8beab30c44482fb7a3e445b92cec482792b2ca0
2264         * src/gpgme-json.c (main): Add possibilty to set log file.
2265
2266 2018-06-19  Andre Heinecke  <aheinecke@intevation.de>
2267
2268         Prepare build system for gpgme-js and dist it.
2269         + commit d27703ea4f0eed950cddf0157dc78bcb5d8d1c65
2270         * configure.ac: Add js as language.
2271         * lang/Makefile.am: Add js as dist language.
2272         * lang/js/BrowserTestExtension/Makefile.am,
2273         lang/js/DemoExtension/Makefile.am,
2274         lang/js/Makefile.am,
2275         lang/js/src/Makefile.am: Populate EXTRA_DIST variables.
2276
2277 2018-06-17  Ben McGinnes  <ben@adversary.org>
2278
2279         python bindings: core import statements.
2280         + commit 19c5267f868aa41e73752ac1c76ec7ae1efe07b8
2281         * Fixed the bit I broke while fixing the PEP8 compliance issues.
2282
2283         python bindings: core â€” PEP8 compliance.
2284         + commit a5b24ae46c81d3abd3bb18bf0390cab6ebb2bd77
2285         * Fixed most of the PEP8 errors in core.py
2286         * Those remaining may need more than little edits and are a bit
2287           strange (too clearly the result of a programmer who has spent far
2288           too much time dealing with Lisp so that for Python it looks
2289           ... strange).
2290
2291         python bindings: core - key import.
2292         + commit 5a80e755008bbb3f4c7f91ffccd38f26cd8b3960
2293         * Wrapped the key import function in the try/exception statements
2294           needed to catch at least the most likely unsuccessful import attempt
2295           errors.
2296         * Mostly draws on the file error and no data import statuses for
2297           errors, with a couple of exceptions.
2298
2299         python bindings: core key import.
2300         + commit 0e762608ef5a598030b8d0e56261a830e1b7b724
2301         * The foundation of a pythonic key import function authored by Jacob
2302           Adams.
2303         * A unit testing script for the same function originally authored by
2304           Tobias Mueller
2305         * Added DCO reference for Jacob Adams to the GPGME AUTHORS file.
2306         * Additional details regarding this patch are available here:
2307           https://dev.gnupg.org/T4001
2308
2309 2018-06-10  Ben McGinnes  <ben@adversary.org>
2310
2311         script: groups.py.
2312         + commit 92cd060f5e2f4fdbfbe4812ebe8ef57e82e1609f
2313         * Added check for if it is run on a Windows system so that the correct
2314           binary filename is invoked.
2315
2316 2018-06-08  Andre Heinecke  <aheinecke@intevation.de>
2317
2318         cpp: Add proper gpgme_op_createkey.
2319         + commit 8dff414e170e4df8ea661028c4ac1588311ca26e
2320         * lang/cpp/src/context.cpp, lang/cpp/src/context.h
2321         (Context::createKeyEx): New.
2322
2323         json: Return fingerprint as createkey result.
2324         + commit 54146d90dd5518c24c30e6d2ebeb7f47ed4eb29e
2325         * src/gpgme-json.c (op_createkey): Return fingerprint of new key.
2326
2327         json: Add op_createkey.
2328         + commit 6c74a59e8855d1cac0d8001ad1b7843d2d15be5e
2329         * src/gpgme-json.c (hlp_createkey, op_createkey): New.
2330         (process_request, hlp_help): Add it.
2331
2332         json: Generalize chunking and getmore.
2333         + commit af8510fb7f4d5c90cc53f10dcc740f377af73d68
2334         * src/gpgme-json.c (MIN_REPLY_CHUNK_SIZE): Lower value to
2335         new real minimum.
2336         (DEF_REPLY_CHUNK_SIZE): Don't chunk by default.
2337         (pending_data): Remove type and base64.
2338         (make_data_object): Remove chunksize handling as this is now
2339         generic.
2340         (encode_and_chunk): Setup the pending_data buffer for chunking
2341         if required.
2342         (op_getmore): Changed to generically work on a response.
2343         (hlp_getmore): Update accordingly.
2344         (hlp_help): Document chunksize as generic parameter for all commands.
2345         (process_request): Use encode_and_chunk on the response.
2346         (hlp_encrypt, op_encrypt, hlp_decrypt, op_decrypt),
2347         (hlp_verify, op_verify, hlp_sign, op_sign),
2348         (op_keylist, hlp_keylist, hlp_export, op_export): Update accordingly.
2349
2350 2018-06-07  Andre Heinecke  <aheinecke@intevation.de>
2351
2352         json: Rework verify_result_to_json.
2353         + commit e48f4a18f807ee42b31968b84f6ae7811d8d8a45
2354         * src/gpgme-json.c (sigsum_to_json): Add bool repr.
2355         (signature_to_json, verify_result_to_json): Extend and follow better
2356         pattern.
2357         (hlp_decrypt, hlp_verify): Expand doc.
2358
2359         json: Add direct way to query a config option.
2360         + commit 906ea48df3e178bea3e2c744ddd834b23fe553fb
2361         * src/gpgme-json.c (op_config_opt, hlp_config_opt): New operation.
2362         (process_request, hlp_help): Add it.
2363
2364         json: Add op_config to query gpgconf.
2365         + commit 7e18c7a07a1e2c58ef4d5ddeed46bcce098bdf6c
2366         * src/gpgme-json.c (op_config, hlp_config): New.
2367         (hlp_help, process_request): Add config.
2368         (conf_arg_to_json, conf_opt_to_json, conf_comp_to_json): New
2369         helpers.
2370
2371 2018-06-07  Ben McGinnes  <ben@adversary.org>
2372
2373         examples: python howto.
2374         + commit a3a08584d6e57c4b2a40d74dc52a7d8c5c11b501
2375         * Uses the groups module to prepare a list of recipients and encrypt
2376           to those.
2377         * The main version (encrypt-to-group.py) tries to check for invalid
2378           recipients, but still falls back to always trust for the second
2379           encryption attempt.
2380         * The gullible version doesn't try pruning the recipient list at all,
2381           it just tries to encrypt and if it fails, switches straight to
2382           always trust.
2383         * The trustno1 version doesn't use the always trust model at all and
2384           only attempts pruning the list of invalid recipients.
2385
2386 2018-06-06  Werner Koch  <wk@gnupg.org>
2387
2388         core: Return a better error code on certain decryption failures.
2389         + commit 2c4c5692472f5870f907c2c3f01870879cb0c34b
2390         * src/decrypt.c (op_data_t): Add field first_status_error.
2391         (parse_status_error): Set it.
2392         (_gpgme_decrypt_status_handler): Prefer an ERROR code over a
2393         NO_SECKEY.
2394
2395 2018-06-05  Werner Koch  <wk@gnupg.org>
2396
2397         json: Allow to compile with libgpg-error < 1.28.
2398         + commit 998fec8a4fbc46315fe6836980954eed402b38c5
2399         * src/cJSON.c: Use gpgrt fucntion only if available.
2400
2401 2018-06-02  Ben McGinnes  <ben@adversary.org>
2402
2403         docs: python bindings howto.
2404         + commit 897423422b9d3b856bfb72fbe1995b91d153a54e
2405         * Another attempt at fixing the org-mode version.
2406         * A proof reader ascertained there were tabs in it instead of whitespace.
2407         * Stripped the lot out and replaced with standard 4 spaces, fixed
2408           every incorrect example ... and it still breaks upon save and/or export.
2409         * Added the reference to the mutt-groups.py script to demonstrate the
2410           groups.py module/code.
2411
2412         Authors: DCO.
2413         + commit e144a6d70657675e28d43e42b48d879ff9b81d73
2414         * Added mine to the GPGME AUTHORS file.  Mainly so I'm doing what I
2415           say myself when about to request another from someone ...  ;)
2416
2417 2018-06-01  Andre Heinecke  <aheinecke@intevation.de>
2418
2419         cpp: Add gpgme_(get)set_ctx_flag.
2420         + commit 00b027af86f33782933c6200fe1ffe40e85f4346
2421         * NEWS: Mention API extensions.
2422         * lang/cpp/src/context.cpp, lang/cpp/src/context.h
2423         (Context::setFlag, Context::getFlag): New.
2424
2425         cpp: Add legacy_cipher_nomdc.
2426         + commit d46768c96082b4fd076506d7d3f0c03e61c59d51
2427         * lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h
2428         (DecryptionResult::isLegacyCipherNoMDC): New.
2429
2430 2018-06-01  Werner Koch  <wk@gnupg.org>
2431
2432         core: New context flag "ignore-mdc-error".
2433         + commit 662604c5bcb4e03d3c9ecc670d4f320a2418ebb3
2434         * src/context.h (gpgme_context): Add field ignore_mdc_error.
2435         * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Set/get it.
2436         * src/engine-gpg.c (engine_gpg): Add flags.ignore_mdc_error.
2437         (gpg_set_engine_flags): Set it.
2438         (build_argv): Pass option to gpg.
2439         * src/decrypt.c (_gpgme_decrypt_status_handler): Take care of flag.
2440         (gpgme_op_decrypt_result): Clear flag.
2441         (gpgme_op_decrypt): Clear flag.
2442         * src/decrypt-verify.c (gpgme_op_decrypt_verify): Clear flag
2443         (gpgme_op_decrypt_ext): Clear flag.
2444
2445         * tests/run-decrypt.c (show_usage): Add option --ignore-mdc-error.
2446
2447         core: New decryption result flag 'legacy_cipher_nomdc'.
2448         + commit dd19cabe81b7bf4177ea2ca741f6eb6cd1cab25e
2449         * src/gpgme.h.in (_gpgme_op_decrypt_result): Add flag
2450         legacy_cipher_nomdc.
2451         * src/decrypt.c (parse_status_error): Set this flag.
2452         * tests/run-decrypt.c (print_result): print it.
2453         (main): Print the result even on error.
2454
2455         core: Remove cruft from the engine-gpg code.
2456         + commit e2aa38b56a991a0da052acfe7566cc7a146d3bb6
2457         * src/engine-gpg.c (read_status): Remove the handling of
2458         GPGME_STATUS_END_STREAM; this was used only by the former experimental
2459         --pipemode of gpg but that is not even anymore invoked here.
2460         (struct engine_gpg): Remove cmd.linked_data and .linked_idx.
2461         (build_argv): Remove code for linked_data.
2462         (gpg_new): Ditto.
2463         (gpg_set_command_handler): Remove arr linked_data.
2464         * src/engine-backend.h (engine_ops): Remove arg data from
2465         set_command_handler.
2466         * src/engine.c (_gpgme_engine_set_command_handler): Remove arg
2467         linked_data and adjust all callers.
2468
2469         core: Minor cleanup in engine-gpg and -gpgsm.
2470         + commit 2219fc19d58ae1071493de92093b711f3c71454a
2471         * src/engine-gpg.c: Remove errno.h.
2472         (build_argv): Use gpg_error_from_syserror instead of ERRNO.
2473         * src/engine-gpgsm.c: Remove errno.h.
2474         (status_handler): Remove check for EINTR; gpgme_data_write already
2475         handles EINTR.
2476
2477 2018-05-29  Andre Heinecke  <aheinecke@intevation.de>
2478
2479         cpp: Add gpgme_data_rewind to cpp API.
2480         + commit 618aa7f08db41911f25632d9fba23bca80908ebe
2481         * lang/cpp/src/data.h, lang/cpp/src/data.cpp (Data::rewind): New.
2482         * lang/qt/tests/t-various.cpp (testDataRewind): Test it.
2483
2484 2018-05-28  Werner Koch  <wk@gnupg.org>
2485
2486         json: Fix compiler warning.
2487         + commit 77166851f165b1220dcf0116bb61f81e58e4512f
2488         * src/gpgme-json.c (op_version): Mark request as unused.
2489
2490         json: Do not allow to export or delete secret keys.
2491         + commit 0de991fee05a9733ac29b2fa35643fe4607e56cb
2492         * src/gpgme-json.c (op_export, op_delete): Return GPG_ERR_FORBIDDEN if
2493         "secret" is used.
2494
2495         json: Fix use of get_context.
2496         + commit 368f2d9db30df16328b34787419de99fe3e1e2f1
2497         * src/gpgme-json.c (create_onetime_context): New.
2498         (release_onetime_context): New.
2499         (op_sign): Use the new fucntions to create a separate context.
2500         (op_encrypt): Use a separate context for key listings.
2501         (create_keylist_patterns): Remove unneeded cast.
2502
2503 2018-05-25  Andre Heinecke  <aheinecke@intevation.de>
2504
2505         json: Implement encrypt-sign.
2506         + commit 7aa00917c7f13294584daba31a506730f0015ef5
2507         * src/gpgme-json.c (op_encrypt): Add optional signing_keys param.
2508         (get_keys, create_keylist_patterns): Add param for json object name.
2509
2510         json: Implement delete command.
2511         + commit 73dc5e933d609989bd9ec428c89ada95d5eaec8a
2512         * src/gpgme-json.c (op_delete): New.
2513         (hlp_help, process_request): Add it.
2514
2515         json: Implement op_export.
2516         + commit a1bbe7473a4d0f31d471d6cceb2f7e1382860194
2517         * src/gpgme-json.c (op_export): New.
2518         (hlp_getmore, process_request): Add it.
2519
2520         json: Fix double ctx alloc.
2521         + commit 897522527d493307d15809a41496f8b76ec4edfe
2522         * src/gpgme-json.c (op_keylist): Only get one ctx.
2523
2524         json: Add guard in create_keylist_patterns.
2525         + commit 10683b1a913c39238c9871f5aa607334f32467f7
2526         * src/gpgme-json.c (create_keylist_patterns): Guard against
2527         a string ending with a linbreak.
2528
2529         json: Implement import operation.
2530         + commit 1ff16dad595946af140b324fad2bceca7ddbc378
2531         * src/gpgme-json.c (op_import): New.
2532         (import_status_to_json, import_result_to_json): New.
2533         (hlp_help, process_request): Add import.
2534
2535         json: Improve keylist help.
2536         + commit fe06929deec6544e2f267937dc5dafe2555bf485
2537         * src/gpgme-json.c (hlp_keylist): Clarify doc about keys parameter.
2538
2539         json: Fix keylist pattern handling.
2540         + commit 10724e363d6b5b06f51808287ad63e142e419ae6
2541         * src/gpgme-json.c (xfree_array): New helper.
2542         (create_keylist_patterns): Convert keystring to gpgme patterns.
2543         (op_sign, op_keylist): Use it.
2544
2545         json: Add additional commands to help.
2546         + commit ed20936ce4d5bb066828346b9a06d2dfa8d6afb2
2547         * src/gpgme-json.c (hlp_help): Add additional commands.
2548
2549         json: Refactor signature and ei code.
2550         + commit aa59f4970ac106ccd17fa9fadfc264d11e4cd347
2551         * src/gpgme-json.c (add_summary_to_object): Changed to:
2552         sigsum_to_json.
2553         (add_signature_to_object): Changed to signature_to_json.
2554         (add_signatures_to_object): Changed to verify_result_to_json.
2555         (add_ei_to_object): Changed to engine_info_to_json.
2556         (op_decrypt, op_verify, op_version): Use new functions.
2557
2558         json: Implement keylist.
2559         + commit 546e3295eaade073c34364c4ea6ab007532824d8
2560         * src/gpgme-json.c (xjson_AddStringToObject0)
2561         (xjson_AddItemToObject): New helpers.
2562         (sig_notation_to_json, key_sig_to_json, tofu_to_json)
2563         (uid_to_json, subkey_to_json, key_to_json): New
2564         GPGME to JSON functions.
2565         (op_keylist): New.
2566         (process_request): Add op_keylist.
2567
2568         json: Deduplicate input handling code.
2569         + commit a46c27b32111b1737a405c5be48c0f9ddbbbb353
2570         * gpgme-json.c (get_string_data): New.
2571         (op_verify, op_sign, op_decrypt, op_encrypt): Use it.
2572
2573 2018-05-24  Ben McGinnes  <ben@adversary.org>
2574
2575         examples: mutt crypt-hooks generator.
2576         + commit 321005c12f716814d86e139eb265437bda01380f
2577         * Added a script which demonstrates how the groups module works.
2578         * Script generates Mutt/Neomutt crypt-hooks for every group entry in
2579           gpg.conf, including those entries for multiple keys (Mutt handles
2580           that differently).
2581
2582         docs: python bindings howto.
2583         + commit 48e946a96d05effd56b34761b98eebb6b2a6fae1
2584         * Fixed the groups.py script so it really does what is described (the
2585           old code had the same result for groups, group_lines and
2586           group_lists).
2587         * Updated the corresponding example in the doc to match.
2588
2589         doc: python bindings howto.
2590         + commit 9038d30017b2e38b183d093f9b5d46e1f24c70a6
2591         * Fixed org-mode python source indenting.
2592         ** Note: nested indented blocks do not indent correctly when exported
2593            to [X]HTML.
2594
2595 2018-05-24  Andre Heinecke  <aheinecke@intevation.de>
2596
2597         json: Add code to gpg_error based messages.
2598         + commit 9fca7c84067c0d4c968c8920dc8ef9449769c5ea
2599         * src/gpgme-json.c (gpg_error_object): New.
2600         (error_object_v): Extend to take error.
2601
2602         json: Implement op_version.
2603         + commit 61f4532ba979dea1acd8c7de9b7d56bb8ff552d5
2604         * src/gpgme-json.c (op_version): New.
2605         (process_request): Extend for version.
2606         (protocol_to_string, add_ei_to_object): New helpers.
2607
2608         json: Implement op_verify.
2609         + commit 5fbf81c18b277b30639ba09e8c5d21573b444b00
2610         * src/gpgme-json.c (op_verify): New.
2611         (hlp_help): Add verify.
2612         (process_request): Add verify.
2613
2614         json: Put signature info before data output.
2615         + commit c679ed24778c997fee72d3613babad8680855882
2616         * src/gpgme-json.c (op_decrypt): Move info before data.
2617
2618         json: Add sign to help.
2619         + commit a6cd3a1197eb4efea0950394959c252f24475f67
2620         * src/gpgme-json.c (hlp_help): Add sign.
2621
2622         json: Add op_sign.
2623         + commit 1c0a55a60847563fecf92a383457ab3576aec5d8
2624         * src/gpgme-json.c (op_sign): New.
2625
2626         json: Fix invalid function call.
2627         + commit b344933e4cb17f2f26c4ed355217428bda8b8c40
2628         * src/gpgme-json.c (add_signatures_to_object): Fix call to
2629         xjson_CreateArray.
2630
2631         json: Print signatures for decrypt/verify.
2632         + commit 45036c3c4c11f7bd56a00805564108e9377b657e
2633         * gpgme-json.c (xJSON_CreateArray),
2634         (add_summary_to_object, validity_to_string): New helpers.
2635         (add_signature_to_object, add_signatures_to_object)
2636         (add_signatures_object): New.
2637         (op_decrypt): Handle verify_result.
2638         (hlp_help): Mention decrypt.
2639
2640         json: Minor typo fixes.
2641         + commit fd5e14660a6f4eb1a89d69534e3e435f7fb05f8a
2642         * src/gpgme-json.c: Minor typo fixes.
2643
2644 2018-05-23  Ben McGinnes  <ben@adversary.org>
2645
2646         docs and examples: python howto.
2647         + commit 3a9e6a8e088e233097866bb0560a36cfbbc4470e
2648         * Updated the decryption example code in the HOWTO and the
2649           corresponding decrypt-file.py script to gracefully handle a
2650           decryption failure.  This error will always be triggered when GPGME
2651           is used to try to decrypt an old, MDC-less encrypted message or
2652           file.
2653
2654 2018-05-22  Andre Heinecke  <aheinecke@intevation.de>
2655
2656         cpp: Expose sessionKey and symkeyAlgo.
2657         + commit 28e3778ce21069006153bc156a414de6d9347962
2658         * lang/cpp/decryptionresult.cpp, lang/cpp/decryptionresult.h
2659         (DecryptionResult::symkeyAlgo, DecryptionResult::sessionKey): New.
2660
2661 2018-05-17  Andre Heinecke  <aheinecke@intevation.de>
2662
2663         core, w32: Add w64 handling for regkeys.
2664         + commit e04b8142df21a49e6c4a3f8234cc14bfec217222
2665         * src/w32-util.c (_gpgme_get_gpg_path): Use new defines.
2666         (GNUPG_REGKEY_2): x64 aware regkey as used by GnuPG in Gpg4win 2.x
2667         (GNUPG_REGKEY_3): x64 aware regkey as used by GnuPG in Gpg4win 3.x
2668         (_gpgme_get_gpgconf_path): Use new regkeys. Add another fallback.
2669
2670 2018-05-17  Werner Koch  <wk@gnupg.org>
2671
2672         core: Always fail if an OpenPG message is not integrity protected.
2673         + commit 8a0c8c52510d9c2d934f85159f04b666286b1786
2674         * src/decrypt.c (struct op_data_t): Add field not_integrity_protected.
2675         (parse_decryption_info): Set this.  Also rename mode to aead_algo for
2676         clarity.
2677         (_gpgme_decrypt_status_handler): Force failure in case of a missing
2678         MDC.
2679
2680 2018-05-09  Werner Koch  <wk@gnupg.org>
2681
2682         json: Improve auto-base64 encoding to not split UTF-8 chars.
2683         + commit e54b110aec3165a32ff9551d0c5227b88aa3dd4f
2684         * src/gpgme-json.c (make_data_object): Switch to Base64 also for UTF-8
2685         characters.
2686
2687         core: Make the status-fd monitor work for all gpgsm commands.
2688         + commit e2a8a87bf9cfae5d4e8a5953c2a5303b44feb398
2689         * src/engine-gpgsm.c (status_handler): Call the status monitor also
2690         here.
2691
2692 2018-05-05  Ben McGinnes  <ben@adversary.org>
2693
2694         python: key expiration datetime stamp tests.
2695         + commit 46da79e3de99a7b65748994921d6aab73b9974e7
2696         * Changed the expiration date for the generated test key to NYE this
2697           century, rather than the NYE this millennium as originally suggested
2698           in job #3815.
2699         * This covers the lifetimes of current users (except, maybe, some very
2700           healthy millennials) as well as the 32-bit clock end date in 2038;
2701           without falling foul of OpenPGP's 2106 expiration.
2702
2703 2018-05-04  Andre Heinecke  <aheinecke@intevation.de>
2704
2705         qt: Respect --disable-gpg-test for tests.
2706         + commit 26820ba62920acfe2775bce8fc2bc8b3f17b1c10
2707         * lang/qt/Makefile.am: Respect --disable-gpg-test
2708
2709 2018-04-26  Andre Heinecke  <aheinecke@intevation.de>
2710
2711         qt: Fix filename handling in cryptoconfig.
2712         + commit 6b267c56fd6e54fb1c254455c04495534260b547
2713         * src/qgpgmenewcryptoconfig.cpp (QGpgMENewCryptoConfigEntry::urlValue):
2714         Build url from local file.
2715         (QGpgMENewCryptoConfigEntry::setURLValue): Set native seperated
2716         path.
2717
2718 2018-04-20  Maximilian Krambach  <maximilian.krambach@intevation.de>
2719
2720         js: encrypt improvement and decrypt method.
2721         + commit 6ab25e40d904007755c5d999bf66ae264236e745
2722         * Compatibility class gpgme_openpgpjs offers an API that should accept
2723           openpgpjs syntax, throwing errors if a parameter is unexpected/not
2724           implemented
2725         * tried to be more generic in methods
2726         * waiting for multiple answers if 'more' is in the answer
2727         * more consistency checking on sending and receiving
2728         * updated the example extension
2729
2730 2018-04-20  Andre Heinecke  <aheinecke@intevation.de>
2731
2732         core: Do not modify args for ignored failures.
2733         + commit 7706fa2c922f5e02570b01f145ed474e82341042
2734         * src/op-support.c (_gpgme_parse_failure): Ignore gpg-exit failures
2735         before modifying args.
2736
2737 2018-04-20  Werner Koch  <wk@gnupg.org>
2738
2739         Release 1.11.1.
2740         + commit 2e9a14912fb906c17017553ccd0941d172e095ff
2741         * configure.ac: Bump LT version to C31/A20/R1.  For cpp to C13/A7/R0.
2742         For qt to: C10/A3/R2.
2743
2744         core: Remove another debug output leftover.
2745         + commit f779362ffbc7b9334d98f9ee50bfe3c2dc177215
2746         * src/decrypt.c (_gpgme_decrypt_status_handler): Remove log debug.
2747
2748         build: More release creation automation.
2749         + commit d11bec5ef5e576dab52c1dc7d87758e4f9bf3583
2750         * Makefile.am: Add release and sign-release targets.
2751
2752 2018-04-19  Werner Koch  <wk@gnupg.org>
2753
2754         json: Remove the -noinstall flag used during development.
2755         + commit ab43d85b9a76fb5ba321f4c7280b4d72bfd67f59
2756         * src/Makefile.am (gpgme-json_LDFLAGS): Remove.
2757
2758 2018-04-19  Andre Heinecke  <aheinecke@intevation.de>
2759
2760         cpp: Add origin and last_update to UserID.
2761         + commit d65d6329319bff8cc555999fc92a20e151762a10
2762         * NEWS: Mention it.
2763         * lang/cpp/src/key.cpp, lang/cpp/src/key.h (UserID::lastUpdate),
2764         (UserID::origin): New.
2765         (gpgme_origin_to_pp_origin): New helper.
2766
2767         cpp: Add origin and last_update.
2768         + commit 0adaf7bafd352f1c3a1e797493780150e3bb0adc
2769         * NEWS: mention interface change.
2770         * lang/cpp/src/key.cpp (Key::origin, Key::lastUpdate): New.
2771         * lang/cpp/src/key.h (Key::Origin): New enum.
2772
2773 2018-04-19  Werner Koch  <wk@gnupg.org>
2774
2775         core: Remove leftover debug output.
2776         + commit b52a91f5a6818db6b3dd7ce86c01b5d5f6700d0d
2777         * src/verify.c (_gpgme_verify_status_handler): Remove debug output.
2778
2779         tests: Fix t-verify test for GnuPG < 2.2.7.
2780         + commit 3d8e5c07511938a0b30b4626530822338abd9ec0
2781         * tests/gpg/t-verify.c (check_result): Tweak for gnupg < 2.2.7.
2782
2783 2018-04-18  Werner Koch  <wk@gnupg.org>
2784
2785         Release 1.11.0.
2786         + commit 3f55c52b9adc3680c7a9fb0e598598e6ed3a2a5d
2787         * configure.ac: Bump LT version to C31/A20/R0.  For cpp to C12/A6/R0.
2788         For qt to: C10/A3/R1.
2789
2790         json: Add stpcpy replacement.
2791         + commit 8e34a14fe694a8c765973aaa3a8b2a2d2c3ba8b9
2792         * src/gpgme-json.c [!HAVE_STPCPY](_my_stpcpy): New.
2793
2794         core: New convenience constant GPGME_KEYLIST_MODE_LOCATE.
2795         + commit 55e9a94680370e584fbe5d21161a2cee3fe95744
2796         * src/gpgme.h.in (GPGME_KEYLIST_MODE_LOCATE): New.
2797
2798         json: Add command "decrypt" to gpgme-json.
2799         + commit e5273fc4431dfb597a2d9cf4af5172572476a2de
2800         * src/gpgme-json.c (make_data_object): Enable auto-detection of
2801         base-64.
2802         (op_encrypt): Support a 'mime' flag.
2803         (op_decrypt): New.
2804         (process_request): Add command "encrypt".
2805
2806         core: Add 'is_mime' flags to the verify and decrypt results.
2807         + commit 65479fe7b871ad6237d5a8959b73afcc7db784da
2808         * src/op-support.c (_gpgme_parse_plaintext): Add arg r_mime.
2809         * src/decrypt.c (_gpgme_decrypt_status_handler): Ser mime flag.
2810         * src/verify.c (_gpgme_verify_status_handler): Ditto.
2811         * src/gpgme.h.in (gpgme_op_verify_result_t): Append fields 'is_mime'
2812         and '_unused'.
2813         (gpgme_op_decrypt_result_t): New field 'is_mime'.  Shrink '_unused'.
2814
2815         * tests/run-decrypt.c (print_result): Print MIME flag.
2816         * tests/run-verify.c (print_result): Ditto.
2817
2818         core: Fix possible compliance mode detection error.
2819         + commit 23177e4410d05d590c0f2e1675dc645bbb4ad62c
2820         * src/verify.c (_gpgme_verify_status_handler): Insert missing break.
2821
2822         json: Improve help meta command in gpgme-json.
2823         + commit 49a617f8bbff116884ca5c7238c2e0ea4e26ce59
2824         * src/gpgme-json.c (process_meta_commands): Add ",help CMD".
2825
2826         json: Add command "getmore" to gpgme-json.
2827         + commit ed1052842df633bc149b14c4cb17859e3c66afe4
2828         * src/gpgme-json.c (MIN_REPLY_CHUNK_SIZE): New const.
2829         (DEF_REPLY_CHUNK_SIZE): New const.
2830         (MAX_REPLY_CHUNK_SIZE): New const.
2831         (pending_data): New var.
2832         (add_base64_to_object): Chnage to take a plain data pointer.
2833         (get_chunksize): New.
2834         (make_data_object): New.
2835         (op_encrypt): Get chunksize and use make_data_object.
2836         (op_getmore): New.
2837         (process_request): Release pending data for all commands but "getmore"
2838         and "help".
2839
2840         json: Add meta command ,read to gpgme-json.
2841         + commit e69b175e8ed5430b56e2e8f3d68c16a45f0fed17
2842         * src/gpgme-json.c: Include stat.h.
2843         (get_file): New.
2844         (process_meta_commands): Implement ",read".
2845
2846 2018-04-17  Werner Koch  <wk@gnupg.org>
2847
2848         core: Extend decryption result with symkey_algo.
2849         + commit 01435da498af9f7538d7ee810392d7eaa407957e
2850         * src/gpgme.h.in (gpgme_op_decrypt_result_t): Add field 'symkey_algo'.
2851         * src/decrypt.c (release_op_data): Free SYMKEY_ALGO.
2852         (gpgme_op_decrypt_result): Make sure SYMKEY_ALGO is not NULL.
2853         (parse_decryption_info): New.
2854         (_gpgme_decrypt_status_handler): Parse DECRYPTION_INFO status.
2855         * src/conversion.c (_gpgme_cipher_algo_name): New.
2856         (_gpgme_cipher_mode_name): New.
2857
2858         * tests/run-decrypt.c (print_result): Print SYMKEY_ALGO
2859
2860         * src/util.h (_gpgme_map_gnupg_error): Remove obsolete prototype.
2861
2862         core: New keyword --file for OpenPGP recpstring.
2863         + commit 3589da0500f1c80717e658d103a0cb2751d27b49
2864         * src/engine-gpg.c (append_args_from_recipients_string): Add new
2865         flags.
2866
2867         core: For OpenPGP let offline mode disable dirmngr.
2868         + commit c143ab692c7fc7cf2ec0aebe40b9479ee15eaba9
2869         * src/engine-gpg.c (struct engine_gpg): New flag.offline.
2870         (gpg_set_engine_flags): Set it.  Also fix setting of no_symkey_cache.
2871         (build_argv): Pass --disable-dirmngr in offline mode.
2872
2873 2018-04-17  Tobias Mueller  <muelli@cryptobitch.de>
2874
2875         python: Fix crash by leaving struct members intact.
2876         + commit bbfa7c42337bb619e6af20bf051fe0755ed5a9fd
2877         * lang/python/setup.py.in: Copy gpgme.h instead of parsing it.
2878
2879 2018-04-17  Werner Koch  <wk@gnupg.org>
2880
2881         core: Allow for --hidden keyword in OpenPGP recpstrings.
2882         + commit 4bba3b8e2c350b8ff0d562ec63cc03a096448d84
2883         * src/engine-gpg.c (append_args_from_recipients_string): Add special
2884         keywords.
2885
2886         core: New encryption flag GPGME_ENCRYPT_WANT_ADDRESS.
2887         + commit 86efba2be270d2cdd0bc66c9d3fe190495b7af2f
2888         * src/gpgme.h.in (GPGME_ENCRYPT_WANT_ADDRESS): New flag.
2889         * src/engine-gpg.c (add_arg_recipient): New.
2890         (add_arg_recipient_string): New.
2891         (append_args_from_recipients): Call new helper function.
2892         (append_args_from_recipients_string): Ditto.
2893         * src/gpgme-json.c (op_encrypt): Add flag "want-address".
2894
2895         core: Add extended versions of the encrypt functions.
2896         + commit a1f76b3b54b75a150fe272b804d85ffd40a507a6
2897         * src/gpgme.h.in (gpgme_op_encrypt_ext_start) New.
2898         (gpgme_op_encrypt_ext): New.
2899         (gpgme_op_encrypt_sign_ext_start): New.
2900         (gpgme_op_encrypt_sign_ext): New.
2901         * src/libgpgme.vers, tests/run-encrypt.c: Add them.
2902
2903         * src/encrypt.c (encrypt_start): Add arg recpstring.
2904         (gpgme_op_encrypt): Factor code out to ...
2905         (gpgme_op_encrypt_ext): new function with new arg recpstring.
2906         (gpgme_op_encrypt_start): Factor code out to ...
2907         (gpgme_op_encrypt_ext_start): new function with new arg recpstring.
2908         * src/encrypt-sign.c (encrypt_sign_start): Add arg recpstring.
2909         (gpgme_op_encrypt_sign): Factor code out to ...
2910         (gpgme_op_encrypt_sign_ext): new function with new arg recpstring.
2911         (gpgme_op_encrypt_sign_start): Factor code out to ...
2912         (gpgme_op_encrypt_sign_ext_start): new function with new arg
2913         recpstring.
2914
2915         * src/engine-backend.h (struct engine_ops): Change fields encrypt and
2916         encrypt_sign.
2917         * src/engine.c (_gpgme_engine_op_encrypt): Add arg recpstring and pass
2918         to engine.
2919         (_gpgme_engine_op_encrypt_sign): Ditto.
2920         * src/engine-gpg.c (append_args_from_recipients_string): New.
2921         (gpg_encrypt): Add arg recpstring and call new function as needed.
2922         (gpg_encrypt_sign): Ditto.
2923         * src/engine-gpgsm.c (set_recipients_from_string): New.
2924         (gpgsm_encrypt): Add arg recpstring and call new function as needed.
2925         * src/engine-uiserver.c (set_recipients_from_string): New.
2926         (uiserver_encrypt): Add arg recpstring and call new function as
2927         needed.
2928
2929         * tests/run-encrypt.c (xstrdup): New.
2930         (main): Add option --keystring.
2931
2932         * src/gpgme-json.c (get_keys): Simplify.
2933         (op_encrypt): Modify to make use of the extended encrypt function.
2934
2935 2018-04-12  Werner Koch  <wk@gnupg.org>
2936
2937         core: Tweak STATUS_FAILURE handling.
2938         + commit b99502274ae5efdf6df0d967900ec3d1e64373d7
2939         * src/op-support.c (_gpgme_parse_failure): Ignore failures with
2940         location "gpg-exit".
2941         * tests/gpg/t-verify.c (main): Adjust for the now working checking of
2942         the second key.
2943
2944         core: For a failed verification return the sig's fingerprint.
2945         + commit 478d1650bbef84958ccce439fac982ef57b16cd0
2946         * src/verify.c (parse_new_sig): Parse the new ERRSIG fpr.
2947
2948         tests: Avoid segv in run-verify due to Policy URLs.
2949         + commit ee8fad3ea0cbc82f31c86b3483abd8549df62b69
2950         * tests/run-verify.c (print_result): Take care of Policy URLs.
2951
2952         tests: Add another check to gpg/t-verify.
2953         + commit bdf7cd2e28432cf0fa7e0758acdfee03d7bfd45f
2954         * tests/gpg/t-verify.c (PGM): New.  Use it instead of __FILE__.
2955         (test_sig1_plus_unknown_key): New test signature.
2956         (check_result): Allow checking of several signatures.
2957         (main): Check a signature with a know and an unknown key.
2958
2959         core: Add new context flag "no-symkey-cache".
2960         + commit f7700a016926f0d8e9cb3c0337837deb7fe01079
2961         * src/gpgme.c (gpgme_set_ctx_flag): Set flag.
2962         (gpgme_get_ctx_flag): Get flag.
2963         * src/context.h (struct gpgme_context): Add field no_symkey_cache.
2964         * src/engine-gpg.c (struct engine_gpg): Ditto.
2965         (gpg_set_engine_flags): Set flag.
2966         (build_argv): Pass option --no-symkey-cache to gpg.
2967
2968         * tests/run-decrypt.c (print_result): Fix segv for symmetric messages.
2969         (main): New option --no-symkey-cache.
2970         * tests/run-encrypt.c (main): New option --no-symkey-cache.
2971
2972 2018-04-04  Andre Heinecke  <aheinecke@intevation.de>
2973
2974         qt: Add test for resetting config value.
2975         + commit 5eb261d6028ab2c0ddd9af8e3e1f82e479c6109c
2976         * lang/qt/tests/t-config.cpp (CryptoConfigTest::testDefault): New.
2977
2978 2018-03-29  Werner Koch  <wk@gnupg.org>
2979
2980         json: Build only a dummy if libgpg-error is < 1.28.
2981         + commit 60d7a1e8f625ea0db455bff989534dd52f0650c7
2982
2983
2984 2018-03-29  Ben McGinnes  <ben@adversary.org>
2985
2986         example: revoke UID.
2987         + commit 3b91f6af378ccc37dcf8924cbc157894c35b5192
2988         * Script to revoke a UID on an existing key.
2989
2990         docs: python bindings howto.
2991         + commit d65864989c0560b5f51cb8d05d9ea9f1957b453e
2992         * Added section on revoking UIDs.
2993
2994         example: key signing.
2995         + commit 56bbfd39acea90eb87a28b11a515b0314cdda54c
2996         * Added script for signing or certifying keys.
2997
2998         doc: python bindings howto.
2999         + commit 5a553f5a317e5ad5ab0274d58854df1ecf390e0d
3000         * Fixed a typo.
3001
3002 2018-03-28  Ben McGinnes  <ben@adversary.org>
3003
3004         docs python bindings howto.
3005         + commit 2f507b045909d32bf29d23da04db02b078e5fb9d
3006         * PEP8 compliance: a collection of minor edits across multiple example
3007           code snippets.
3008
3009         example: add user ID.
3010         + commit 5cd419341807d8ae23fec7bd9bb7025a8a2dcb3c
3011         * Added script to add a UID to an existing key.
3012
3013 2018-03-28  Werner Koch  <wk@gnupg.org>
3014
3015         json: Remove the "message" object thingy again.
3016         + commit 3345a17dda2222e3c1592235e8a1cd9493192777
3017         * src/gpgme-json.c (process_request): Remove 'nm_mode'.
3018
3019         json: Make native messaging work.
3020         + commit 4b2fa657d195382d14ac99be40b66327e0fc855c
3021         * src/gpgme-json.c (opt_debug): New.
3022         (process_request): Add optional arg nm_mode.  In this mode take the
3023         request from a "message" object.
3024         (native_messaging_repl): Add debug output and call process_request
3025         in NM_MODE.
3026         (main): Add option --debug.  Parse envvar GPGME_JSON_DEBUG as an
3027         alternative way to enable this.  Use a default log file.
3028
3029 2018-03-27  Andre Heinecke  <aheinecke@intevation.de>
3030
3031         core: Initialize key return value in gpgme_get_key.
3032         + commit 7c220e387d511b0cf66f99370759c36b729cc444
3033         * src/keylist.c (gpgme_get_key): Set r_key to NULL.
3034
3035 2018-03-27  Ben McGinnes  <ben@adversary.org>
3036
3037         doc: python bindings howto.
3038         + commit a2eedef630891397f8eccb5bb426a0728588bf41
3039         * Fixed some minor PEP8 compliance issues in the key creation examples.
3040
3041         example: key creation.
3042         + commit f9159b1d75d3209b1c22bbb0ed4472800b60a522
3043         * Script to generate a new key with encryption subkey taking input
3044           from interactive prompts.
3045         * Will also take a passphrase via pinentry and uses passphrase caching
3046           of five minutes when used in conjunction with the temp homedir
3047           script.
3048
3049         script: temp homedir config.
3050         + commit 1b5da37a47ceef41545e0b2474738613f36be949
3051         * added passphrase caching of 5 minutes.
3052
3053 2018-03-25  Ben McGinnes  <ben@adversary.org>
3054
3055         doc: python bindings howto.
3056         + commit 5b32efbaf37920b2e99d4bb87cb383b2809b1688
3057         * Testing the addition of a HTML header set in org-mode in order to
3058           had RSS update links for files.
3059         * This should work with any [X]HTML export from current versions of
3060           Org-Mode, but if it also works on website generated pages then it'll
3061           tick off one of the wishlist itmes.
3062
3063         script: temp homedir.
3064         + commit 40a9dea5d56506400b67b0c11f6e55a1629dc6fe
3065         * Fixed whitespace.
3066
3067         doc: python bindings howto.
3068         + commit 3b724aae423f2de01812165d54df2a7b524c82f6
3069         * Added a reference to new script which will setup a temporary homedir
3070           for a user.
3071
3072         script: temporary homedir creation.
3073         + commit dde1aae312958776fab475d6c0cdfa19cc255863
3074         * Script to create a temporary gnupg homedir in the user's directory
3075           for testing or scripting purposes.
3076         * Creates a hidden directory on POSIX systems with the correct
3077           permissions (700).
3078         * Creates a gpg.conf in that directory containing the same
3079           configuration options as used in the "Danger Mouse" example in the
3080           HOWTO with the correct permissions (600).
3081
3082         doc: python bindings howto.
3083         + commit 22247f658ce2f8e527c26746358cfc2643c4832f
3084         * Fixed the plaintext, result and verify_result references in the
3085           decryption section.
3086
3087 2018-03-23  Ben McGinnes  <ben@adversary.org>
3088
3089         doc: python bindings howto.
3090         + commit e6180f2b36cc8a6c6154e5f3d702324af573132a
3091         * Fixed a minor spelling error and a minor grammatical error.
3092
3093 2018-03-23  Werner Koch  <wk@gnupg.org>
3094
3095         core: Need to increase an array in the gpg engine.
3096         + commit 4763974ef6932c503e35c3d14fe47a66a5323f48
3097         * src/engine-gpg.c (build_argv): Allcate one slot more for ARGV.
3098
3099         json: Use a request origin of "browser".
3100         + commit e5abf4827aead50437bbdff8cfdd5e9fdc6ed72d
3101         * src/gpgme-json.c (_create_new_context): Set flag.
3102
3103         core: New gpgme_set_ctx_flag "request-origin".
3104         + commit b9000bc293164ff62efa7e91e5cf6d5fc19d482f
3105         * src/context.h (gpgme_context): Add 'request_origin'.
3106         * src/gpgme.c (gpgme_release): Free that field.
3107         (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "request-origin".
3108         * src/engine-backend.h (engine_ops): Add 'set_engine_ops' func ptr and
3109         adjust all users.
3110         * src/engine.c (_gpgme_engine_set_engine_flags): New.
3111         * src/op-support.c (_gpgme_op_reset): Call that func.
3112         * src/engine-gpg.c (struct engine_gpg): Add 'request_origin'.
3113         (gpg_set_engine_flags): New.
3114         (_gpgme_engine_ops_gpg): Hook it.
3115         (build_argv): Use command line option --request-origin.
3116         * src/engine-gpgsm.c (struct engine_gpgsm): Add 'request_origin'.
3117         (gpgsm_set_engine_flags): New.
3118         (_gpgme_engine_ops_gpgsm): Hook it.
3119         (start): Send OPTION "request-origin".
3120         * src/engine-assuan.c (struct engine_llass): Add 'request_origin'.
3121         (gpgsm_set_engine_flags): New.
3122         (_gpgme_engine_ops_assuan): Hook it.
3123         (start): Send OPTION "pretend-request-origin".
3124
3125         build: Allow building with released libgpg-error.
3126         + commit eee68c1b13fbe21c123f469712817e0c81f16383
3127         * src/gpgme-json.c (add_base64_to_object): Return an error if building
3128         with an older libgpg-error.
3129
3130         json: Finish op:encrypt.
3131         + commit d83482a1d768fc5afd3aa4836f2fefe5c549d02e
3132         * src/gpgme-json.c (add_base64_to_object): New.
3133         (data_from_base64_string): New.
3134         (op_encrypt): Employ them.
3135         (process_request): Print unformated json.
3136
3137         json: Add a new function to cJSON.
3138         + commit 6525d78d0a1d303c449762082942e71d3002b9ca
3139         * src/cJSON.c (cJSON_CreateStringConvey): New.
3140
3141 2018-03-22  Ben McGinnes  <ben@adversary.org>
3142
3143         doc: python bindings howto.
3144         + commit 65ed4ac82598734551b87fc89deab3cee010bd37
3145         * Fixed table.
3146
3147 2018-03-21  Ben McGinnes  <ben@adversary.org>
3148
3149         doc and examples: python bindings HOWTO.
3150         + commit 5722148bacab5862b40a027861d64683a0f214ea
3151         * Added GPGME Python bindings HOWTO in Australian/British English.
3152         ** en-US "translation" still to be done.
3153         * Added several example scripts comprised of the "Basic Functions"
3154           section of the HOWTO (plus the work-around at the end).
3155         ** As these scripts are very basic examples they are released under
3156            both the GPLv2+ and the LGPLv2.1+ (just like GPGME itself).
3157
3158         examples: multi-key selection operations.
3159         + commit 05e59933056ee8ef8ba7579351a58ed25dd7f754
3160         * Temporarily removing multi-key selection based examples.
3161         * There are a few issues with getting the key selections to play
3162           nicely with gpg.Context().keylist object types.
3163         * Will troubleshoot them separately and restore them when that's
3164           worked out, but I don't want these more complicated examples to
3165           delay merging the HOWTO with master.
3166
3167         example: group encryption.
3168         + commit 61a988036bd3f0d43f7d55bfa43f5f05bec978c4
3169         * Troubleshooting.
3170
3171         examples: encryption.
3172         + commit 7ddff71908a85111c8e0da41312197b3b1a77da6
3173         * Fixed two incorrect Context() objects.
3174
3175         example: key selection.
3176         + commit c6a0395f0a3a57071f0c943f7815f58a02f9d2f3
3177         * Removed extraneous blank line.
3178
3179         example: key selection.
3180         + commit 0a0d57fd41380cd797d29e11cec8a77c7404e960
3181         * Similar to group-key-selection.py, but does not use an existing
3182           group from gpg.conf; instead takes multiple key IDs, fingerprints or
3183           patterns on the command line and adds them to a keylist object.
3184
3185         example: sign and encrypt to group.
3186         + commit 0ccc57c9512246d82d46e7732bfb0f95c18ca9d3
3187         * Begins to string together some of the simpler examples to do more
3188           useful things.
3189         * Signs and encrypts a file while encrypting to every key in a group
3190           specified in the gpg.conf file.
3191
3192 2018-03-21  Werner Koch  <wk@gnupg.org>
3193
3194         json: Use gpgrt_argparse instead of argsparse.c.
3195         + commit e14f1f687ff618716ed17e309a0475df95e1c0aa
3196         * src/gpgme-json.c: Remove header argparse.h.  Define
3197         GPGRT_ENABLE_ARGPARSE_MACROS.
3198         (interactive_repl): Replace strusage by gpgrt_strusage.
3199         (my_strusage): Add SPDX level.
3200         (main): Switch to gpgrt_argparse stuff but keep very limited
3201         functionality when building with an older libgpg-error.
3202
3203 2018-03-21  Ben McGinnes  <ben@adversary.org>
3204
3205         example: group key selection.
3206         + commit 8b401bfc76eac762553f76faab53c2f4cd117a8d
3207         * Example of preparing a keylist object using an existing group line
3208           from the gpg.conf file.
3209
3210         example groups work around.
3211         + commit 6c6af9a7b0ae4e7182d669bec282c6edaaa7eaa1
3212         * Updated usage so it only references importing the final list of
3213           lists produced.  Trying to use some of the mid-points can have
3214           unpredictable results (this is part of the problem with work
3215           arounds).
3216
3217         example: groups.
3218         + commit a4e3f827652c59d850b4e5506a92c1ecd190c1bb
3219         * Added a docstring.
3220
3221         example: verify signatures.
3222         + commit ad6cb4f9b8b97a2bc501c17fc542a84b725dedea
3223         * Added example for verifying detached signatures against the files
3224           they're the signatures for.
3225
3226         example: verify signed file.
3227         + commit ae2767eb27b6a76284ee4403e575869afe2e80a8
3228         * Added example to verify normal and clearsigned files.
3229
3230         doc: python bindings howto.
3231         + commit e57388a69f61d14e3df3c842d227fb450c96c807
3232         * Fixed minor error in one of the verification examples.
3233
3234         example: detach sign file.
3235         + commit ac6a552c37147a000de74f49d1bff34dad52252e
3236         * Added example to make detached signatures of a file with key selection.
3237
3238         example: encrypt-sign-file.py.
3239         + commit af6cbba18ba5e2bbecce5f8268c146282cd12367
3240         * Adjusted the doc string.
3241
3242         examples: doc strings.
3243         + commit 6fa2a344282e369e6aca8155bc77dd2c12a29414
3244         * Fixed minor errors in two doc strings.
3245
3246         example: clear signing.
3247         + commit 1fdd1f306d45f6aeee91c7f016f7c37286ee3b3b
3248         * Added example to clear sign a file with signing key selection.
3249
3250         doc: python bindings howto.
3251         + commit 1d2746433c9632fc0c7bc10b59280fca15895545
3252         * deconstructed and fixed all three signing methods.
3253
3254         example: sign file.
3255         + commit 0390ede18696520be9cc1a42f628e23159b7c2eb
3256         * Similar to encrypt file except for signing a file in normal mode.
3257         * Noticed additional changes to be made to the howto to match this,
3258           but they will have to wait due to a power outage (currently running
3259           on battery and a mobile connection, but that won't last).
3260
3261 2018-03-20  Werner Koch  <wk@gnupg.org>
3262
3263         json: Implement op:encrypt.
3264         + commit 6073789a6d3514263404c93fa795a398bfd93d91
3265
3266
3267         core: Do not clobber R_KEY in gpgme_get_key on error.
3268         + commit 343d3e2232a22d0999e1693f0f95e5e290005829
3269         * src/keylist.c (gpgme_get_key): Assign a value to the return
3270         parameter only on success.
3271
3272         core: Fix ABI regression in recent commit.
3273         + commit 9e1e6554834d0e803dd0889deaef4f11047c7e47
3274         * src/gpgme.h.in (_gpgme_op_import_result): Move new field
3275         'skipped_v3_keys' to the end.
3276
3277 2018-03-20  Ben McGinnes  <ben@adversary.org>
3278
3279         doc: python bindings howto.
3280         + commit 52e262991f1fdf7da93882c3b22c05537376cf49
3281         * Fixed typos in examples.
3282
3283         example: keycount.
3284         + commit 96d0395bccbbff91f73c06cb7bd6c131f04b8a9a
3285         * Fixed missing parenthesis.
3286
3287         example: decrypt file.
3288         + commit 51258975d763c9471859d635e6080c2ec02e8647
3289         * Decrypts a file taking file names as command line parameters.
3290
3291         example: groups work-around.
3292         + commit 29e918171f352c71a90a16c04d4a3dcafa5db682
3293         * Added groups selection work around code.
3294         * Intended for use as a module to be imported by other scripts,
3295           usually with "from groups import group_lists" or "from groups import
3296           group_lines" or similar.
3297
3298 2018-03-19  Ben McGinnes  <ben@adversary.org>
3299
3300         example: encrypt file.
3301         + commit 7221bb67642eb01a07957d66d0cbcd4ef8aadbf8
3302         * Nested encryption in try/except statement in case recipient key is
3303           untrusted or invalid.
3304
3305         example: sign and encrypt file.
3306         + commit f3fe47e8fd2e7bc748016befcae494421223368c
3307         * Example to sign and encrypt a file.
3308         * Similar to encrypt-file.py except all keys are considered trusted
3309           and signs with the default key.
3310         * Also encrypts to the default key.
3311
3312         example: encrypt file.
3313         + commit f0790f224d7af9521efe96e69a8f719fb89a5af2
3314         * Fixed typo in second encryption call.
3315
3316         example: encrypt file.
3317         + commit 7ab42e79ade89f28507ea42d51148a40b4bfc736
3318         * Example to encrypt a file to a single key.
3319         * Takes key ID and/or fpr as a CLI parameter.
3320         * Takes path and filename as a CLI parameter.
3321         * Encrypts to specified key only, no signing and writes the output in
3322           both ASCII armoured and GPG binary formats with output filenames
3323           based on input filename.
3324
3325         example: python bindings key count.
3326         + commit cfbdcb7fb3fa438cafba82e4fb8f327df596f98e
3327         * Added script wo count the number of keys in both the public and
3328           secret key stores.
3329
3330         doc: python bindings examples.
3331         + commit b30ebf89725641018b3b08f77876530f9b983fa2
3332         * Explicitly stated that all this code is released under the GPLv2+
3333           and the LGPLv2.1+.
3334
3335         doc: python bindings example README.
3336         + commit 8f7672ad1b267f122f647bb5f984734d0ff66a5c
3337         * Added the same license as used with the HOWTO.
3338         * Since these examples are so basic, they'll be dual licensed the same
3339           as GPGME itself (otherwise it would slip too dangerously against the
3340           need for permissive licensing of crypto libraries).
3341
3342         docs: python bindings examples.
3343         + commit 6950a63e63d60685ddb6f4cbff7b826b8acb5b13
3344         * Added reference to location where all the examples included in the
3345           HOWTO will be available as executable scripts.
3346         * Included a short README file in that location.
3347
3348         example: python bindings encryption.
3349         + commit 3e0f68fdff1998dae9cb6f8510a3e945a268d1f6
3350         * Since we don't want to encourage accessing the low level functions
3351           (e.g. op_encrypt), but since this example can still be useful to
3352           understand, renaming it and will add new encryption examples to
3353           match the instructions in the HOWTO.
3354
3355         doc: python bindings howto.
3356         + commit d5f6dec048d3d4d94f1fcdb3f4249cf6e71c4b92
3357         * Slight python-gnupg clarification.  See also this thread:
3358           https://lists.gnupg.org/pipermail/gnupg-devel/2018-March/033528.html
3359
3360         doc: python bindings howto.
3361         + commit 0fb8a5d45c1c77a5928d6e356271da055aa55994
3362         * Adjusted the python-gnupg so the comments regarding insecure
3363           invocation of commands via subprocess (shell=True) were a major
3364           historical issue and not a a current issue.
3365         * Not including Vinay Sajip's requested change to say it is now secure
3366           since no audit of the current code base has been performed and my
3367           last major inspection of that code was around the time I first
3368           ported PyME to Python 3 in 2015.
3369
3370         doc: python bindings todo list.
3371         + commit bf67cf433fe82924ed40e79785e95403c07cc068
3372         * Checked off several points of howto coverage as completed.
3373         * Reorganised to move S/MIME coverage to its own separate group of tasks.
3374         * Noted only revocation remains for howto completion.
3375
3376         doc: python bindings howto.
3377         + commit 1779d7b9d6769b2e47f1e90260290e25c8c3aa02
3378         * deconstructing multi-recipient encryption.
3379
3380         doc: python bindings howto.
3381         + commit 64c5886132aceefc9d9600a3a6dbbbf404b95b81
3382         * Replaced the single encryption methods with one main way (i.e. cut
3383           the low level stuff involving SEEK_SET instructions).
3384
3385 2018-03-18  Ben McGinnes  <ben@adversary.org>
3386
3387         doc: python bindings howto.
3388         + commit 4811ff7b6c8ef97c7d4858ce235e9bf8227f4917
3389         * moved single encrytion examples up to the first ones, pending merge
3390           and major cut.
3391         * This is basically just to make future checks of revisions a little easier.
3392
3393         doc: python bindings howto.
3394         + commit 82c5af225f2bdf3acc6fc652a96ee61c9b057395
3395         * Stripped decryption example to the bare bones as suggested by Justus.
3396
3397 2018-03-16  Ben McGinnes  <ben@adversary.org>
3398
3399         doc: python bindings howto.
3400         + commit b549f69d0520bb74957b95cec9ea918dba2374f6
3401         * Made the changes suggested by Jakub Wilk on gnupg-devel.
3402         * Still need to make the far more comprehensive changes suggested by Justus.
3403
3404 2018-03-16  Werner Koch  <wk@gnupg.org>
3405
3406         json: Add framework for the gpgme-json tool.
3407         + commit d2b31d8c106423bd0eaa5fffaa39b0983c9ae525
3408         * src/gpgme-json.c: New.
3409         * src/Makefile.am (bin_PROGRAMS): Add gpgme-json.
3410         (gpgme_json_SOURCES, gpgme_json_LDADD): New.
3411
3412         core: Adjust cJSON code for use in GPGME.
3413         + commit 81c90d0cd0f959fd5e01baed9b4af0ec35ecb85c
3414         * src/cJSON.c: Remove util.h.  Use gpgrt alloc functions.
3415         (cJSON_Delete): Do not clobber ERRNO.
3416         (cJSON_AddItemToObject): Return OBJECT or NULL.
3417         (cJSON_AddNullToObject): New.
3418         (cJSON_AddTrueToObject): New.
3419         (cJSON_AddFalseToObject): New.
3420         (cJSON_AddBoolToObject): New.
3421         (cJSON_AddNumberToObject): New.
3422         (cJSON_AddStringToObject): New.
3423         * src/cJSON.h (cJSON__h): Replace macro by cJSON_h for C compliance.
3424         (cJSON_AddNullToObject): Remove macro.
3425         (cJSON_AddTrueToObject): Remove macro.
3426         (cJSON_AddFalseToObject): Remove macro.
3427         (cJSON_AddBoolToObject): Remove macro.
3428         (cJSON_AddNumberToObject): Remove macro.
3429         (cJSON_AddStringToObject): Remove macro.
3430
3431 2018-03-15  Ben McGinnes  <ben@adversary.org>
3432
3433         doc: python bindings howto.
3434         + commit 431897a4c48fe1bc9d37f655097aabaf5b685d11
3435         * Added clarification on why it's not on PyPI.
3436
3437 2018-03-15  Andre Heinecke  <aheinecke@intevation.de>
3438
3439         cpp: Expose skipped_v3_keys.
3440         + commit ad95288d3b3efc38998841add4fe658c84701f98
3441         * lang/cpp/src/importresult.cpp,
3442          lang/cpp/src/importresult.h (ImportResult::numV3KeysSkipped): New.
3443
3444         core: Parse skipped_v3_keys.
3445         + commit a630a1e3e74c926163864b013cb164b4cd1866fc
3446         * src/gpgme.h.in (gpgme_import_result_t): Extend with skipped_v3_keys.
3447         * src/import.c (gpgme_op_import_result): Extend debug with new field.
3448         (parse_import_res): Parse skipped_v3_keys.
3449         * tests/gpg/t-support.h, tests/run-support.h (print_import_result):
3450         Print skipped_v3_keys.
3451
3452 2018-03-15  Ben McGinnes  <ben@adversary.org>
3453
3454         doc: python bindings howto.
3455         + commit 22e2445beee46ed1e527a98e635153c7cf03786f
3456         * fixed custom_id for decryption so the XHTML validates.
3457
3458         doc: python bindings howto.
3459         + commit 94a95ac12364989db7f4be333107f3c023551857
3460         * Promoted final encryption example so that it will appear as heading
3461           6.1.3 when exported to HTML or PDF.
3462
3463         doc: python bindings howto.
3464         + commit 3d0c7a2202c8e9bd4f284fd00069d34b8d3d3d4c
3465         * Fixed a minor typographic error.
3466         * Bumped version number in preparation for merge with master.
3467         * While there are probably a few more things worthy of being added
3468           (mainly how to revoke things), this document is essentially ready
3469           for publication now.
3470
3471         doc: python bindings howto.
3472         + commit 961aea212ef48914ecbfa169addf951b0854b0b4
3473         * Added key signing.
3474
3475         doc: python bindings howto.
3476         + commit 7ac65b10837740caf68cdade791b8c5ce4eb1b03
3477         * Added a new user ID for Danger Mouse.
3478         * Removed the empty entry for key preferences since that is handled
3479           through gpg.conf and/or editing the key directly.
3480
3481         doc: python bindings howto.
3482         + commit 9e3e4a835c64f5d06de821b1fd648af37827ff26
3483         * Spell checking and fixing the few errors.
3484
3485         doc: python bindings howto.
3486         + commit b02d9d0a7b96b186eb3063d94bde369339181461
3487         * Added an encryption subkey to Danger Mouse's primary key.
3488
3489         doc: python bindings howto.
3490         + commit 5432e5f9d1dfc02812d0b181f8d88cdf4a2bfbfb
3491         * generated a new primary key for Danger Mouse in an alternative homedir.
3492
3493         doc: python bindings howto.
3494         + commit 5d1dd2abe5cf787875d12afe46c78c75385d7b31
3495         * Added sections for key generation and key editing.
3496
3497         doc: python bindings howto.
3498         + commit 1d05e6aa4ea467c8c5926b827cfcfba357d03312
3499         * Added c.get_key instructions and examples.
3500
3501         doc: python bindings howto.
3502         + commit b35aaef7a3b793b8f6f5b42596c0a6a51e87f78c
3503         * Added text for verifying signatures.
3504
3505 2018-03-14  Ben McGinnes  <ben@adversary.org>
3506
3507         doc: python bindings howto.
3508         + commit 6bc12a0eeb20409770cb8b923d08c18c2b730cb8
3509         * Added 4 signature verification methods and partial text for them.
3510
3511         doc: python bindings howto.
3512         + commit e5c85fba25de1187949697e2dae0e89345b71e89
3513         * Added description for detached signatures.
3514
3515         doc: python bindings howto.
3516         + commit ada059b07178147821b1598c935aa70ae45e3e6c
3517         * Fixed multiple sample code examples of writing output to a file.
3518         * Added the description of detached signatures.
3519
3520 2018-03-14  Werner Koch  <wk@gnupg.org>
3521
3522         core: Import cJSON code from the payproc project.
3523         + commit 8eb08b318913644d918002f3195f7ec0e75ae239
3524         * src/cJSON.c: New.
3525         * src/cJSON.h: New.
3526         * src/cJSON.readme: New.
3527
3528 2018-03-14  Ben McGinnes  <ben@adversary.org>
3529
3530         doc: python bindings todo.
3531         + commit ef27f3781a37e264d0eb7d1745eb2c804ec062c4
3532         * minor phrasing fix.
3533
3534         doc: python bindings howto.
3535         + commit 423fdcd4653cb01f07f2b0e72cfcf49554930f70
3536         * Added recommended method of single encryption with description.
3537
3538 2018-03-13  Ben McGinnes  <ben@adversary.org>
3539
3540         doc: python binding howto.
3541         + commit a71205dc3b58970adf591b4e4553824a33f353db
3542         * Clarified which English dialects this is written in.
3543         * Translating to American can happen *after* it's done.
3544         ** The Yank version would probably want to change some of the examples
3545            anyway.
3546         * Began the description for normal/default signing.
3547
3548         doc: python bindings howto.
3549         + commit a10dcb4f138eb5a21881cdbc4806c25129d4ae4e
3550         * Added a section on key selection.
3551         * Included recommendation for using fingerprint when selecting one
3552           specific key.
3553         * Also included the most ironically amusing example of multiple key
3554           selection in a GPG guide.  Hey, it's public data ... (heh).
3555
3556         doc: python bindings howto.
3557         + commit 952b6042f78017c476452088261af8d352cfa729
3558         * Added explanation of the ascendance of Python 3 over Python 2 in the
3559           guide to the intro.
3560         * Expanded key selection description so people know what not to
3561           include regarding key IDs with this key selection method.
3562
3563         doc: python bindings howto.
3564         + commit c92da2c7eb148ce9fb06495a8470dd9caf662f9a
3565         * Added key selection for specifying signing key or keys.
3566
3567         doc: python bindings howto.
3568         + commit e489ddd08af29fdad8db8aa0aec0c314daa3678c
3569         * During the course of working out the updated signature methods,
3570           determined that key selection (including counting) will beed to be
3571           presented before the basic functions.
3572         * Moved "working with keys" up.
3573
3574         doc: python bindings howto.
3575         + commit f29bda8d7146b4bc0bf73d6e613131545ff86b73
3576         * Signatures have changed as a result of the recent update from Justus.
3577         * Sample code updated.
3578         * Text to follow later.
3579
3580         doc: python bindings howto.
3581         + commit c27a7a3f994dad0eccee890185582f4350fbf233
3582         * Added text description for the decryption example.
3583
3584 2018-03-12  Ben McGinnes  <ben@adversary.org>
3585
3586         doc: python bindings howto.
3587         + commit f81adeba992a9fd3b5a199e9a2e242a0f53cf639
3588         * Added a miscellaneous work-arounds section at the end.
3589         * Included code in said miscellaneous section for accessing the groups
3590           specified in a gpg.conf file.
3591         * It's a bit ugly since it does require subprocess (but not call,
3592           Popen or shell access and only accesses one command).
3593
3594         doc: python bindings howto.
3595         + commit 36dfbdffea60c529a6d1e1ff3e507be016b6a0f6
3596         * Fixed a spelling error in the key counting text.
3597
3598         doc: python bindings howto.
3599         + commit 484e9a6229ac9c80c6be4df638bce711f08a74c6
3600         * updated multi-encryption final example to be complete.
3601         * second example shows most likely method of reading plaintext.
3602         * updated example filenames to stick with running gag
3603           (i.e. secret_plans.txt).
3604
3605         doc: python bindings howto.
3606         + commit a8f48b6f577d562c25fd0191c0cc2cc8e96078c1
3607         * error corrections.
3608         * multiple typesetting fixes only required due to certain archaic
3609           eccentricities of LaTeX.
3610         * a couple of minor python PEP8 compliance corrections.
3611
3612         doc: python bindings howto.
3613         + commit 83b1336ceebb86e13a55bbf220df2d750f6b3ec6
3614         * Fixed an error in the encryption try/except statement.
3615
3616         doc: python bindings howto.
3617         + commit 0e1300ce777dd0c87f31ac8bc49846b9df242df9
3618         * Added a more complicated encryption example with a few variations on
3619           the encryption method to account for untrusted recipient keys,
3620           signing or not signing, including or excluding default keys and so
3621           on.
3622
3623         doc: python bindings howto.
3624         + commit 7ebc5a357057d01b7ef965521ab68b7cb7e20a8f
3625         * Switched from links to some external docs to using footnotes where
3626           necessary.
3627         * Ideally the howto should be as stand alone as possible.
3628         * Also it makes it difficult to convert to another format for
3629           proof-reading if there are links that the conversion can't find.
3630
3631 2018-03-09  Ben McGinnes  <ben@adversary.org>
3632
3633         doc: python bindings HOWTO.
3634         + commit 172baaf4d3e4ed03a4d3437be9efa3dfe6a847bc
3635         * Added instructions and code to count the number of public and secret
3636           keys available since it was quick and easy.
3637
3638         doc: python TODO list.
3639         + commit f2c1e8d8d54068a7f072efa178fc30460821eff3
3640         * Slightly tweaked one heading to make it clear it wasn't a duplicate.
3641
3642         doc: python bindings howto.
3643         + commit 01686463948ac6096dd8579a110c478d3a1f9a83
3644         * Wrote the text description explaining each step in the most basic
3645           encryption operation.
3646         * Will need to include additional examples for encrypting to multiple
3647           recipients using Context().encrypt instead of Context().op_encrypt.
3648
3649         doc: python bindings TODO list.
3650         + commit 93252df9dc4c9932467814745655350a8cab900e
3651         * Updated to reflect the most recent work on the HOWTO for the Python
3652           bindings.
3653
3654         doc: python bindings howto.
3655         + commit ab81c2d868bba79fdb8f8d7f576b6bd88c6bdf3c
3656         * Added example for verifying both detached and "in-line" signatures.
3657
3658 2018-03-08  Ben McGinnes  <ben@adversary.org>
3659
3660         docs: TODO.
3661         + commit e846c3daeeb4e7092169cdb7bf4f55e0b105aac3
3662         * Removed WS.
3663
3664         doc: TODO list update.
3665         + commit 6849924ffbd48ba3f9d32b4a59a02e1d2083fc19
3666         * Closed off a few ancient items and added recommendation to others to
3667           use the dev.gnupg.org site for real bugs/features updates.
3668         * See also this statement on the gnupg-devel list regarding this file:
3669           https://lists.gnupg.org/pipermail/gnupg-devel/2018-March/033499.html
3670
3671         docs: python bindings howto update.
3672         + commit fa4927146b68dd045903285f1c45fb64deb2e361
3673         * Added all four signing code examples that are most likely to be
3674           used: armoured, clearsigned, detached armoured and detached binary.
3675         * May remove some examples and just discuss the differences, but it
3676           depends on the way the text is filled out.
3677
3678         doc: python bindings howto update.
3679         + commit c767a4a3590bd8a224d0268746df443942cb28c2
3680         * Added example of decryption.
3681         * included some quick notes for myself regarding aspects to explain
3682           when I flesh out the explanatory text.
3683
3684         doc: Basic operation of the python bindings.
3685         + commit 75463d589522cba427f9e5a3a408192ffad8bb21
3686         * Added sample code for encrypting some text to a single key.
3687         * Basically I'm just lifting existing production code and changing the
3688           key IDs from mine to "0x12345678DEADBEEF" for these first few
3689           examples.
3690         * I'll fill in the text description after.
3691         * Note: due to my regional location, I might split some tasks into
3692           more commits in order to be sure no work gets lost in case of
3693           emergency (or to put it another way: I know Telstra too well to
3694           trust them).
3695
3696         doc-howto: fundamental aspects of GPGME vs Python.
3697         + commit a98f2c556fe6e33a9cd38279e64e4b09f05cc675
3698         * Added a section for those pythonistas who are too used to web
3699           programming.  Stressed that it's not simply not RESTful, it's not
3700           even REST-like.
3701         * Letting me move on to drawing a very loose parallel between a
3702           session and a context.  The differences should become obvious in the
3703           subsequent sections.
3704
3705         doc: Added multiple TODOs for inclusion in the HOWTO.
3706         + commit e8adab68f8c0cd865ff220f06dfaff7fe183e8a1
3707         * Some instructions to include are fairly obvious; as with encryption,
3708           decryption and signature verification.
3709         * Some are a little less obvious.
3710         * This includes the requests received to specifically include subkey
3711           management (adding and revoking subkeys on a primary key that's
3712           being retained.
3713         * Added the UID equivalents to the list, as well as key selection
3714           matters (and may or may not include something for handling group
3715           lines since that involves wrapping a CLI binary).
3716         * Key control documentation and examples requested by Mike Ingle of
3717           confidantmail.org.
3718
3719 2018-03-07  Ben McGinnes  <ben@adversary.org>
3720
3721         GPL compatible license for documentation.
3722         + commit 47d401d159852ea08e90af21d91bb4b93be9000d
3723         * Added the same, slightly modified GPL based license that is used in
3724           other parts of GnuPG.
3725
3726         HOWTO update.
3727         + commit 8a76deb11efd7dadfde6e8e7e69fbcd92577982f
3728         * removed one bit of whitespace.
3729         * Marked up references to gpgme.h.
3730         * Fixed one spelling error.
3731         * Removed py2.6 from python search order since even if it is
3732           supported, it shouldn't be encouraged.
3733
3734         GPGME Python bindings HOWTO.
3735         + commit 5215d58ae2521d81c3db0b45dfbdce01a679acab
3736         * Started work on the GPGME Python bindings HOWTO.
3737         * 1,050 words to begin with at approx. 7.5KB.
3738         * Got as far as installation.
3739         * Includes instruction not to use PyPI for this.
3740
3741         TODO - HOWTO.
3742         + commit 8f2c0f4534ea2a07f071f360a63e877f60dc52f2
3743         * Added suv-entry for the new HOWTO being started and, since it has
3744           been started, checked it off.
3745
3746         TODO.
3747         + commit d4778bb23d0817ee6fbcbe4f0ff0ff0429bf3669
3748         * Slightly expanded the list.
3749
3750         copyright fix.
3751         + commit 3a746d5d46ffd7d332dc24fd6a4d24efc5fc1230
3752         * Made the copyright line a new top level org heading in order to
3753           prevent it getting folded into other tasks which will eventually get
3754           closed (so it doesn't go missing if those items are subsequently
3755           archived).
3756
3757         Nuxed doubles.
3758         + commit 13d2164cd9f313b409b2210d9e63465681cccc99
3759         * Just because there's a lot of documentation which needs to be added,
3760           doesn't mean it needs to be listed twice.  Merged the two lists.
3761
3762         Removed double.
3763         + commit 1516c56ee4da28eb720bbacb026892393d10b24a
3764         * default.profraw didn't need to be listed twice.
3765
3766 2018-03-04  Ben McGinnes  <ben@adversary.org>
3767
3768         IDENTIFY.
3769         + commit f61d4f585f27c13fabf7a23ad295bdc8bea7c838
3770         * Fixed sp error in docstring.
3771
3772 2018-03-03  Ben McGinnes  <ben@adversary.org>
3773
3774         Missed a couple.
3775         + commit 75f5e6e6672a1bbd16b7680313c0f96796c219bd
3776         * WS indicated 2 custom-ids were missed, now they're set.
3777
3778         TODO DONE.
3779         + commit b438e5e44c2eaf22549db94141a3ec8731556674
3780         * Marked off a TODO for this clean-up.
3781
3782         TODO.
3783         + commit 1d910672539686e2e17fd8fa1a894cee92863417
3784         * WS removal
3785
3786         TODO updates.
3787         + commit 12a87af1df906744a14079ff7ff88e7d60679695
3788         * Updated TODO with tags to make everything appear properly when
3789           exported to HTML or PDF.
3790         * Added a couple more items, mainly to do with docs or future bindings.
3791         * Marked some, but not all as actual TODO items.
3792         * Some items should probably be removed, but haven't been yet.
3793         * Some have probably been completed already.
3794
3795 2018-02-27  Ben McGinnes  <ben@adversary.org>
3796
3797         New stuff.
3798         + commit 85bdca3b2b095afb672f19abbffccd2bcb8bbd0a
3799         * Added the idea for alternative Emacs bindings (to extend the
3800           existing ones, not replace them outright).
3801         * Added a reference to the API Squared part of the project.
3802
3803         TODO the TODO.
3804         + commit 8047e1374fe6e69e8c4502e58e6522ea86e4bef4
3805         * Added an actual TODO to fix the TODOs.
3806         * Pretty sure I know who will be completing this one ...  ;)
3807
3808         TODO ... the TODO.
3809         + commit 73c51bc9858de2aab25844e7e283a6334038ccc8
3810         * If we're going to use Org, let's actually use Org.
3811         * Added the properties tags for each point.
3812         * Some of thems still need custom ID tags assigned properly.
3813         * Probably ought to make them actual TODOs at some point, but that can
3814           wait until they can be marked as DONE anyway.
3815         * Will add a TODO for some of this stuff ... oh, the irony.
3816
3817 2018-02-27  NIIBE Yutaka  <gniibe@fsij.org>
3818
3819         core: Support non-thread-safe getenv.
3820         + commit 59fe3f26c1ca0fba16f76738cd05aaf80fb735ef
3821         * src/get-env.c (_gpgme_getenv): Use gpgrt_lock_lock
3822         and gpgrt_lock_unlock to protect call of getnev.
3823
3824 2018-02-26  Ben McGinnes  <ben@adversary.org>
3825
3826         WS removal.
3827         + commit c58f61e92226c4a03f216f5d07bdc5479ce8a2d9
3828         * Whitespace removal.
3829
3830         LaTeX headers.
3831         + commit 6f2e2e0f150d5c6d53de5bc48af137f7864d5fd9
3832         * Set LaTeX headers to enable ligatures and a 12pt font by default.
3833         * Paper size left for regional defaults.
3834         * Using XeLaTeX for easier font control.
3835         * Using default LaTeX font of Latin Main, but that's easy enough to change.
3836
3837 2018-02-19  Ben McGinnes  <ben@adversary.org>
3838
3839         Renaming ad infinitum ...
3840         + commit 272a8e778a959cb24298f488e77fce9bffd23b7a
3841         * Dropped the .txt from the end of the file ...
3842
3843         Text conversion.
3844         + commit c82b17c6ce490738efb07186532e752e6f70ea07
3845         * Exported from Org Mode to UTF-8 text.
3846         * Removed my name from just under the title.
3847
3848         Title fix.
3849         + commit ea481d4bb9e6197fbc195187d1362b844e2cba2e
3850         * Fixed title.
3851
3852         Conflict with Phabricator files.
3853         + commit 1ae3ead2cd854258954e784bf51f03822321aefe
3854         * The developers of Phabricator, the web front-end on dev.gnupg.org
3855           have not implemented renderers for Markdown, Org-Mode or any other
3856           common markdown like language.
3857         * They also refuse to do so.
3858         * Instead they re-invented the wheel and implemented their own version
3859           of Markdown-like thing which is incompatible with everything else.
3860           It is called Remarkup.
3861         * The developers of Phabricator and Remarkup have refused to provide
3862           conversion tools to move files to/from any format to/from Remarkup.
3863         * They expect everyone to learn their new favourite pet project.
3864         * Remarkup may or may not display Org Mode files, but if so then it is
3865           likely to only want to do so as plain text.
3866         * There is an unaffiliated and unofficial project to convert Github
3867           Markdown to Remarkup via Pandoc.  This might be adapted for our use,
3868           but requires testing.
3869         * Until then exporting from Org Mode to UTF-8 text is likely the least
3870           worst plan.
3871         * Which means renaming this file to README.org first.
3872
3873         Schizophrenic file types.
3874         + commit fe4f3edd70949329cb992dd963de2de3c86dcd81
3875         * Removed Markdown style heading underlining.
3876         * Removed in-line file type declaration (which is not correctly parsed
3877           by the web interface on dev.gnupg.org).
3878
3879 2018-02-16  Andre Heinecke  <aheinecke@intevation.de>
3880
3881         cpp: Add shorthand for key locate.
3882         + commit 7f9d5c6cd204bfd84ea477b284df795b1dadb1af
3883         * lang/cpp/src/key.cpp (Key::locate): New static helper.
3884         * lang/cpp/src/key.h: Update accordingly.
3885
3886 2018-02-16  Ben McGinnes  <ben@adversary.org>
3887
3888         History path.
3889         + commit fb16eaa685fe488f12f4df9b59d1f3689c813034
3890         * Fixed a typo in a filepath reference.
3891         * Moved conjecture regarding the first version of Python used to a
3892           footnote.
3893
3894 2018-02-15  Ben McGinnes  <ben@adversary.org>
3895
3896         LaTeX margins.
3897         + commit 6f15d821404742ac2683f54ca4102ee4aaedacf2
3898         * Added LaTeX header for 1 inch margins in the quite likely event that
3899           all PDF output ultimately uses LaTeX.
3900
3901         TODO Documentation.
3902         + commit 235d899a5fc24cdf9c856adbc021a69c43985c99
3903         * Checked off the decision to stick with Org Mode.
3904
3905         TODO.
3906         + commit 40da5022922172ed898172956a8ccf5622e5638d
3907         * Beginning to turn the first part of this into something kind of like
3908           an actual TODO list as Org Mode uses it (maybe).
3909
3910 2018-02-15  NIIBE Yutaka  <gniibe@fsij.org>
3911
3912         tests: Fix previous commit.
3913         + commit 3224d7f0ea83a3c2baaa9f97846c4a5b392d2c59
3914
3915
3916         tests: More Makefile portability.
3917         + commit ba6e610baa138ba9b43be303df2c5981dd04de5a
3918         * tests/gpg/Makefile.am: Invoke GPG with TESTS_ENVIRONMENT.
3919
3920         tests: Makefile portability.
3921         + commit b5ec21b9baf017b4cee88c9ef3cc1a638547cd20
3922         * tests/gpg/Makefile.am: Don't use "export" directive.
3923         * tests/gpgsm/Makefile.am: Ditto.
3924         * lang/qt/tests/Makefile.am: Ditto.
3925         * lang/python/tests/Makefile.am: Ditto.
3926
3927         build: More Makefile fix.
3928         + commit c9a351f5af289c8f6919854c40f235c781b76ec7
3929         * lang/python/tests/Makefile.am: Avoid target with '/'.
3930
3931 2018-02-14  Ben McGinnes  <ben@adversary.org>
3932
3933         Short History.
3934         + commit 3c3b149996036e7ff4cc4c77ef2d97062d880409
3935         * Fixed or updated the most fundamental errors.
3936         * Also included some details on which modules are available on PyPI,
3937           as well as what happened to the PyME commit log.
3938
3939         Subsectioned history.
3940         + commit 7c662d22a8f7d2e6ad6532014f2ecc1769de16fb
3941         * Split the main parts down into subsections.
3942         * Still need to cull the incorrect stuff towards the end and add more
3943           recent changes.
3944
3945         History.
3946         + commit a1bc710c5fb7a7d2253434c1443e33e019020a55
3947         * Reshaping the history file to fit Org Mode's structuring for docs.
3948         * Also said history needs to be a bit more clear (it was kind of
3949           unfinished).
3950
3951         TODO.
3952         + commit fccd2ea3871f5d63fb038db0733a34f9c5d550c3
3953         * Updated TODO.
3954         * The entirety of the old TODO has been replaced with either more
3955           relevant tasks or goals for the examples and a more measured
3956           approach to the docs and why, in this project, Org Mode trumps reST,
3957           even though it's Python through and through.
3958
3959         TODO.
3960         + commit 487ed9337e8e07d1c63e53b785cc39e3bd35ff6e
3961         * Removed reST version of file.
3962
3963         TODO.
3964         + commit c4fa4216199b16c1f169725c0a1e0a40764b1ebb
3965         * Converted document from reST to org-mode.
3966
3967         Short History.
3968         + commit 1d48b04cfb3d1de654f3995578e9434a6b7b2fed
3969         * Removed reST version.
3970
3971         Short History.
3972         + commit d86fd7c54c462ef23c70370624e07fcc1bc15121
3973         * Converted document from reST to org-mode.
3974
3975         House keeping.
3976         + commit 1b5719cd57d80dcd9577141491a0860912e74cd4
3977         * Added a bunch of things to .gitignore that might otherwise creep in
3978           during Python development.
3979         * This really should be merged ASAP.  You'll thank me later ...
3980
3981 2018-02-14  NIIBE Yutaka  <gniibe@fsij.org>
3982
3983         build: Fix Makefiles for portability.
3984         + commit f1d8a7975b0a166f55aef06eb25d50230781b96f
3985         * tests/gpg/Makefile.am: Don't allow target with '/'.
3986         * tests/gpgsm/Makefile.am: Ditto.
3987
3988 2018-02-13  Andre Heinecke  <aheinecke@intevation.de>
3989
3990         configure: Fix mingw check for getenv.
3991         + commit 5ec890b9c76db0f23cc396108ff6f1fe658855a8
3992         * configure.ac: have_thread_safe_getenv=yes with have_w32_system.
3993
3994 2018-02-13  NIIBE Yutaka  <gniibe@fsij.org>
3995
3996         configure: MinGW has thread-safe getenv.
3997         + commit 77ca9cc2db2c6da303b9224a931679a325ebda1e
3998         * configure.ac: have_thread_safe_getenv=yes with have_w64_system.
3999
4000 2018-02-09  Andre Heinecke  <aheinecke@intevation.de>
4001
4002         cpp: Add SpawnShowWindow flag.
4003         + commit 7e27a0ff64626026521dc5877b278794cea72e61
4004         * lang/cpp/src/context.h (SpawnShowWindow): New.
4005
4006         core, w32: Enable spawning GUI applications.
4007         + commit 201db83a7f1b7759173b6e9f0a844caef4da6cce
4008         * src/engine-spawn.c (engspawn_start): Translate spawn flag
4009         to IOSPAWN flag.
4010         * src/gpgme-w32spawn.c (my_spawn): Handle the new flag.
4011         * src/gpgme.h.in (GPGME_SPAWN_SHOW_WINDOW): New.
4012         * src/priv-io.h (IOSPAWN_FLAG_SHOW_WINDOW): New.
4013
4014         core, w32: Fix flags passing to gpgme-w32-spawn.
4015         + commit f10605ffb5cc9d457c3e432918fdfbfaf3d04185
4016         * src/w32-io.c (_gpgme_io_spawn): Don't hardcode flags value.
4017
4018         cpp: Add conveniance Data::toString.
4019         + commit 5a5b0d4996c17bfbc69b90f89fec23732f92813a
4020         * lang/cpp/src/data.h, lang/cpp/src/data.cpp: Add Data::toString.
4021
4022 2018-01-30  NIIBE Yutaka  <gniibe@fsij.org>
4023
4024         Fix for BSD Make.
4025         + commit 59fcabbdf537b2745ef0c3cae908b21970a5b39b
4026         * tests/gpg/Makefile.am, tests/gpgsm/Makefile.am: Remove ./.
4027
4028 2018-01-29  NIIBE Yutaka  <gniibe@fsij.org>
4029
4030         Fix compile error message.
4031         + commit bbb5e70e7e8598978b6c61b13ba77705ff86e469
4032         * src/get-env.c (_gpgme_getenv): Fix error message.
4033
4034         tests: Fix for NetBSD.
4035         + commit 58130b97f6582455fd355ac58ae3182a28812cfc
4036         * tests/gpg/pinentry: Use /bin/sh instead of Bash.
4037
4038         core: Implement _gpgme_getenv for NetBSD.
4039         + commit 37d62e9d0f685c257fdb5f303e60ff01f8a36a2f
4040         * src/get-env.c [HAVE_GETENV_R] (_gpgme_getenv): New.
4041
4042 2017-12-12  Werner Koch  <wk@gnupg.org>
4043
4044         Release 1.10.0.
4045         + commit 6a42eb5f3809d5eb3767667c190b395d028886e7
4046
4047
4048         Require libgpg-error 1.24 and libassuan 2.4.2.
4049         + commit d4d04d6c0432b032f6ea23c8517fd6a5f623bb67
4050         * src/util.h (GPG_ERR_FALSE): Remove due to newer libgpg-error.
4051
4052 2017-12-11  Andre Heinecke  <aheinecke@intevation.de>
4053
4054         qt: Don't use QDateTime::toSecsSinceEpoch.
4055         + commit b61d0fbb74f04408dfe8637c719b97217e061a3c
4056         * lang/qt/src/qgpgmequickjob.cpp (addSubkeyWorker)
4057         (createWorker): Use toMSecsSinceEpoch instead toSecsSinceEpoch.
4058
4059 2017-12-11  Werner Koch  <wk@gnupg.org>
4060
4061         core,w32: Fix popping up of console windows due to gpgconf.
4062         + commit 0a567a94d94cd93c5d88f5db802925c95f0974d0
4063         * src/gpgme-w32spawn.c (my_spawn): Create w/o DETACHED_PROCESS.
4064
4065 2017-12-07  Andre Heinecke  <aheinecke@intevation.de>
4066
4067         cpp: Fix handling of lsig promotion.
4068         + commit 1458adaea4acdcf7ebbead6668476fce92db5af8
4069         * src/gpgsignkeyeditinteractor.cpp (SignKeyState): Add second
4070         CONFIRM state.
4071         (makeTable): Properly handle local_promote_okay.
4072         (action): Handle CONFIRM2.
4073
4074         tests: Print userid signatures in run-keylist.
4075         + commit 5ba1cbdf39efd90c7987bfc2bc030b6504e70076
4076         * tests/run-keylist.c (main): Print UID signatures if there
4077         are any.
4078
4079 2017-12-04  Werner Koch  <wk@gnupg.org>
4080
4081         core: Also check for a failed selftest in gpgm_data_new.
4082         + commit 0c1244a2b7e30ab0610ae70166e1b5d0219782c3
4083         * src/data.c (_gpgme_data_new): Check for failed selftest.
4084         * tests/run-support.h (make_filename): Print a message on mallooc
4085         failure.
4086         (init_gpgme_basic): New.
4087         * tests/run-identify.c (main): Call init_gpgme_basic becuase we do not
4088         need to setup a protocol.
4089         * tests/t-data.c: Define PGM and include run-support.h.
4090         (make_filename): Remove.
4091         (main): Call init_gpgme_basic.
4092
4093 2017-12-04  Tobias Mueller  <muelli@cryptobitch.de>
4094
4095         python: Default whence argument for Data() to SEEK_SET.
4096         + commit 3cf9aedc92b6c65d2cb34037e52b9a299637d03b
4097         * lang/python/gpgme.i: copied signature from gpgme.h and defaulted the
4098         value to SEEK_SET.
4099         * lang/python/tests/t-data.py: Added a test for no second argument
4100
4101 2017-12-01  Andre Heinecke  <aheinecke@intevation.de>
4102
4103         qt: Add job for quick commands.
4104         + commit 7d1ac5d61de3c55bf7ff14997b4b111a0f90c177
4105         * lang/qt/src/qgpgmequickjob.cpp,
4106         lang/qt/src/qgpgmequickjob.h,
4107         lang/qt/src/quickjob.h: New.
4108         * lang/qt/src/Makefile.am,
4109         lang/qt/src/protocol.h,
4110         lang/qt/src/protocol_p.h,
4111         lang/qt/src/job.cpp: Update accordingly.
4112
4113         cpp: Wrap create_key and create_subkey.
4114         + commit 8e2d6c28a5e923f829b5a26d19d9d897949aa1fe
4115         * lang/cpp/src/context.cpp,
4116         lang/cpp/src/context.h (Context::startCreateKey)
4117         (Context::createKey, Context::createSubkey)
4118         (Context::startCreateSubkey): New.
4119
4120         Fix uid parsing for ldap keyserver.
4121         + commit 651b3d8207cc7d85699f89fc4c21cb1243453aa8
4122         * src/engine-gpg.c (gpg_keylist_preprocess): Check field count
4123         for uid and add fallback.
4124
4125 2017-11-30  Werner Koch  <wk@gnupg.org>
4126
4127         tests: Add missing variable to gpgsm tests Makefile.
4128         + commit f43016500774ab82f222249202bda6c463aaf63f
4129         * tests/gpgsm/Makefile.am (GPG_AGENT): Set var.  It is used later.
4130
4131 2017-11-21  NIIBE Yutaka  <gniibe@fsij.org>
4132
4133         tests: Make portability fix.
4134         + commit c441fb73130f4c117094d7da4de9fe56f886e65d
4135         * lang/python/tests/Makefile.am: Distinguish target and path.
4136         * tests/gpg/Makefile.am: Ditto.
4137         * tests/gpgsm/Makefile.am: Ditto.
4138
4139 2017-11-14  Andre Heinecke  <aheinecke@intevation.de>
4140
4141         qt: Fix IODeviceDataProvider with Process.
4142         + commit 56b27b21d5f8dd95b9d6415c5e98b821774f3093
4143         * lang/qt/src/dataprovider.cpp (blocking_read): Keep
4144         reading if process is not atEnd.
4145
4146 2017-10-12  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
4147
4148         core: use getdents64 syscall on linux instead of getdents.
4149         + commit 00daac15530eabed5e61d841b2df939c2242667c
4150         * src/posix-io.c (get_max_fds): use getdents64 instead of getdents.
4151
4152 2017-10-04  Werner Koch  <wk@gnupg.org>
4153
4154         core: Allow disabling the use of SYS_getdents for Linux.
4155         + commit 4632adf403611b50be2b4e852a4607070935d0e5
4156         * configure.ac (USE_LINUX_GETDENTS): New ac_define.  Add option
4157         --disable-linux-getdents.
4158         * src/posix-io.c: Make use of USE_LINUX_GETDENTS.
4159
4160 2017-10-04  Colin Watson  <cjwatson@debian.org>
4161
4162         core: Restore get_max_fds optimization on Linux.
4163         + commit b5b996b1a142abb90296f5feadf0b5b19c59f738
4164         * src/posix-io.c (get_max_fds): Restore Linux optimization, this time
4165         using open/getdents/close rather than opendir/readdir/closedir.
4166
4167 2017-09-04  Andre Heinecke  <aheinecke@intevation.de>
4168
4169         qt: Add test for version info.
4170         + commit bd5d470cef513b2f459316869b81267cde7a9f13
4171         * lang/qt/tests/t-various.cpp (TestVarious::testVersion): New.
4172
4173         cpp: Fix version info comparison.
4174         + commit 58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0
4175         * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator<):
4176         Fix logic.
4177         * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator>):
4178         New.
4179         * NEWS: Mention added API
4180
4181 2017-08-24  Werner Koch  <wk@gnupg.org>
4182
4183         core: New context flag "auto-key-retrieve"
4184         + commit 47f61df0704485b8165c9cf2a27ad57bcd864239
4185         * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag
4186         "auto-key-retrieve".
4187         * src/context.h (gpgme_context): New field auto_key_retrieve.
4188         * src/engine-backend.h (struct engine_ops): Add arg auto_key_retrieve
4189         to field 'decrypt'.
4190         * src/engine-gpg.c (gpg_decrypt): Add arg auto_key_retrieve and pass
4191         option --auto-key-retrieve to gpg.  Adjust all callers.
4192         (gpg_verify): Ditto.
4193         * src/engine-gpgsm.c (gpgsm_decrypt): Add dummy arg auto_key_retrieve.
4194         * src/engine-uiserver.c (uiserver_decrypt): Ditto.
4195         * tests/run-verify.c (main): Add option --auto-key-retrieve.
4196
4197         core: New public enum gpgme_keyorg_t.
4198         + commit 9bde9144f0c2d0087799511e9b041dc945a4cfa8
4199         * src/gpgme.h.in (gpgme_keyorg_t): New.
4200         * src/keylist.c (parse_keyorg): New.
4201         (keylist_colon_handler): Set key->ORIGIN.
4202
4203 2017-08-24  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
4204
4205         gpgconf: Add more comments.
4206         + commit 91e47d71652bd0f83b51089c343c3c4836bdfa8a
4207         * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir):
4208         Add comments.
4209
4210 2017-08-23  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
4211
4212         Fix a couple of bugs pointed out by clang compiler warnings.
4213         + commit bfb3a01a0c55aa327dcab061fa808672362cb09d
4214         * src/engine-gpgconf.c (gpgconf_config_dir_cb): Fix cast.
4215         * src/key.c (_gpgme_key_add_sig): Fix pointer reference.
4216
4217 2017-08-21  Alon Bar-Lev  <alon.barlev@gmail.com>
4218
4219         python: Support parallel build in tests.
4220         + commit 57c12593082e4ad302041269f1c35f2fe7d2fb1a
4221         * lang/python/tests/Makefile.am: Depend xcheck with all which was lost
4222         due to the check hack.
4223
4224 2017-08-21  Justus Winter  <justus@g10code.com>
4225
4226         python: Improve keylist test.
4227         + commit 70c8be9efe8de40bec0f0673589f3c9be7136674
4228         * lang/python/tests/t-keylist.py: Check a keylist matching no keys.
4229
4230 2017-08-16  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
4231
4232         doc: Add version information.
4233         + commit b9b08e46934eea9083afb2eaf4bffa23d6c27801
4234         * doc/gpgme.texi (since): New macro.  Use it to add version
4235         information to those APIs that are mentioned in the NEWS file.
4236
4237         doc: Clarify import keys operation further.
4238         + commit 0ee7f4f178284dae153a59be710bc994820369e5
4239         * doc/gpgme.texi (gpgme_op_import_keys): Further clarifications.
4240
4241         gpgconf: Fix some warnings.
4242         + commit 3244d4daff892d5d3c39e78f4eb0934379beda2c
4243         * tests/gpg/t-gpgconf.c (main): Fix warnings.
4244         * src/engine-gpgconf.c (struct gpgconf_config_dir_s): New struct.
4245         (gpgconf_config_dir_cb, gpgconf_conf_dir) Use it to fix warning.
4246
4247         gpgconf: Fix symbol export.
4248         + commit 97a1abe72e73f85bbf922fa588d002a226db5459
4249         * gpgme.def: Fix last change.
4250         (gpgme_op_conf_save): Replace duplicate from c&p ...
4251         (gpgme_op_conf_dir): ... with this.
4252
4253 2017-08-15  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
4254
4255         NEWS: Add missing entry.
4256         + commit fa3918598de35fef0bf626035d59ea36c53832b9
4257
4258
4259         gpgconf: Add access to --list-dirs for non-default engine.
4260         + commit 9f24e6c9010e171fd11c5cdac797cb8ce2e501dd
4261         * src/engine-assuan.c (_gpgme_engine_ops_assuan): Add conf_dir.
4262         * src/engine-g13.c (_gpgme_engine_ops_g13): Likewise.
4263         * src/engine-gpg.c (_gpgme_engine_ops_gpg): Likewise.
4264         * src/engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Likewise.
4265         * src/engine-spawn.c (_gpgme_engine_ops_spawn): Likewise.
4266         * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Likewise.
4267         * src/engine-backend.h (struct engine_ops): Likewise.
4268         * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir):
4269         New functions.
4270         (struct engine_ops): Add gpgconf_conf_dir.
4271         * src/engine.c (_gpgme_engine_op_conf_dir): New function.
4272         * src/engine.h (_gpgme_engine_op_conf_dir): New prototype.
4273         * src/gpgconf.c (gpgme_op_conf_dir): New function.
4274         * src/gpgme.def (gpgme_op_conf_save): New symbol.
4275         * src/gpgme.h.in (gpgme_op_conf_dir): New prototype.
4276         * src/libgpgme.vers (gpgme_op_conf_dir): New symbol.
4277         * tests/gpg/t-gpgconf.c (main): Test gpgme_op_conf_dir.
4278
4279 2017-08-11  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
4280
4281         g10: Add new delete operations that allow more flags.
4282         + commit a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf
4283         * NEWS: Document new interfaces.
4284         * doc/gpgme.texi: Document new interfaces.
4285         * src/gpgme.h.in (GPGME_DELETE_ALLOW_SECRET, GPGME_DELETE_FORCE,
4286         gpgme_op_delete_ext_start, gpgme_op_delete_ext): New.
4287         * src/delete.c (delete_start): Change allow_secret argument to flags.
4288         (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New functions.
4289         * src/engine-backend.h (delete): Change allow_secret argument to flags.
4290         * src/engine.c (_gpgme_engine_op_delete): Likewise.
4291         * src/engine.h (_gpgme_engine_op_delete): Likewise (for prototype).
4292         * src/engine-gpgsm.c (gpgsm_delete): Likewise.
4293         * src/engine-gpg.c (gpg_delete): Likewise.  Implement GPGME_DELETE_FORCE.
4294         * src/gpgme.def (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
4295         * src/libgpgme.vers (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
4296
4297 2017-08-10  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
4298
4299         doc: Clarify import keys operation.
4300         + commit dfb3ca85680534b3885ab04d3fba4752c5a6f998
4301         * doc/gpgme.texi (gpgme_op_import_start): Fix grammar.
4302         (gpgme_op_import_keys): Clarify some wording and fix result.
4303         * src/import.c (gpgme_op_import_keys): Clarify comment.
4304
4305         doc: Add more tofu documentation.
4306         + commit 274609baceda3378b21f84c3ae6a44806dad2dba
4307         * doc/gpgme.texi (gpgme_tofu_info_t): Document structure.
4308         (gpgme_sigsum_t): Document GPGME_SIGSUM_TOFU_CONFLICT.
4309
4310 2017-07-27  Andre Heinecke  <aheinecke@intevation.de>
4311
4312         core: Fix status parsing for decrypt + verify.
4313         + commit d3796e4504a2b4f422de17d78f3acfe8dd199c9c
4314         * src/decrypt.c (parse_status_error): Don't modify args.
4315
4316 2017-07-26  Andre Heinecke  <aheinecke@intevation.de>
4317
4318         cpp: Fix Key::isDeVs for subkeys.
4319         + commit c7be41a5f850addceb2a95444bad2a31cdcd1ce5
4320         * lang/cpp/src/key.cpp (Key::isDeVs): Check all subkeys.
4321
4322 2017-07-13  Justus Winter  <justus@g10code.com>
4323
4324         tests: Fix distcheck.
4325         + commit 7fde780cc1773c6d3902d4f49a8d4aadbf3223d4
4326         * tests/start-stop-agent: Remove backup file.
4327
4328         tests: Make agent spawning more robust.
4329         + commit 9cd2b58dfb2c21cce64520cf4c726859b583d14e
4330         * tests/gpgsm/Makefile.am (gpgsm.conf): Add agent-program directive.
4331         * tests/start-stop-agent: Update agent-program directive.
4332
4333 2017-07-12  Werner Koch  <wk@gnupg.org>
4334
4335         tests: Fix printf compiler warning for an error case.
4336         + commit 46d2e48105e0929ec38dd4106004dd60d941df9a
4337         * tests/gpg/t-keylist.c (main): Cast DIM to int.
4338
4339         core: Return NO_SECKEY error code on decryption.
4340         + commit ad0c5ab4cd8d3a1b11b37dc137b75a67aa26da37
4341         * src/decrypt.c (op_data_t): Add flag any_no_seckey.
4342         (_gpgme_decrypt_status_handler): Consult that flag.
4343         (_gpgme_decrypt_status_handler): Set that flag.
4344
4345         core: Return CANCELED and BAD_PASSPHRASE error code on decryption.
4346         + commit d37bc7e025cdc6228da45b2b527e9f3bfef71c71
4347         * src/decrypt.c (op_data_t): Add field pkdecrypt_failed.
4348         (_gpgme_decrypt_status_handler): Consult new field.
4349         (parse_status_error): Handle some error codes.
4350
4351         core: Simplify parsing of STATUS_ERROR in decrypt.c.
4352         + commit 87703dbb86ac8fd8abd23170f8038ea6e3dbde28
4353         * src/decrypt.c (_gpgme_decrypt_status_handler): Factor some code out
4354         to ...
4355         (parse_status_error): new.  Modernize parsing.
4356
4357 2017-07-11  Justus Winter  <justus@g10code.com>
4358
4359         python: Improve error handling.
4360         + commit 1e68f93dc547ae75b921e43db35e3599de92e2cb
4361         * NEWS: Update.
4362         * lang/python/src/core.py (Context.__read__): New helper function.
4363         (Context.encrypt): Attach partial results to exceptions.
4364         (Context.decrypt): Likewise.
4365         (Context.sign): Likewise.
4366         (Context.verify): Likewise.
4367         * lang/python/src/errors.py (GpgError): Move the core of GPGMEError to
4368         this class, add a nicer interface for it.  This makes the errors
4369         thrown by this library more uniform, and allows us to track the
4370         underlying error in synthesized high-level errors.
4371         (GPGMEError): Simplify.
4372         (...): Make sure to call the parent classes' constructor in all other
4373         classes.
4374
4375 2017-07-10  Andre Heinecke  <aheinecke@intevation.de>
4376
4377         Add isDeVs to ostream operator.
4378         + commit fe79eb8de3dc780eafb38a0a0a016748e764ff04
4379         * lang/cpp/src/decryptionresult.cpp,
4380         lang/cpp/src/verificationresult.cpp: Extend ostream operator
4381         to include isDeVs.
4382
4383 2017-06-12  Andre Heinecke  <aheinecke@intevation.de>
4384
4385         cpp: Fix CMake config library name for GPGME.
4386         + commit 5c53c702605b8d4458a14e6303cdc13f3b106efa
4387         * lang/cpp/src/GpgmeppConfig.cmake.in.in: The link library
4388         is of course also dynamic.
4389
4390 2017-06-01  Justus Winter  <justus@g10code.com>
4391
4392         Add flag 'is_de_vs' to decryption results and signatures.
4393         + commit 05fa2a9c7764b28fdac35eb72631439df948ca0e
4394         * NEWS: Update.
4395         * lang/cpp/src/decryptionresult.cpp (DecryptionResult::isDeVs): New
4396         function.
4397         * lang/cpp/src/decryptionresult.h (DecryptionResult::isDeVs): New
4398         prototype.
4399         * lang/cpp/src/verificationresult.cpp (Signature::isDeVs): New
4400         function.
4401         * lang/cpp/src/verificationresult.h (Signature::isDeVs): New
4402         prototype.
4403         * lang/python/src/results.py (DecryptResult): Turn field 'is_de_vs'
4404         into a boolean.
4405         (Signature): Likewise.
4406         * src/decrypt.c (_gpgme_decrypt_status_handler): Handle the new
4407         compliance status line.
4408         * src/verify.c (_gpgme_verify_status_handler): Likewise.
4409         * src/gpgme.h.in (gpgme_status_code_t): Add new status codes for the
4410         new status lines.
4411         * src/keylist.c (parse_pub_field18): Move function to 'util.h'.
4412         (keylist_colon_handler): Adapt callsites.
4413         * src/status-table.c (status_table): Add new status lines.
4414         * src/util.h (PARSE_COMPLIANCE_FLAGS): New macro.  This used to be
4415         'parse_pub_field18', but turned into a macro to make it polymorphic.
4416
4417 2017-05-18  Justus Winter  <justus@g10code.com>
4418
4419         python: Fix build in certain cases.
4420         + commit 84a203e60b9935bd8536cd2832fbc55d7f011341
4421         * lang/python/setup.py.in: Prepend the Python build dir to the list of
4422         include directories so that it takes precedence over any other include
4423         directory.
4424
4425 2017-05-10  Justus Winter  <justus@g10code.com>
4426
4427         tests: Remove remnants of 'check-local'.
4428         + commit a9b4c0ad0d1085ff76742e44cf0cf926e89d1f4c
4429         * tests/gpgsm/Makefile.am (check-local): Drop rule and the dependency
4430         on it.
4431
4432         python: Fix test environment creation.
4433         + commit 6b4dd3b929ac23271bfa96edb9dbb142eca0a30f
4434         * lang/python/tests/Makefile.am (pubring-stamp): Do not depend on the
4435         configuration files, this can trigger superfluous rebuilds.
4436
4437         tests: Make sure to kill all previously running daemons.
4438         + commit a226eca84670ef4e171c3a54e7caefb3a89254a4
4439         * lang/python/tests/Makefile.am: Kill all previously running daemons
4440         before creating the private key store.
4441         * lang/qt/tests/Makefile.am: Likewise.
4442         * tests/gpg/Makefile.am: Likewise.
4443         * tests/gpgsm/Makefile.am: Likewise.
4444
4445         tests: Harmonize test suites.
4446         + commit 15adff073bb89dc032d8342cfbbdad2850943f52
4447         * lang/python/tests/Makefile.am: Create test environment as part of
4448         'make all'.
4449         * tests/gpg/Makefile.am: Make sure the private keystore is created
4450         first.
4451         * tests/gpgsm/Makefile.am: Create test environment as part of
4452         'make all'.  Make sure the private keystore is created
4453         first.
4454
4455         qt: Stop agent on clean.
4456         + commit 093b5497b7231590ce91ccf73ba64ebc0757f9e9
4457         * lang/qt/tests/Makefile.am (clean-local): Stop agent.
4458
4459 2017-05-10  Andre Heinecke  <aheinecke@intevation.de>
4460
4461         qt: Add a missing include <functional>
4462         + commit 5e27bf98b4c48cf6a239bcc94b7b67515ff339e7
4463         * lang/qt/src/qgpgmenewcryptoconfig.cpp: Include functional.
4464
4465         qt: Undeprecate API that I find useful.
4466         + commit cc2ef3d07c0d261bb9e8e8c0f2706e1a08e4ec53
4467         * lang/qt/src/decryptjob.h,
4468         lang/qt/src/decryptverifyjob.h,
4469         lang/qt/src/signencryptjob.h,
4470         lang/qt/src/verifydetachedjob.h,
4471         lang/qt/src/verifyopaquejob.h: Undeprecate ByteArray based API.
4472
4473         qt, tests: Don't use internal API.
4474         + commit b56f398eff4e3e70dea714c3174a5512dd9bcf33
4475         * lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp:
4476         Only use exported API.
4477
4478 2017-05-03  Andre Heinecke  <aheinecke@intevation.de>
4479
4480         core: Don't split gpgconf strings on comma.
4481         + commit df4eb611e33dcab7bebf07b13734c7db7ccf40da
4482         * src/engine-gpgconf.c (gpgconf_parse_option): Don't split
4483         strings on comma.
4484
4485 2017-04-25  Andre Heinecke  <aheinecke@intevation.de>
4486
4487         qt, cpp: Add additional copyright BSI notes.
4488         + commit 28734240e2a2ce67b64df55364f35e1648376311
4489         * lang/cpp/Makefile.am,
4490         lang/cpp/src/Makefile.am,
4491         lang/cpp/src/callbacks.cpp,
4492         lang/cpp/src/callbacks.h,
4493         lang/cpp/src/configuration.cpp,
4494         lang/cpp/src/configuration.h,
4495         lang/cpp/src/context_glib.cpp,
4496         lang/cpp/src/context_p.h,
4497         lang/cpp/src/context_qt.cpp,
4498         lang/cpp/src/context_vanilla.cpp,
4499         lang/cpp/src/data_p.h,
4500         lang/cpp/src/decryptionresult.cpp,
4501         lang/cpp/src/decryptionresult.h,
4502         lang/cpp/src/defaultassuantransaction.cpp,
4503         lang/cpp/src/defaultassuantransaction.h,
4504         lang/cpp/src/editinteractor.cpp,
4505         lang/cpp/src/editinteractor.h,
4506         lang/cpp/src/encryptionresult.cpp,
4507         lang/cpp/src/encryptionresult.h,
4508         lang/cpp/src/engineinfo.cpp,
4509         lang/cpp/src/engineinfo.h,
4510         lang/cpp/src/error.h,
4511         lang/cpp/src/eventloopinteractor.cpp,
4512         lang/cpp/src/eventloopinteractor.h,
4513         lang/cpp/src/exception.cpp,
4514         lang/cpp/src/exception.h,
4515         lang/cpp/src/global.h,
4516         lang/cpp/src/gpgadduserideditinteractor.cpp,
4517         lang/cpp/src/gpgadduserideditinteractor.h,
4518         lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
4519         lang/cpp/src/gpgagentgetinfoassuantransaction.h,
4520         lang/cpp/src/gpgmefw.h,
4521         lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
4522         lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
4523         lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
4524         lang/cpp/src/gpgsetownertrusteditinteractor.h,
4525         lang/cpp/src/gpgsignkeyeditinteractor.cpp,
4526         lang/cpp/src/gpgsignkeyeditinteractor.h,
4527         lang/cpp/src/importresult.cpp,
4528         lang/cpp/src/importresult.h,
4529         lang/cpp/src/interfaces/assuantransaction.h,
4530         lang/cpp/src/interfaces/dataprovider.h,
4531         lang/cpp/src/interfaces/passphraseprovider.h,
4532         lang/cpp/src/interfaces/progressprovider.h,
4533         lang/cpp/src/keygenerationresult.cpp,
4534         lang/cpp/src/keygenerationresult.h,
4535         lang/cpp/src/keylistresult.cpp,
4536         lang/cpp/src/keylistresult.h,
4537         lang/cpp/src/notation.h,
4538         lang/cpp/src/result.h,
4539         lang/cpp/src/result_p.h,
4540         lang/cpp/src/scdgetinfoassuantransaction.cpp,
4541         lang/cpp/src/scdgetinfoassuantransaction.h,
4542         lang/cpp/src/signingresult.cpp,
4543         lang/cpp/src/signingresult.h,
4544         lang/cpp/src/trustitem.cpp,
4545         lang/cpp/src/trustitem.h,
4546         lang/cpp/src/util.h,
4547         lang/cpp/src/verificationresult.cpp,
4548         lang/cpp/src/verificationresult.h,
4549         lang/cpp/src/vfsmountresult.cpp,
4550         lang/qt/Makefile.am,
4551         lang/qt/doc/Makefile.am,
4552         lang/qt/src/Makefile.am,
4553         lang/qt/src/defaultkeygenerationjob.h,
4554         lang/qt/tests/Makefile.am: Add missing copyright.
4555
4556         Change copyright from Intevation to BSI.
4557         + commit 70035834326d0d04a5904ae01bc3757e577facf4
4558         * lang/cpp/src/gpggencardkeyinteractor.cpp,
4559         lang/cpp/src/gpggencardkeyinteractor.h,
4560         lang/cpp/src/gpgmepp_export.h,
4561         lang/cpp/src/swdbresult.cpp,
4562         lang/cpp/src/swdbresult.h,
4563         lang/cpp/src/tofuinfo.cpp,
4564         lang/cpp/src/tofuinfo.h,
4565         lang/qt/src/abstractimportjob.h,
4566         lang/qt/src/adduseridjob.h,
4567         lang/qt/src/changeexpiryjob.h,
4568         lang/qt/src/changeownertrustjob.h,
4569         lang/qt/src/changepasswdjob.h,
4570         lang/qt/src/cryptoconfig.cpp,
4571         lang/qt/src/cryptoconfig.h,
4572         lang/qt/src/dataprovider.cpp,
4573         lang/qt/src/dataprovider.h,
4574         lang/qt/src/decryptjob.h,
4575         lang/qt/src/decryptverifyjob.h,
4576         lang/qt/src/deletejob.h,
4577         lang/qt/src/dn.cpp,
4578         lang/qt/src/dn.h,
4579         lang/qt/src/downloadjob.h,
4580         lang/qt/src/encryptjob.h,
4581         lang/qt/src/exportjob.h,
4582         lang/qt/src/hierarchicalkeylistjob.h,
4583         lang/qt/src/importfromkeyserverjob.h,
4584         lang/qt/src/importjob.h,
4585         lang/qt/src/job.cpp,
4586         lang/qt/src/job.h,
4587         lang/qt/src/keyformailboxjob.h,
4588         lang/qt/src/keygenerationjob.h,
4589         lang/qt/src/keylistjob.h,
4590         lang/qt/src/listallkeysjob.h,
4591         lang/qt/src/multideletejob.h,
4592         lang/qt/src/protocol.h,
4593         lang/qt/src/protocol_p.h,
4594         lang/qt/src/qgpgme_export.h,
4595         lang/qt/src/qgpgmeadduseridjob.cpp,
4596         lang/qt/src/qgpgmeadduseridjob.h,
4597         lang/qt/src/qgpgmebackend.cpp,
4598         lang/qt/src/qgpgmebackend.h,
4599         lang/qt/src/qgpgmechangeexpiryjob.cpp,
4600         lang/qt/src/qgpgmechangeexpiryjob.h,
4601         lang/qt/src/qgpgmechangeownertrustjob.cpp,
4602         lang/qt/src/qgpgmechangeownertrustjob.h,
4603         lang/qt/src/qgpgmechangepasswdjob.cpp,
4604         lang/qt/src/qgpgmechangepasswdjob.h,
4605         lang/qt/src/qgpgmedecryptjob.cpp,
4606         lang/qt/src/qgpgmedecryptjob.h,
4607         lang/qt/src/qgpgmedecryptverifyjob.cpp,
4608         lang/qt/src/qgpgmedecryptverifyjob.h,
4609         lang/qt/src/qgpgmedeletejob.cpp,
4610         lang/qt/src/qgpgmedeletejob.h,
4611         lang/qt/src/qgpgmedownloadjob.cpp,
4612         lang/qt/src/qgpgmedownloadjob.h,
4613         lang/qt/src/qgpgmeencryptjob.cpp,
4614         lang/qt/src/qgpgmeencryptjob.h,
4615         lang/qt/src/qgpgmeexportjob.cpp,
4616         lang/qt/src/qgpgmeexportjob.h,
4617         lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
4618         lang/qt/src/qgpgmeimportfromkeyserverjob.h,
4619         lang/qt/src/qgpgmeimportjob.cpp,
4620         lang/qt/src/qgpgmeimportjob.h,
4621         lang/qt/src/qgpgmekeyformailboxjob.cpp,
4622         lang/qt/src/qgpgmekeyformailboxjob.h,
4623         lang/qt/src/qgpgmekeygenerationjob.cpp,
4624         lang/qt/src/qgpgmekeygenerationjob.h,
4625         lang/qt/src/qgpgmekeylistjob.cpp,
4626         lang/qt/src/qgpgmekeylistjob.h,
4627         lang/qt/src/qgpgmelistallkeysjob.cpp,
4628         lang/qt/src/qgpgmelistallkeysjob.h,
4629         lang/qt/src/qgpgmenewcryptoconfig.cpp,
4630         lang/qt/src/qgpgmenewcryptoconfig.h,
4631         lang/qt/src/qgpgmerefreshkeysjob.cpp,
4632         lang/qt/src/qgpgmerefreshkeysjob.h,
4633         lang/qt/src/qgpgmesecretkeyexportjob.cpp,
4634         lang/qt/src/qgpgmesecretkeyexportjob.h,
4635         lang/qt/src/qgpgmesignencryptjob.cpp,
4636         lang/qt/src/qgpgmesignencryptjob.h,
4637         lang/qt/src/qgpgmesignjob.cpp,
4638         lang/qt/src/qgpgmesignjob.h,
4639         lang/qt/src/qgpgmesignkeyjob.cpp,
4640         lang/qt/src/qgpgmesignkeyjob.h,
4641         lang/qt/src/qgpgmetofupolicyjob.cpp,
4642         lang/qt/src/qgpgmetofupolicyjob.h,
4643         lang/qt/src/qgpgmeverifydetachedjob.cpp,
4644         lang/qt/src/qgpgmeverifydetachedjob.h,
4645         lang/qt/src/qgpgmeverifyopaquejob.cpp,
4646         lang/qt/src/qgpgmeverifyopaquejob.h,
4647         lang/qt/src/qgpgmewkspublishjob.cpp,
4648         lang/qt/src/qgpgmewkspublishjob.h,
4649         lang/qt/src/refreshkeysjob.h,
4650         lang/qt/src/signencryptjob.h,
4651         lang/qt/src/signjob.h,
4652         lang/qt/src/signkeyjob.h,
4653         lang/qt/src/specialjob.h,
4654         lang/qt/src/threadedjobmixin.cpp,
4655         lang/qt/src/threadedjobmixin.h,
4656         lang/qt/src/tofupolicyjob.h,
4657         lang/qt/src/verifydetachedjob.h,
4658         lang/qt/src/verifyopaquejob.h,
4659         lang/qt/src/wkspublishjob.h,
4660         lang/qt/tests/run-keyformailboxjob.cpp,
4661         lang/qt/tests/t-config.cpp,
4662         lang/qt/tests/t-encrypt.cpp,
4663         lang/qt/tests/t-keylist.cpp,
4664         lang/qt/tests/t-keylocate.cpp,
4665         lang/qt/tests/t-ownertrust.cpp,
4666         lang/qt/tests/t-support.cpp,
4667         lang/qt/tests/t-support.h,
4668         lang/qt/tests/t-tofuinfo.cpp,
4669         lang/qt/tests/t-various.cpp,
4670         lang/qt/tests/t-verify.cpp,
4671         lang/qt/tests/t-wkspublish.cpp,
4672         tests/gpg/t-encrypt-mixed.c,
4673         tests/gpg/t-thread-keylist-verify.c,
4674         tests/gpg/t-thread-keylist.c,
4675         tests/run-decrypt.c: Change Intevation GmbH copyright to BSI.
4676
4677 2017-04-24  Andre Heinecke  <aheinecke@intevation.de>
4678
4679         doc: Improve doc on passphrase_cb / pinentry mode.
4680         + commit 8d61aba1fe0379ba14494f8ae2011ba531554ef4
4681         * doc/gpgme.texi (Passphrase Callback): Mention pinentry_mode and
4682         restrictions.
4683         (Pinentry Mode): Fix wording and clarify versions that need
4684         loopback mode for passphrase_cb to work.
4685
4686 2017-04-24  Justus Winter  <justus@g10code.com>
4687
4688         tests: Update encrypted sample files.
4689         + commit ac28e66f46132ae4a854d04b2f17acd4d55e4296
4690         * tests/gpg/cipher-1.asc: Update file.
4691         * tests/gpg/cipher-2.asc: Likewise.
4692
4693 2017-04-11  Justus Winter  <justus@g10code.com>
4694
4695         python: Skip TOFU test if not supported by GnuPG.
4696         + commit 979d48e823357af9999a2adb34d75adaade8dec2
4697         * lang/python/tests/support.py (have_tofu_support): New function.
4698         * lang/python/tests/t-quick-key-manipulation.py: Skip TOFU test if not
4699         supported by GnuPG.
4700
4701 2017-04-11  Alon Bar-Lev  <alon.barlev@gmail.com>
4702
4703         python: use autoconf pre-processor when building via autoconf.
4704         + commit a827382cafe7f1425455dcc8bf5ef049172eb493
4705         * configure.ac: Add AC_PROG_CPP.
4706         * lang/python/Makefile.am: Set CPP environment for setup.py to use.
4707
4708         python: fix run-tests missing python_libdir.
4709         + commit d785c053a982bddefd7014dc6856d1af345fe9fb
4710         * lang/python/tests/run-tests.py: Set python_libdir if --python-libdir
4711         is set.
4712
4713 2017-04-10  Justus Winter  <justus@g10code.com>
4714
4715         python: Fix distcheck.
4716         + commit db476e923415f8e458720aaafde7234b802a33ab
4717         * lang/python/Makefile.am (uninstall-local): Explicitly request the
4718         scheme 'posix_prefix'.  On Python2.7 the default scheme is
4719         'posix_local', breaking distcheck.
4720
4721 2017-04-10  Alon Bar-Lev  <alon.barlev@gmail.com>
4722
4723         python: Support alternatate libdir for tests.
4724         + commit 3cc90b67fa970e716c8672ec5c5f591fa11ab216
4725         * lang/python/tests/run-tests.py: Add --python-libdir optional
4726         parameter.
4727
4728         python: Read gpg-error.h using the pre-processor.
4729         + commit 7309ce6f5f7c86570953a141965d4f54cd9ad9a0
4730         * lang/python/setup.py.in: Read gpg-error.h using the pre-processor.
4731
4732         python: Remove unneeded stats copy.
4733         + commit df8433bffa9e669897243f08edf7845762250e4a
4734         * lang/python/setup.py.in: errors.i, gpgme.h are generated and always
4735         newer than the original.
4736
4737         python: Remove usage of PYTHON_VERSIONS.
4738         + commit 25e6444b3f4601c7821beab06bc4520deacb007b
4739         * configure.ac: Remove PYTHON_VERSIONS subst.
4740         * lang/python/Makefile.am: Use basename of python as builddir prefix.
4741         * lang/python/tests/run-tests.py: Likewise.
4742
4743         tests: Do not use check-local magic as dependency.
4744         + commit ebefc6cbf937d14ced65f7ded79c4ba901507d23
4745         * tests/gpg/Makefile.am: Use BUILT_SOURCES instead of check-local
4746         and initial.test.
4747         * lang/qt/tests/Makefile.am: Ditto.
4748
4749         python: support .pydistutils.cfg mode.
4750         + commit 365c649ad073f2697438dc014160943ae31a1447
4751         * lang/python/setup.py.in: Do not parse arguments.
4752
4753 2017-04-07  Alon Bar-Lev  <alon.barlev@gmail.com>
4754
4755         python: simplify build, some fixups.
4756         + commit 49195c487e6c923f7137f092b982e7d833d98de6
4757         * lang/python/gpg/version.py.in: Rename to lang/python/version.py.in.
4758         configure.ac: Generate version.py.in in lang/python.
4759         * lang/python/MANIFEST.in: Include version.py explicitly.
4760         * lang/python/gpg: Rename to 'src'.
4761         * lang/python/Makefile.am: Do not copy source files, do not use absolute
4762         directories, support lib64 in uninstall, clean also dist directory, use
4763         symlink for gpg src.
4764         * lang/python/setup.py.in: Use builddir, copy sources into builddir,
4765         copy version.py into module.
4766
4767 2017-04-05  Justus Winter  <justus@g10code.com>
4768
4769         python: Fix vpath builds, fix distcheck.
4770         + commit e7d9c0c3d773f826dbd2ed417d04e25c410f3374
4771         * lang/python/gpgme-h-clean.py: Delete file.
4772         * lang/python/MANIFEST.in: Adapt accordingly.
4773         * lang/python/Makefile.am (EXTRA_DIST): Likewise.
4774         (COPY_FILES_GPG): Bring variable back.
4775         (copystamp): Copy files.
4776         (clean-local): Delete copied files.
4777         (install-exec-local): Do not create and install list of installed
4778         files.
4779         (uninstall-local): Instead, create some explicit rules to uninstall
4780         the extension.
4781         * lang/python/setup.py.in: Parse arguments.  Locate files either in
4782         the source directory, or in the build base directory.  Inline the code
4783         from 'gpgme-h-clean.py'.  Copy 'helpers.c', add source directory as
4784         include directory.
4785
4786 2017-04-05  Alon Bar-Lev  <alon.barlev@gmail.com>
4787
4788         python: Generate files into build directory.
4789         + commit 801d7d8c5dd530d26ad6c4bcc94d986e6e022da4
4790         * lang/python/setup.py.in: Generate files within BuildExtFirstHack
4791         adjust build flags at this point instead of global.
4792         * lang/python/Makefile.am: Remove logic of separate source directory per
4793         python version in favor of build directory.
4794         * lang/python/tests/run-tests.py: Adjust build directory location.
4795
4796 2017-04-03  Pietro Cerutti  <gahr@gahr.ch>
4797
4798         FreeBSD's closefrom(2) does not return errors.
4799         + commit 50565982cdd502c3852fcc6f598932bd32b5cdc3
4800
4801
4802 2017-04-03  Igor Gnatenko  <ignatenkobrain@fedoraproject.org>
4803
4804         qt: pass fmt to gpgrt_asprintf()
4805         + commit 5d4f977dac542340c877fdd4b1304fa8f6e058e6
4806         * lang/qt/src/dn.cpp (parse_dn_part): Add fmt argument instead of
4807         using name directly.
4808
4809         GnuPG-Bug-Id: 3023
4810
4811 2017-03-30  Andre Heinecke  <aheinecke@intevation.de>
4812
4813         python: Don't treat skipped tests as error.
4814         + commit f8a9ecc6290ebd73fa36647cdfca285fe4d94a62
4815         * lang/python/tests/run-tests.py (failed): Don't count skipped tests
4816         for the return code.
4817
4818 2017-03-30  Justus Winter  <justus@g10code.com>
4819
4820         python: Fix skipping tests if running with GnuPG < 2.1.12.
4821         + commit 159505a28864399cc5405d9f85f35ab011a3259e
4822         * final.py: Import 'support.py' for the side-effect of checking the
4823         GnuPG version.
4824         * t-data.py: Likewise.
4825         * t-protocol-assuan.py: Likewise.
4826         * t-wrapper.py: Likewise.
4827         * t-callbacks.py: Avoid warning about 'support' being unused.
4828         * t-edit.py: Likewise.
4829         * t-encrypt-sym.py: Likewise.
4830         * t-file-name.py: Likewise.
4831         * t-idiomatic.py: Likewise.
4832         * t-sig-notation.py: Likewise.
4833         * t-trustlist.py: Likewise.
4834         * t-verify.py: Likewise.
4835         * t-wait.py: Likewise.
4836         * t-keylist-from-data.py: Trim unused imports.
4837
4838 2017-03-30  Andre Heinecke  <aheinecke@intevation.de>
4839
4840         qt: Handle if gpg does not support tofu in test.
4841         + commit 2c063a8d60418ee59ae80da221420c6f3fa19abb
4842         * lang/qt/src/t-tofuinfo.cpp (TestTofuInfo::testSupported): Treat
4843         it as unsupported if secret keylisting already fails.
4844
4845 2017-03-29  Alon Bar-Lev  <alon.barlev@gmail.com>
4846
4847         python,build: Reinstate prepare target.
4848         + commit 9786e3a96e6772166f3523e74a748b9db20fae7c
4849         * lang/python/Makefile.am: Fix 'prepare' target.
4850         * lang/python/setup.py.in: Use 'abs_top_builddir' instead of guessing
4851         the path.
4852
4853 2017-03-28  Justus Winter  <justus@g10code.com>
4854
4855         tests: Run the threading tests only on UNIX.
4856         + commit 7e9f7752c992f957ccfde3b274865c633096e3bb
4857         * tests/gpg/Makefile.am (tests_unix): Add 't-thread-keylist' and
4858         't-thread-keylist-verify'.
4859         (c_tests): Drop them here.
4860
4861         tests: Make error message more helpful.
4862         + commit a13e4abe9463579ef23d1acea39a093abfc6528d
4863         * tests/gpg/t-keylist.c (main): Print number of returned and expected
4864         keys.
4865
4866 2017-03-28  Werner Koch  <wk@gnupg.org>
4867
4868         Release 1.9.0.
4869         + commit aa0390ec3b910bbbc323a15ec3c3351e77785a9a
4870         * configure.ac <c>: Bump LT version to C29/A18/R0.
4871         <cpp>: Bump LT version to C10/A4/R0.
4872         <qt>: Bump LT version to C9/A2/R0.
4873
4874 2017-03-28  Andre Heinecke  <aheinecke@intevation.de>
4875
4876         Revert "qt: Disable testEncryptDecryptNowrap"
4877         + commit a2ccb3172896a90bc27c95964ef94bd7c0924802
4878         This reverts commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414.
4879
4880 2017-03-28  Werner Koch  <wk@gnupg.org>
4881
4882         core: Prepare for new key listing data send by gpg.
4883         + commit 813ae5fa2d712aa9679b791c67c9c1c43d36ffe4
4884         * src/gpgme.h.in (gpgme_user_id_t): New fields 'origin' and
4885         'last_update'.
4886         (gpgme_key_t): New fields 'origin' and 'last_update'.
4887         * src/conversion.c (_gpgme_parse_timestamp_ul): New.
4888         * src/keylist.c (keylist_colon_handler): Parse fields 19 and 20.
4889
4890         * tests/run-keylist.c (main): Print new fields.
4891
4892 2017-03-27  Andre Heinecke  <aheinecke@intevation.de>
4893
4894         qt: Disable testEncryptDecryptNowrap.
4895         + commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414
4896         * lang/qt/tests/t-encrypt.cpp (EncryptTest::testEncryptDecryptNowrap):
4897         Disable test.
4898
4899 2017-03-27  Justus Winter  <justus@g10code.com>
4900
4901         python: Skip tests if running with GnuPG < 2.1.12.
4902         + commit 348da58fe0c3656e6177c98fef6b4c4331326c8e
4903         * lang/python/tests/support.py (assert_gpg_version): Fix error
4904         message.  Skip all tests when we use GnuPG older than 2.1.12.
4905
4906 2017-03-24  Andre Heinecke  <aheinecke@intevation.de>
4907
4908         cpp: Respect decrypt flags in new functions.
4909         + commit 18b7906078cf08962c54c1e711cf2d91a24fd4e5
4910         * lang/cpp/src/context.cpp: Respect directly provided flags
4911         in the new decrypt functions.
4912
4913         qt: Add unittest for decrypt unwrap.
4914         + commit 5493164f8665fabf795f3b34a7084770a38ae940
4915         * lang/qt/tests/t-encrypt.cpp
4916         (EncryptTest::testEncryptDecryptNowrap): New.
4917
4918         cpp: Use gpgme_op_decrypt_ex and add new flags.
4919         + commit 8ad37ecc297f208d0a63783c1ffae33ad4c3c81a
4920         * lang/cpp/src/context.cpp: New decrypt and decryptVerify functions
4921         that take flags as arguments. Use new variants in old functions.
4922         (Context::setDecryptionFlags): New helper.
4923         (Context::Private::Private): Initialize new member.
4924         * lang/cpp/src/context_p.h (Context::Private::decryptFlags): New.
4925         * lang/cpp/src/context.h (Context::DecryptFlags): New enum.
4926         (Context::EncryptionFlags): Extend for EncryptWrap.
4927
4928 2017-03-24  Werner Koch  <wk@gnupg.org>
4929
4930         core: New flags GPGME_DECRYPT_UNWRAP and GPGME_ENCRYPT_WRAP.
4931         + commit 6ac1f2cdedb085b4ac9372c1e591497e2e618de4
4932         * src/gpgme.h.in (GPGME_ENCRYPT_WRAP): New const.
4933         (gpgme_decrypt_flags_t): New enum.
4934         (GPGME_DECRYPT_VERIFY): New const
4935         (GPGME_DECRYPT_UNWRAP): New const
4936         (gpgme_op_decrypt_ext_start): New func.
4937         (gpgme_op_decrypt_ext): New func.
4938         * src/decrypt-verify.c (gpgme_op_decrypt_ext_start): New.
4939         (gpgme_op_decrypt_ext): New.
4940         (decrypt_verify_start): Add arg FLAGS.  Replace call to
4941         engine_op_decrypt_verify by the plain decrypt with the flag set.
4942         (gpgme_op_decrypt_verify_start): Pass the flag.
4943         (gpgme_op_decrypt_verify): Pass the flag.
4944         * src/decrypt.c (decrypt_start): Rename to ...
4945         (_gpgme_decrypt_start): this.  Add arg FLAGS.  Pass FLAGS to
4946         engine_op_decrypt.
4947         (gpgme_op_decrypt_start): Adjust for chnage pass 0 for FLAG.
4948         (gpgme_op_decrypt_start): Ditto.
4949         * src/engine.c (_gpgme_engine_op_decrypt_verify): Remove.
4950         (_gpgme_engine_op_decrypt): Add arg FLAGS.
4951         * src/gpgme.def, src/libgpgme.vers: Add new functions.
4952         * src/engine-backend.h (struct engine_ops): Remove member
4953         'decrypt_verify'.  Add FLAGS to 'decrypt'.  Adjust all initialization.
4954         * src/engine-uiserver.c (uiserver_decrypt): Remove.
4955         (uiserver_decrypt_verify): Remove.
4956         (_uiserver_decrypt): Rename to ...
4957         (uiserver_decrypt): this.  Replace arg VERIFY by new arg FLAGS.
4958         * src/engine-gpg.c (gpg_decrypt): Support GPGME_DECRYPT_UNWRAP.
4959         (gpg_encrypt): Support GPGME_ENCRYPT_WRAP.
4960
4961         * tests/run-decrypt.c (main): New option --unwrap.
4962         * tests/run-encrypt.c (main): New option --wrap.
4963
4964 2017-03-22  Andre Heinecke  <aheinecke@intevation.de>
4965
4966         qt: Add test for Data::toKeys.
4967         + commit 66c334650bd64fdb72c4bd5975e25b8659d320ec
4968         * lang/qt/tests/t-various.cpp (TestVarious::testKeyFromFile): New.
4969
4970         cpp: Wrap keylist_from_data.
4971         + commit 8ddb42ada46f00d8393f6c2df7d6b79a4a5878f0
4972         * lang/cpp/data.h, lang/cpp/data.cpp (GpgME::Data::toKeys): New.
4973
4974         qt: Initialize library first in tests.
4975         + commit 121873b821636052c10d9e0bd885eb9013c52096
4976         * lang/qt/tests/t-support.cpp (QGpgMETest::initTestCase): Initialize
4977         library.
4978
4979 2017-03-22  Justus Winter  <justus@g10code.com>
4980
4981         python: Improve Python detection.
4982         + commit 104635eb503ec764146731888a6975b4329660fd
4983         * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Prefer the generic
4984         'pythonX' over 'pythonX.Y'.  This way we select the users preferred
4985         version for both flavors.  Prefer 'python' over 'python3' but not over
4986         'python2' so that the algorithm still finds a 'python2' even if
4987         'python' is a Python3.
4988
4989 2017-03-21  Werner Koch  <wk@gnupg.org>
4990
4991         core: New API gpgme_op_set_uid_flag.
4992         + commit 421ddd1e6706046c5062417fd69a87e10c9fc0a9
4993         * src/gpgme.h.in (gpgme_op_set_uid_flag_start): New.
4994         (gpgme_op_set_uid_flag_start): New.
4995         * src/gpgme.def, src/libgpgme.vers: Add them.
4996         * src/genkey.c (addrevuid_start): Change arg revoke to a flag.
4997         (gpgme_op_revuid_start): Pass GENKEY_EXTRAFLAG_REVOKE for the fomer
4998         revoke parameter.
4999         (gpgme_op_revuid): Ditto.
5000         (set_uid_flag): New.
5001         (gpgme_op_set_uid_flag_start): New.
5002         (gpgme_op_set_uid_flag): New.
5003         * src/engine.h (GENKEY_EXTRAFLAG_SETPRIMARY): new.
5004         * src/engine-gpg.c (gpg_adduid): Implement that flag.
5005
5006         * tests/run-genkey.c (main): New command --set-primary.
5007
5008 2017-03-21  Justus Winter  <justus@g10code.com>
5009
5010         python: Wrap 'gpgme_op_keylist_from_data_start'.
5011         + commit f3e8d8a4518de2768692e0b392262d0da6d0fd84
5012         * NEWS: Update.
5013         * lang/python/gpg/core.py (Context.keylist): New keyword argument
5014         'source'.  If given, list keys from 'source'.
5015         * lang/python/gpgme.i: Wrap the argument to
5016         'gpgme_op_keylist_from_data_start'.
5017         * lang/python/tests/Makefile.am (py_tests): Add new test.
5018         * lang/python/tests/support.py (EphemeralContext): Do not throw an
5019         error if no agent has been started in the context.
5020         * lang/python/tests/t-keylist-from-data.py: New file.
5021
5022 2017-03-21  Werner Koch  <wk@gnupg.org>
5023
5024         core: Extend gpgme_get_dirinfo to return the gpg-wks-client name.
5025         + commit 55ac5eed9f59081283d34098a9e0ada753d61d59
5026         * src/dirinfo.c (WANT_GPG_WKS_CLIENT_NAME): New const.
5027         (struct dirinfo): New field 'gpg_wks_client_name'.
5028         (get_gpgconf_item): Build it on demand.
5029         (gpgme_get_dirinfo): New value "gpg-wks-client-name" for WHAT.
5030
5031         core: New encryption flag GPGME_ENCRYPT_THROW_KEYIDS.
5032         + commit fab8b1a166fff7265d8a7a7acbbf5f30d26cc93c
5033         * src/gpgme.h.in (GPGME_ENCRYPT_THROW_KEYIDS): New flag.
5034         * src/engine-gpg.c (gpg_encrypt): Implement flag
5035         (gpg_encrypt_sign): Implement flag.
5036
5037         * tests/run-encrypt.c (main): New option --throw-keyids.
5038
5039 2017-03-21  Andre Heinecke  <aheinecke@intevation.de>
5040             Werner Koch  <wk@gnupg.org>
5041
5042         core: New public API gpgme_op_keylist_from_data_start.
5043         + commit 35023f313622fb1b34108dd934e84831c58b81aa
5044         * src/gpgme.h.in: New API gpgme_op_keylist_from_data_start.
5045         * src/libgpgme.vers, src/gpgme.def: Add it.
5046         * src/keylist.c (gpgme_op_keylist_from_data_start): New.
5047         * src/engine-backend.h (engine_ops): Add field 'keylist_data'.  Change
5048         all engines to pass NULL for it.
5049         * src/engine.c (_gpgme_engine_op_keylist_data): New.
5050         * src/engine-gpg.c (gpg_keylist_data): New.
5051         (_gpgme_engine_ops_gpg): Register gpg_keylist_data.
5052
5053         * tests/run-keylist.c (main): New option --from-file.
5054
5055 2017-03-20  Werner Koch  <wk@gnupg.org>
5056
5057         core,cpp: New key flag 'is_de_vs'.
5058         + commit ea9686ec71a2dd2225ce2b6d6d4038821d36205f
5059         * src/gpgme.h.in (_gpgme_subkey): New flag is_de_vs.
5060         * tests/run-keylist.c (main): Print that flag.
5061         * src/keylist.c (parse_pub_field18): New.
5062         (keylist_colon_handler): Parse compliance flags.
5063         * lang/cpp/src/key.cpp (Key::isDeVs): New.
5064         (Subkey::isDeVs): New.
5065
5066         * lang/cpp/src/key.h (class Key): New method isDeVs.
5067         (class Subkey): New method isDeVs.
5068
5069 2017-03-20  Justus Winter  <justus@g10code.com>
5070
5071         tests: Fix distcheck.
5072         + commit 392e51dd1181d035c19918222da65d08fdb2ee6d
5073         * tests/start-stop-agent: Do not create 'gpg-agent.conf' if it does
5074         not exist.
5075
5076         python: Fix version check.
5077         + commit 57e64d019d993fdeb4323def5352f8ecc98c6fd9
5078         * lang/python/tests/support.py (assert_gpg_version): Cope with
5079         non-released versions.
5080
5081         tests: Use 'gpg-agent --allow-loopback-pinentry' if applicable.
5082         + commit 16b202d9999591b71fb8bb49f6db10ef96d4cbe8
5083         * lang/python/tests/Makefile.am (gpg-agent.conf): Do not hard-code the
5084         option.  This breaks gpg-agent from GnuPG 2.0.
5085         * tests/start-stop-agent: Rather, check if the option is supported and
5086         add it to the configuration if it is.
5087
5088         python: Skip tests if GnuPG is too old.
5089         + commit e1cf8bab319ba1dea41ba5d711dbb66ffd8e6fd6
5090         * lang/python/tests/support.py (assert_gpg_version): New function.
5091         * lang/python/tests/t-callbacks.py: Use the new function to skip the
5092         test if GnuPG is too old.
5093         * lang/python/tests/t-edit.py: Likewise.
5094         * lang/python/tests/t-encrypt-sym.py: Likewise.
5095         * lang/python/tests/t-quick-key-creation.py: Likewise.
5096         * lang/python/tests/t-quick-key-manipulation.py: Likewise.
5097         * lang/python/tests/t-quick-key-signing.py: Likewise.
5098
5099         python: Remove superfluous initialization.
5100         + commit 4572e8d2ac1d3b45e75ce71265c99e591fbf0e28
5101         * lang/python/tests/support.py (init_gpgme): Remove.  This is an
5102         remnant from the c tests.  Nowadays, the Python bindings initialize
5103         GPGME automagically.
5104         * lang/python/tests/initial.py: Remove call to 'support.init_gpgme'.
5105         * lang/python/tests/t-callbacks.py: Likewise.
5106         * lang/python/tests/t-decrypt-verify.py: Likewise.
5107         * lang/python/tests/t-decrypt.py: Likewise.
5108         * lang/python/tests/t-edit.py: Likewise.
5109         * lang/python/tests/t-encrypt-large.py: Likewise.
5110         * lang/python/tests/t-encrypt-sign.py: Likewise.
5111         * lang/python/tests/t-encrypt-sym.py: Likewise.
5112         * lang/python/tests/t-encrypt.py: Likewise.
5113         * lang/python/tests/t-export.py: Likewise.
5114         * lang/python/tests/t-file-name.py: Likewise.
5115         * lang/python/tests/t-idiomatic.py: Likewise.
5116         * lang/python/tests/t-import.py: Likewise.
5117         * lang/python/tests/t-keylist.py: Likewise.
5118         * lang/python/tests/t-sig-notation.py: Likewise.
5119         * lang/python/tests/t-sign.py: Likewise.
5120         * lang/python/tests/t-signers.py: Likewise.
5121         * lang/python/tests/t-trustlist.py: Likewise.
5122         * lang/python/tests/t-verify.py: Likewise.
5123         * lang/python/tests/t-wait.py: Likewise.
5124
5125 2017-03-14  Justus Winter  <justus@g10code.com>
5126
5127         python: Make error message more helpful.
5128         + commit 9d6825be092f1590f28b5bab462eeb944d9b800c
5129         * lang/python/tests/run-tests.py: Make the error message shown when we
5130         cannot locate the python module in the build tree more helpful.
5131
5132         python: Make tests more robust.
5133         + commit ac4849953860547b06a167ca9612c4de369d02b6
5134         * lang/python/tests/support.py (TemporaryDirectory): Always use our
5135         own version even if 'tempfile.TemporaryDirectory' is provided, because
5136         we need to use 'shutil.rmtree(..., ignore_errors=True)' to avoid it
5137         tripping over gpg-agent deleting its own sockets.
5138
5139         python: Improve build system integration.
5140         + commit a4201035fdc050f337a6b9f520c8ddbb569e2eb4
5141         * lang/python/Makefile.am: Use 'set -e' when chaining shell commands
5142         together in rules.
5143
5144         build: Improve Python detection.
5145         + commit 6a371663886a7ba6073f385a3ab5f5a03de8e008
5146         * configure.ac: Do not error out too early if we don't find a matching
5147         Python version.  We handle this case later.
5148
5149         build: Tune M4 macros for our needs.
5150         + commit 5189c08af9468cdeb6f16a6ecd0fee53e1e3aa0e
5151         * m4/ax_python_devel.m4: Do not emit 'HAVE_PYTHON'.
5152         * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add newer Python
5153         versions, drop older ones.  Also, sort the list with older versions at
5154         the front, newer and generic versions towards the end.  This makes the
5155         algorithm pick the lowest version that meets the version requirement.
5156
5157         build: Add M4 macros for python.
5158         + commit 067da472f919e78c95a0a01b68e79a8b7dff173b
5159         * m4/python.m4: New file.
5160
5161 2017-03-13  Andre Heinecke  <aheinecke@intevation.de>
5162
5163         qt: Add test for DN parser.
5164         + commit 43aa3eed15dcc4f848915ceabeff35c29c1c57e4
5165         * qt/tests/t-various.cpp (testDN): New.
5166
5167         qt: Use gpgrt_asprintf instead of qstrdup.
5168         + commit 9d5048d47446450a34cae4f27eb81c02ea5d4afc
5169         * lang/qt/src/dn.cpp (parse_dn_part): Use gpgrt_asprintf instead
5170         of qstrdup.
5171
5172 2017-03-09  Werner Koch  <wk@gnupg.org>
5173
5174         core: Fix status error return for gpgsm.
5175         + commit d2240a2a1819874929bdab820bcbd3bee7f94407
5176         * src/engine-gpgsm.c (gpgsm_assuan_simple_command): Make sure CB_ERR
5177         is returned.
5178         * src/import.c (parse_import_res): Do not return an error for the last
5179         field.
5180         (import_status_handler): Actually return the error from
5181         parse_import_res.
5182
5183 2017-03-02  Justus Winter  <justus@g10code.com>
5184
5185         python: Print path of the Python module used during tests.
5186         + commit 41398779abbcb1ec2d7491e141469a752fc706ff
5187         * lang/python/tests/initial.py: Print path of the Python module used
5188         during tests.  Useful to detect if by any mistake the wrong module is
5189         picked up.
5190
5191 2017-03-02  Werner Koch  <wk@gnupg.org>
5192
5193         core: Fix minor code style thing.
5194         + commit ef035f079fb067f207e5477d5ed6c5a68fb41f59
5195         * src/engine-gpg.c (gpg_add_algo_usage_expire): Use double parenthesis
5196         for bit tests.
5197
5198 2017-03-02  Andre Heinecke  <aheinecke@intevation.de>
5199
5200         cpp: Add subkey keygrip to API.
5201         + commit 8071a6b2ca33c2a46ed1d50ae7283241daaafcd3
5202         * lang/cpp/src/key.cpp (Subkey::keyGrip): New.
5203         * lang/cpp/src/key.h: Update accordingly.
5204
5205 2017-03-01  Andre Heinecke  <aheinecke@intevation.de>
5206
5207         cpp: Add interactor to generate keys on smartcard.
5208         + commit d63258066d008de113ed1170f1b0e787a5bdaba1
5209         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
5210         Handle new states.
5211         * lang/cpp/src/gpggencardkeyinteractor.cpp,
5212         lang/cpp/src/gpggencardkeyinteractor.h: New.
5213         * lang/cpp/src/Makefile.am: Update accordingly.
5214
5215         qt: Allow creation of default keys without name.
5216         + commit fbafb5474d8898ba1b267f4b4dfbefe39f04e72f
5217         * lang/qt/src/defaultkeygenerationjob.cpp
5218         (DefaultKeyGenerationJob::start): Handle empty name and email.
5219
5220 2017-02-26  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
5221
5222         doc: Correct documentation for recp arg of gpgme_op_encrypt_sign_start.
5223         + commit 5b49095b89b07591c69827df3973ffabfb3e97b8
5224         * doc/gpgme.texi (gpgme_op_encrypt_sign_start): recp is an array of
5225         gpgme_key_t, not a single element.
5226
5227 2017-02-20  Justus Winter  <justus@g10code.com>
5228
5229         python: Fix test.
5230         + commit a7c6353edab57b67180aa127ec77d9353c2366fb
5231         * lang/python/tests/t-quick-key-manipulation.py: Modify the
5232         configuration file in the ephemeral home directory, not the one used
5233         by all the tests.
5234
5235 2017-02-17  Justus Winter  <justus@g10code.com>
5236
5237         python: Support manipulating the TOFU policy.
5238         + commit 15fbac9e72a4d1bff9a3b9e9822f9175b09fbcd5
5239         * NEWS: Update.
5240         * doc/gpgme.texi: Fix typos.
5241         * lang/python/gpg/constants/__init__.py: Import new files.
5242         * lang/python/gpg/constants/tofu/__init__.py: New file.
5243         * lang/python/gpg/constants/tofu/policy.py: New file.
5244         * lang/python/gpg/core.py (Context.key_tofu_policy): New function.
5245         * lang/python/gpgme.i: Nice reprs for gpgme_tofu_info_t.
5246         * lang/python/setup.py.in: Install new package.
5247         * lang/python/tests/t-quick-key-manipulation.py: Extend test.
5248
5249         python: Support quick key signing.
5250         + commit 48634e651fcd02431c0518d42ada1f3b402feb2c
5251         * NEWS: Update.
5252         * doc/gpgme.texi (gpgme_op_keysign): Fix the description of the
5253         'expire' argument.
5254         * lang/python/gpg/constants/__init__.py: Import new file.
5255         * lang/python/gpg/constants/keysign.py: New file.
5256         * lang/python/gpg/core.py (Context.key_sign): New function.
5257         * lang/python/tests/Makefile.am (py_tests): Add new test.
5258         * lang/python/tests/t-quick-key-signing.py: New test.
5259
5260         python: Fix teardown of ephemeral contexts.
5261         + commit de8494b16bc50c60a8438f2cae1f8c88e8949f7a
5262         * lang/python/tests/support.py (EphemeralContext): New function.
5263         * lang/python/tests/t-quick-key-creation.py: Use the new function to
5264         manage ephemeral contexts.
5265         * lang/python/tests/t-quick-key-manipulation.py: Likewise.
5266         * lang/python/tests/t-quick-subkey-creation.py: Likewise.
5267
5268         python: Fix using strings as commands in the assuan protocol.
5269         + commit 9350168a1eed3f055040d7cc8a9bf4cdf745b23a
5270         * lang/python/gpg/core.py (Context.assuan_transact): Fix testing
5271         whether the command is a string on Python2.
5272         * lang/python/tests/t-protocol-assuan.py: Improve the test to detect
5273         this problem.
5274
5275 2017-02-16  Justus Winter  <justus@g10code.com>
5276
5277         python: Support adding and revoking UIDs.
5278         + commit 7641b7b5f2c9d5b38c60cd9326bcb4810c37dae5
5279         * NEWS: Update.
5280         * lang/python/gpg/core.py (Context.key_add_uid): New function.
5281         (Context.key_revoke_uid): Likewise.
5282         * lang/python/tests/Makefile.am (XTESTS): Add new test.
5283         * lang/python/tests/t-quick-key-manipulation.py: New file.
5284
5285         python: Support quick subkey creation.
5286         + commit 13bace25e3d8422f93fd24919994be36042fd220
5287         * NEWS: Update.
5288         * lang/python/gpg/core.py (Context.create_subkey): New function.
5289         * lang/python/tests/Makefile.am (XTESTS): Add new test.
5290         * lang/python/tests/t-quick-subkey-creation.py: New file.
5291
5292         python: Support quick key creation.
5293         + commit 476b97822b169c30cc246c1de2ff94cf89084706
5294         * NEWS: Update.
5295         * lang/python/gpg/constants/__init__.py: Import new file.
5296         * lang/python/gpg/constants/create.py: New file.
5297         * lang/python/gpg/core.py (Context.create_key): New function.
5298         * lang/python/tests/Makefile.am (XTESTS): Add new test.
5299         * lang/python/tests/support.py (TemporaryDirectory): New class.
5300         * lang/python/tests/t-quick-key-creation.py: New file.
5301
5302         python: Fix passphrase callback wrapping.
5303         + commit 3bdce4aa3ddd4a3f55b24678faf978d61daa8909
5304         * lang/python/helpers.c (pyPassphraseCb): Cope with 'passphrase_info'
5305         being NULL.
5306
5307         python: Fix error handling.
5308         + commit 048c5f74b61d5e4fa7617ce7c9111c6754bd4409
5309         * lang/python/gpgme.i (typemap gpgme_key_t[]): Set an error if a
5310         non-key element is discovered.
5311
5312 2017-02-15  Justus Winter  <justus@g10code.com>
5313
5314         core: Fix expiration time handling when creating keys.
5315         + commit de708e5934cda380dbc3ae51f587c09041de7562
5316         * NEWS: Update.
5317         * doc/gpgme.texi (gpgme_op_createkey): Clarify the meaning of the
5318         'expire' parameter.
5319         (GPGME_CREATE_NOEXPIRE): Document new flag.
5320         (gpgme_op_createsubkey): Clarify the meaning of the 'expire'
5321         parameter.
5322         * src/engine-gpg.c (gpg_add_algo_usage_expire): Fix handling of the
5323         expiration time.
5324         * src/gpgme.h.in (GPGME_CREATE_NOEXPIRE): New macro.
5325
5326         python: Fix build system integration.
5327         + commit 27544d0a74267ab6057dc816ea3311bc9149a200
5328         * lang/python/Makefile.am (copystamp): Also copy the setup script, and
5329         link the header files.
5330         (all-local): Use local setup script.
5331         (sdist): Fix Python source distribution creation.
5332         (CLEANFILES): Remove now obsolete files.
5333         (install-exec-local): Use local setup script.
5334         * lang/python/setup.py.in: Adjust relative paths to in-tree files.
5335
5336         python: Update lists of functions returning gpgme_error_t.
5337         + commit 25f0435a0022a70af77660d72d33f17bec2d4e51
5338         * lang/python/gpg/core.py (Context._errorcheck): Add instructions how
5339         to update the list.  Update list.
5340         (Data._errorcheck): Likewise.
5341         (Context.set_engine_info): Simplify.
5342
5343         core: Fix error types.
5344         + commit 6df6e01ed5a581765d245bf7303cda4497d0eb22
5345         * NEWS: Update.
5346         * src/data.c (gpgme_data_set_flag): Return a 'gpgme_error_t'.
5347         * src/error.c (gpgme_strerror_r): Fix type of first argument.
5348         * src/gpgme.h.in (gpgme_strerror_r): Adapt.
5349         (gpgme_data_set_flag): Likewise.
5350
5351 2017-02-14  Justus Winter  <justus@g10code.com>
5352
5353         python: Wrap utility functions.
5354         + commit 92adc9bbf640eb5d9177d3ba0189e0f6cee4e995
5355         * NEWS: Update.
5356         * lang/python/gpg/core.py (pubkey_algo_string): New function.
5357         (pubkey_algo_name): Add docstring.
5358         (hash_algo_name): Likewise.
5359         (get_protocol_name): Likewise.
5360         (addrspec_from_uid): New function.
5361         * lang/python/gpgme.i (gpgme_pubkey_algo_string): Result must be
5362         freed.
5363         (gpgme_addrspec_from_uid): Likewise.
5364
5365         python: Use the correct function to free buffers.
5366         + commit 9fc9533c2835ec53c4fd4f822b09e9fec14626d0
5367         * lang/python/gpgme.i (char *): Free using 'gpgme_free'.
5368
5369         python: Add keylist mode parameter.
5370         + commit fdc4e33dc3f6c84fe9d7bf9795c603ae3cf5f28d
5371         * NEWS: Update.
5372         * lang/python/gpg/core.py (Context.keylist): Add 'mode' parameter.
5373
5374         python: Nicer repr for user ids.
5375         + commit e17ab84129045512cf60c221ee43aa877507662f
5376         * lang/python/gpgme.i (_gpgme_user_id): Provide a nicer repr() for
5377         user ids.
5378
5379         python: Add convenience functions for the home directory.
5380         + commit 99b7f4f34dd595579181a696ae976a678fe00d49
5381         * NEWS: Update.
5382         * lang/python/gpg/core.py (Context.__init__): Add 'home_dir' argument.
5383         (__repr__): Include 'home_dir'.
5384         (Context.home_dir): New property.
5385
5386         qt: Make sure to remove the tofu.db on clean.
5387         + commit 30a603580e0f196c721fa4bd44d24077d9bc06c3
5388         * lang/qt/tests/Makefile.am (CLEANFILES): Add 'tofu.db'.
5389
5390 2017-02-14  Tobias Mueller  <muelli@cryptobitch.de>
5391
5392         python: Extend SWIG gpgme_{sub,}key with a __repr__ method.
5393         + commit 01d5c17587578c729bbbb60f8a65635975e35592
5394         * lang/python/gpgme.i: Added a genericrepr macro and use it for
5395         gpgme_key, gpgme_subkey, and gpgme_key_sig.
5396
5397         python: Remove the -builtin flag for SWIG.
5398         + commit aa49be1ab80c200ab6b62d33bf5d0f5aa334fc56
5399         * lang/python/setup.py.in: Call SWIG without the builtin flag.
5400
5401         python: Call SWIG_NewPointerObj rather than SWIG_Python_NewPointerObj.
5402         + commit d35651917097ae2eee7d52396d53d010bc34df19
5403         * lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Provide a "self"
5404         variable for SWIG_NewPointerObj and call SWIG_NewPointerObj rather than
5405         SWIG_Python_NewPointerObj.
5406
5407         python: Conditionally provide py3 argument to SWIG.
5408         + commit d184dbbba8987d9f387feb25791ed891e108dabc
5409         * lang/python/setup.py.in: Only call with -py3 when we run under python3
5410         or higher.
5411
5412 2017-02-13  Justus Winter  <justus@g10code.com>
5413
5414         python: Use one copy of the source tree per Python version.
5415         + commit fe65a26ab584bd70fad45c7c4d44330e30a748a4
5416         * lang/python/Makefile.am (copystamp): Create one copy per Python
5417         version.
5418         (all-local): Adapt.
5419         (clean-local): Likewise.
5420         (install-exec-local): Likewise.
5421         * lang/python/tests/run-tests.py: Likewise.
5422
5423         build: Use macOS' compatibility macros to enable all features.
5424         + commit 60273e8b2c11d42215a5707bc55e3e0d8f350e07
5425         * configure.ac: On macOS, use the compatibility macros to expose every
5426         feature of the libc.  This is the equivalent of _GNU_SOURCE on GNU
5427         libc.
5428
5429         Revert "Disable fd-passing for Apple."
5430         + commit f8db658f8b4c3c7941d0029273fb23fbe1ba74ad
5431         The actual bug has been located, so this can be reverted.
5432
5433         This reverts commit ef5b4ae37d13142e89a051908dc080cda3d24baa.
5434
5435 2017-02-13  Igor Gnatenko  <ignatenkobrain@fedoraproject.org>
5436
5437         qt: Add missing #include <functional>
5438         + commit 60064c665ec98a2a994fc6c8ad701e60b963ce7e
5439         * lang/qt/src/qgpgmenewcryptoconfig.cpp,
5440         lang/qt/src/threadedjobmixin.h: Include functional.
5441
5442 2017-02-07  Andre Heinecke  <aheinecke@intevation.de>
5443
5444         qt: Don't rely on implicit include in t-verify.
5445         + commit 903bf16a416b1bf608b1e647937c9b06864b0141
5446         * lang/qt/tests/t-various.cpp: Include QTemporaryDir
5447
5448 2017-02-06  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
5449
5450         doc: Document that gpgme_op_genkey() parms parameter is not XML.
5451         + commit ad22bee5387b1e9a40e8c822a081db3228bb9def
5452         * doc/gpgme.texi (GnupgKeyParms): document that input format is not
5453         true XML.
5454
5455 2017-02-03  Werner Koch  <wk@gnupg.org>
5456
5457         core: Optimize fork/exec for *BSD and Solaris.
5458         + commit 51bd69f216a9e2930eeba4b5f6c20e952a381720
5459         * configure.ac (closefrom): Add to ac_check_funcs.
5460         * src/posix-io.c (_gpgme_io_spawn): Use closefrom.
5461
5462         core: Fix possible deadlock due to get_max_fds.
5463         + commit 93a59070c699d569d1eac7ba22355fe3f5d10882
5464         * src/posix-io.c (get_max_fds): Do not use the Linux optimization.
5465
5466         core: Minor cleanup of commit 195c735.
5467         + commit afc308598d1ddaf20d54b4eab30b959066a4e5e6
5468         * src/verify.c (parse_tofu_user): For cleanness use gpg_error ...
5469         (_gpgme_verify_status_handler): ... and gpg_err_code.
5470
5471 2017-02-02  Andre Heinecke  <aheinecke@intevation.de>
5472
5473         qt: Add test for tofu conflict.
5474         + commit 43160a39f27f6c3507447620666c85af00b3499c
5475         * lang/qt/tests/t-tofuinfo.cpp (TofuInfoTest::testTofuConflict): New.
5476
5477         core: Handle multiple TOFU_USER lines in verify.
5478         + commit 195c73589232160f45d00f4901c9bb2b0162f0e5
5479         * src/verify.c (op_data_t): Add conflict_user_seen.
5480         (parse_tofu_user): Return ERR_DUP_VALUE for mutltiple TOFU_USERS.
5481         (_gpgme_verify_status_handler): Handle ERR_DUP_VALUE from
5482         parse_tofu_user to ignore the next TOFU_STATS.
5483
5484 2017-02-02  Werner Koch  <wk@gnupg.org>
5485
5486         core: Replace all calls to *sprintf by gpgrt_*sprintf.
5487         + commit 15050ce5fce4ed815503db7c029abb38d08970d6
5488         * configure.ac (vasprintf): Remove check.
5489         * src/vasprintf.c: Remove file.
5490         * src/util.h (vasprintf, asprintf): Remove prototypes.  Replace all
5491         calls to vasprintf and asprintf by gpgrt_vasprintf or gpgrt_asprintf.
5492         Also take care to use gpgrt_free on the returned value.
5493         * src/w32-util.c (_gpgme_get_gpgconf_path): Replace a gpgrt_asprintf
5494         by _gpgme_strconcat.
5495         (snprintf): New macro to use gpgrt_snprintf instead of the system's
5496         standard snprintf.
5497
5498         core: Remove unused check for funopen/fopencookie.
5499         + commit 563420a88f8a4f561a2faea4d2b4a1c58b375fd8
5500         * configure.ac (funopen): Remove check.
5501         * src/funopen.c: Remove file.
5502
5503         core: Un-deprecate gpgme_data_rewind.
5504         + commit d19bea52afe6efb66a46af6aa4d09928c5d05ee5
5505         * src/gpgme.h.in (gpgme_data_rewind): Un-deprecate.
5506         * src/data-compat.c (gpgme_data_rewind): Move to ...
5507         * src/data.c (gpgme_data_rewind): here.
5508
5509         core: Move all deprecated stuff to the end of gpgme.h.
5510         + commit 9b7d81998b734fabeb4fbc697f08fc7795eaa90a
5511
5512
5513 2017-02-01  Andre Heinecke  <aheinecke@intevation.de>
5514
5515         core: Cleanup gpgme_key_unref frees.
5516         + commit 8ede86795a1d419c01b4910ec2fd1fb18b629452
5517         * src/key.c (gpgme_key_unref): Nowadays we assume free(NULL) is ok.
5518
5519         core: Fix leakage of address for mail only uids.
5520         + commit b5075030bec9b21bf4e515bc1686df3fa43eced2
5521         * src/key.c (gpgme_key_unref): Always free address if set.
5522         (_gpgme_key_append_name): Remove memory optimization for address.
5523
5524         core: Improve mailbox only uid handling.
5525         + commit a28d31fdb623f2ee30e8094d09f1a0d1ae446a9b
5526         * src/key.c (_gpgme_key_append_name): Set email and remove name
5527         for uid only keys.
5528
5529 2017-01-31  Justus Winter  <justus@g10code.com>
5530
5531         qt: Increase timeout when waiting for signals.
5532         + commit ba594d85e35e63301755977234d3af88a167a215
5533         * lang/qt/tests/t-support.h (QSIGNALSPY_TIMEOUT): New macro.
5534         * lang/qt/tests/t-encrypt.cpp: Use the new macro as timeout when
5535         waiting for signals.
5536         * lang/qt/tests/t-keylist.cpp: Likewise.
5537         * lang/qt/tests/t-keylocate.cpp: Likewise.
5538         * lang/qt/tests/t-ownertrust.cpp: Likewise.
5539         * lang/qt/tests/t-wkspublish.cpp: Likewise.
5540
5541 2017-01-31  Werner Koch  <wk@gnupg.org>
5542
5543         core: Add new context flag "redraw".
5544         + commit 752d3597ef02a95efd693373132bf1e246f0edb0
5545         * src/context.h (struct gpgme_context): New field 'redraw_suggested'.
5546         * src/op-support.c (_gpgme_op_reset): Clear REDRAW_SUGGESTED.
5547         * src/progress.c (_gpgme_progress_status_handler): Set REDRAW_SUGGESTED.
5548         * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "redraw".
5549         * tests/run-sign.c (main): Use it.
5550
5551 2017-01-30  Andre Heinecke  <aheinecke@intevation.de>
5552
5553         tests: Reduce iterations / threads.
5554         + commit 7bd6ab4a91d43d7cbf5d347c0c12e0e4f9f7e3bf
5555         * tests/gpg/t-gpgconf.c (main): Reduce iterations to 10.
5556         * tests/gpg/t-thread-keylist-verify.c,
5557         tests/gpg/t-thread-keylist.c (THREAD_COUNT): Reduce to 10.
5558
5559 2017-01-26  Andre Heinecke  <aheinecke@intevation.de>
5560
5561         python: Ensure quick-random is used if gpg is gpg2.
5562         + commit f3ca2c9ce9fd4a03e293065f10b92589a7e642d6
5563         * lang/python/tests/Makefile.am (gpg.conf): Configure
5564         agent-program accordingly.
5565
5566 2017-01-25  Tobias Mueller  <muelli@cryptobitch.de>
5567
5568         python: default op_keylist_start parameters.
5569         + commit 9291ebaa4151a1f6c8c0601095ec45809b963383
5570         * lang/python/gpgme.i: Added gpgme_op_keylist_start with defaults
5571         * lang/python/tests/t-keylist.py: Added tests for default parameters
5572
5573 2017-01-25  Andre Heinecke  <aheinecke@intevation.de>
5574
5575         tests: Use --debug-quick-random for tests.
5576         + commit a98951a30a6ae603ffac4ec8c5168aa6d1019933
5577         * tests/start-stop-agent: Don't autostart agent on --stop and
5578         running check. Use --debug-quick-random when starting.
5579
5580 2017-01-23  Justus Winter  <justus@g10code.com>
5581
5582         w32: Fix closing file descriptors.
5583         + commit 6f02133bb07726afa6950e5b4685e75621276e60
5584         * src/w32-io.c (writer): Only stop once the buffer is drained.
5585         (destroy_writer): Wait for the writers buffer to be drained.  This
5586         aligns '_gpgme_io_close's behavior with close(2) and fclose(3).
5587
5588 2017-01-17  Andre Heinecke  <aheinecke@intevation.de>
5589
5590         tests: Add safeguards against nullptr deref.
5591         + commit ca69df8c8d3f044340aee2a118cc20d33cd600a1
5592         * t-gpgconf.c (main): Test some values before dereferencing them.
5593
5594 2017-01-16  Andre Heinecke  <aheinecke@intevation.de>
5595
5596         qt: Use QVERIFY instead of Q_ASSERT in conf test.
5597         + commit abfd241d1a1ae8e30e18b7c5e0658b8c54d89544
5598         * lang/qt/tests/t-config.cpp: Use QVERIFY instead of Q_ASSERT.
5599
5600         qt: Add test for CryptoConfig.
5601         + commit 8aba08d1d0871f439fb7193adc4a2f43a81ee216
5602         * lang/qt/tests/t-config.cpp: New.
5603         * lang/qt/tests/Makefile.am: Update accordingly.
5604
5605 2017-01-16  Justus Winter  <justus@g10code.com>
5606
5607         tests: Fix distcheck.
5608         + commit 92543da94cbf8e807b1b33070d273f995cdd5c62
5609         * tests/gpg/Makefile.am (CLEANFILES): Remove gpgconf backups.
5610
5611         Fix changing options with gpgconf.
5612         + commit 0e242278dfaa64ce31a45b72f5fa0806a3dba898
5613         * src/engine-gpgconf.c (gpgconf_write): Connect a pipe to the child's
5614         stderr, and wait for it to be closed as an indication that gpgconf has
5615         exited.  Also improve error handling.
5616
5617 2017-01-12  Justus Winter  <justus@g10code.com>
5618
5619         tests: Improve the gpgconf test.
5620         + commit 186dcd3494eda7383de57a530fd15776410531a5
5621         * tests/gpg/t-gpgconf.c: Include support functions.
5622         (fail_if_err): Remove macro.
5623         (init_gpgme): Remove function.
5624         (lookup): New function.
5625         (main): Update some values and verify that the changes are applied.
5626         * tests/gpg/t-support.h (test): New assert-like macro.
5627
5628 2017-01-12  Andre Heinecke  <aheinecke@intevation.de>
5629
5630         qt: Add support for stringValueList in CryptoConf.
5631         + commit 9640dc58e498966b482dcded6990cf4b47c556ac
5632         * lang/qt/src/Makefile.am (qgpgme_sources): Add cryptoconfig.cpp
5633         * lang/qt/src/cryptoconfig.cpp: New.
5634         * lang/qt/src/cryptoconfig.h (CryptoConfigEntry::stringValueList):
5635         New.
5636         * lang/qt/src/qgpgmenewcryptoconfig.cpp
5637         (QGpgMENewCryptoConfigEntry::stringValueList): New.
5638         * lang/qt/src/qgpgmenewcryptoconfig.h: Update accordingly.
5639
5640         qt: Don't use qstrdup in test passphrase cb.
5641         + commit a09ed3f26a1fab54079c37c49df5c440cc792f78
5642         * lang/qt/tests/t-support.h (TestPassphraseProvider::getPassphrase):
5643         Use gpgrt_asprintf instead of strdup.
5644
5645 2017-01-11  Andre Heinecke  <aheinecke@intevation.de>
5646
5647         qt: Clean up test dirs on failure.
5648         + commit 56926c9b5012e8135541a933af1d69c5a81f02b3
5649         * t-encrypt.cpp,
5650         t-keylist.cpp,
5651         t-keylocate.cpp,
5652         t-ownertrust.cpp,
5653         t-tofuinfo.cpp,
5654         t-various.cpp,
5655         t-verify.cpp,
5656         t-wkspublish.cpp: Use QVERIFY instead of Q_ASSERT
5657
5658         qt: Add test for uid functions.
5659         + commit 9e643ab67168dfbd189ccc0bfed8fb59253ee79c
5660         * lang/qt/tests/t-various.cpp: New.
5661         * lang/qt/tests/Makefile.am: Update accordingly.
5662
5663         cpp: Add revuid and adduid support.
5664         + commit e416f9961837039f259558edf41fccbc181ad128
5665         * lang/cpp/src/context.cpp
5666         (Context::revUid, Context::startRevUid),
5667         (Context::addUid, Context::startAddUid): New.
5668         * lang/cpp/src/context.h: Declare new functions.
5669         * lang/cpp/src/key.cpp (Key::UserID::revoke)
5670         (Key::addUid): Idomatic helpers.
5671         lang/cpp/src/key.h: Declare new functions.
5672         * NEWS: Update accordingly.
5673
5674         Fix Qgpgme build for macos.
5675         + commit efe58fe011f195d98adb4f03b1e1068a26ba287b
5676         * lang/qt/src/dn.cpp: Include string.h
5677         (parse_dn_part): Use qstrdup.
5678         * lang/qt/tests/t-support.h (getPassphrase): Use qstrdup.
5679
5680         Fix cmake configuration files for MacOS.
5681         + commit 2e661b9e1a9b50656a5c9646d7444a98477010c1
5682         * configure.ac: Set HAVE_MACOS_SYSTEM conditional.
5683         * lang/qt/src/Makefile.am,
5684         lang/cpp/src/Makefile.am,
5685         lang/qt/src/QGpgmeConfig.cmake.in.in,
5686         lang/cpp/src/GpgmeConfig.cmake.in.in: Use libsuffix again to
5687         distinguish between macos .dylib
5688
5689 2017-01-03  Justus Winter  <justus@g10code.com>
5690
5691         python: Improve compatibility with Scheme tests.
5692         + commit b14419f68b3aaa90025e0e97151de7c3da7806fb
5693         * lang/python/tests/run-tests.py: Add stub --parallel option.
5694
5695         python: Add a switch '--quiet' to the test runner.
5696         + commit d0e91d28f63b74e53673902e675be8a54b6b90d3
5697         * lang/python/tests/run-tests.py: Add and honor a switch '--quiet'.
5698         This way we can use this script to run Python tests one by one without
5699         the noise, and the script will setup the necessary environment for us.
5700
5701 2017-01-02  Andre Heinecke  <aheinecke@intevation.de>
5702
5703         qt: Update config sync doc / comment.
5704         + commit ececfd5de81f1851943be7b284b672d5b02aceb4
5705         * lang/qt/src/cryptoconfig.h (CryptoConfig::sync): Document
5706         that runtime option is always set.
5707         * lang/qt/Src/qgpgmenewcryptoconfig.cpp
5708         (QGpgMENewCryptoConfigComponent::sync): Remove outdated comment
5709         and warn on error.
5710
5711         core: Always use runtime for gpgconf changes.
5712         + commit 7103315829847163f1c6f52cad25d1ddb33358f0
5713         * src/engine-gpgconf.c (gpgconf_write): Add --runtime.
5714         * src/gpgme.h.in (gpgme_conf_opt_change): Document this
5715         behavior.
5716
5717 2017-01-01  Ben Kibbey  <bjk@luxsci.net>
5718
5719         Fix gpg_addkey() to work with GPGME_CREATE_NOPASSWD as well.
5720         + commit a4b9f1a2b404fd8627d5ac567617510abd55d980
5721         * src/engine-gpg.c (gpg_addkey): Pass --batch to gpg when
5722         GPGME_CREATE_NOPASSWD is set to fix pinentry without loopback mode.
5723
5724 2016-12-27  Ben Kibbey  <bjk@luxsci.net>
5725
5726         Fix GPGME_CREATE_NOPASSWD without pinentry loopback.
5727         + commit d83b8f0dc84d6cf7fe2e091bd1b103ceedfa3d6c
5728         * src/engine-gpg.c(gpg_createkey): Pass --batch to gpg when
5729         GPGME_CREATE_NOPASSWD is set.
5730
5731 2016-12-19  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
5732
5733         Qt: Make sure extended grep is used with '|'.
5734         + commit 211844f049d714cd4d5aab96347705cb0c209c5d
5735         * m4/qt.m4: Use grep -E when using the alternation character.
5736
5737 2016-12-16  Andre Heinecke  <aheinecke@intevation.de>
5738
5739         cpp: Ensure that hasSecret is correct after update.
5740         + commit da5343a9d2c8c0ca6431162aac4bd5c73b4ae6dd
5741         * lang/cpp/src/key.cpp (Key::update): Check for
5742         a secret key first before listing public keys.
5743
5744 2016-12-15  Andre Heinecke  <aheinecke@intevation.de>
5745
5746         cpp: Fix addrSpec for keys without email.
5747         + commit 85e05537e15346896a271d3f62bead9dd7e3f180
5748         * lang/cpp/src/key.cpp (UserID::addrSpec): Use uid->address instead
5749         of normalizing again.
5750         (&operator<<(std::ostream &, const UserID &): Print it.
5751
5752         cpp: Fix update of partial key in verifyresult.
5753         + commit 5673f3e54af535155893290a685b3afb44c7f58d
5754         * lang/cpp/src/verificationresult.cpp
5755         (Signature::key(bool,bool)): Don't update the returned copy
5756         but the actual key of the signature.
5757
5758 2016-12-07  Andre Heinecke  <aheinecke@intevation.de>
5759
5760         Clarify what "checking on bit" means.
5761         + commit 7880335273382f05cbbe38aa965a566c4127ba6a
5762         * doc/gpgme.texi (gpgme_sigsum_t summary): Clarify what "you
5763         can check one bit means"
5764
5765 2016-12-05  Tobias Mueller  <muelli@cryptobitch.de>
5766
5767         python: Try to be more helpful when given a string to encrypt().
5768         + commit 05896c210f7fa9ce7b97784a75e49dc4489e9252
5769         * lang/python/helpers.c (_gpg_obj2gpgme_data_t): Extended error
5770         message.
5771         * lang/python/tests/t-encrypt.py: Test for "encode" in error message.
5772
5773         python: Define a macro for wrapping fragile result objects.
5774         + commit fb7f4cb973abc9f5eb05eb240607be35c1be986c
5775         * lang/python/gpgme.i (wrapresult): New Macro.
5776
5777 2016-12-01  Tobias Mueller  <muelli@cryptobitch.de>
5778
5779         python: Check "buffer" when writing to sys.stdout for python2 compat.
5780         + commit ae21d2705fc46725e1f9af1651b68d16155d1501
5781         * lang/python/tests/support.py (print_data): Add check for buffer.
5782
5783         python: Make Context have a repr method.
5784         + commit 154389f2a5e4c13081cf0624222aad29ee480b56
5785         * lang/python/gpg/core.py (Context.__repr__): New function.
5786
5787         python: Make Results have a nicer __repr__.
5788         + commit db2f6c1ca3d2ef228f4ca6653d594537622c8588
5789         * lang/python/gpg/results.py (Result.__str__): Renamed to '__repr__'
5790         ...
5791         * lang/python/gpg/results.py (Result.__repr__): ... and added fields.
5792
5793 2016-11-25  Justus Winter  <justus@g10code.com>
5794
5795         python: Fix removing the TOFU database.
5796         + commit fd4d476214ae06e33f4a6dac534d3deca5cc6cd3
5797         * lang/python/Makefile.am (CLEANFILES): Move 'tofu.db'...
5798         * lang/python/tests/Makefile.am (CLEANFILES): ... here.
5799
5800         tests: Remove tofu.db.
5801         + commit 9b22f82afc5518961e4bea1fc516b79800e379a2
5802         * lang/python/Makefile.am (CLEANFILES): Add 'tofu.db'.
5803         * tests/gpg/Makefile.am (CLEANFILES): Likewise.
5804
5805 2016-11-17  Heiko Becker  <heirecka@exherbo.org>
5806
5807         Remove a forgotten instance of @libsuffix@
5808         + commit 572c1aac107125ce62230251713349348373db5a
5809         * lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove a forgotten
5810         instance of @libsuffix@.
5811
5812 2016-11-16  Werner Koch  <wk@gnupg.org>
5813
5814         Release 1.8.0.
5815         + commit f06220b691e9711afdabaa19886244ae7724eed5
5816         * configure.ac: Set version to 1.8.0.  Set LT version C28/A17/RO.
5817         Set CPP LT version to C9/A3/R0.  Set Qt LT version to C8/A1/R0.
5818
5819         core: Do not leak the override session key to ps(1).
5820         + commit 9fc92a15bd0a30437a39d0eb28b6f40edc22e6e8
5821         * src/engine-gpg.c (struct engine_gpg): New field
5822         override_session_key.
5823         (gpg_release): Free that field.
5824         (gpg_decrypt): With gnupg 2.1.16 use --override-session-key-fd.
5825
5826         * tests/run-decrypt.c (main): Fix setting over the override key.
5827
5828 2016-11-16  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
5829
5830         doc,tests: Require use of ctx_flag before use of session_key.
5831         + commit 573064742145aa5f9bf04baa88af918c0c4d5e12
5832         * doc/gpgme.texi: Document requirements of verifying that it is OK to
5833         use session_key.
5834         * tests/run-decrypt.c: Ensure that we fail if we're unable to access
5835         the session key, so that we do not violate the guidance above.
5836
5837
5838         Changed the description
5839
5840          -@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns
5841          -@code{GPG_ERR_NO_ERROR} or @code{gpgme_get_ctx_flag (ctx,
5842          -"export-session-key")} returns @code{"1"}.
5843          +@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns success
5844          +or @code{gpgme_get_ctx_flag (ctx, "export-session-key")} returns true
5845          +(non-empty string).
5846
5847         to get gpgme_get_ctx_flag for boolean values in sync with its own
5848         description.
5849
5850         Note that I don't agree with the above suggestion but it does not
5851         really harm to have it in the man page.
5852
5853 2016-11-15  Andre Heinecke  <aheinecke@intevation.de>
5854
5855         qt, cpp: Add cmake config files for w32.
5856         + commit b2c07bd47bd608afa5cc819b60a7b5bb8c9dd96a
5857         * lang/cpp/src/GpgmeppConfig-w32.cmake.in.in
5858         lang/qt/src/QGpgmeConfig-w32.cmake.in.in: New.
5859         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
5860         lang/qt/src/QGpgmeConfig.cmake.in.in: Remove libsuffix handling.
5861         * lang/cpp/src/Makefile.am,
5862         lang/qt/src/Makefile.am: Create / install w32 config files.
5863         * configure.ac: Configure them.
5864
5865         qt: Use new style connect in th..mixin.
5866         + commit 45abe6d142e314ba7099ad80b6365af171b06fec
5867         * lang/qt/src/threadedjobmixin.h
5868         (ThreadedJobMixin::lateInitialization): Use new style connect.
5869
5870 2016-11-15  Werner Koch  <wk@gnupg.org>
5871
5872         core: Implement context flag "override-session-key".
5873         + commit 7659d42468b604db2936b021425683f407eba4a7
5874         * src/gpgme.c (gpgme_set_ctx_flag): Add flags "export-session-key" and
5875         "override-session-key".
5876         (gpgme_get_ctx_flag): Ditto.
5877         (gpgme_set_export_session_keys): Remove.
5878         (gpgme_get_export_session_keys): Remove.
5879         * src/gpgme.def, src/libgpgme.vers: Remove them.
5880         * src/context.h (struct gpgme_context): Add field
5881         override_session_key.
5882         * src/decrypt-verify.c (decrypt_verify_start): Pass
5883         override_session_key value to the engine.
5884         * src/decrypt.c (decrypt_start): Ditto.
5885         * src/engine.c (_gpgme_engine_op_decrypt): Ditto.
5886         (_gpgme_engine_op_decrypt_verify): Ditto.
5887         * src/engine-backend.h (struct engine_ops): Extend DECRYPT and
5888         DECRYPT_VERIFY_START with override_session_key.
5889         * src/engine-uiserver.c (_uiserver_decrypt): Add stub arg
5890         override_session_key.
5891         (uiserver_decrypt): Ditto.
5892         (uiserver_decrypt_verify): Ditto.
5893         * src/engine-gpgsm.c (gpgsm_decrypt): Ditto.
5894         * src/engine-gpg.c (gpg_decrypt): Add arg override_session_key and set
5895         corresponding gpg option.
5896
5897         * tests/run-decrypt.c (print_result): Print the session key if
5898         available.
5899         (main): Add options --export-session-key and --override-session-key.
5900
5901         core: Add public function gpgme_get_ctx_flag.
5902         + commit 3234b1bf1d6939772677d64f6c1e1820ec98e3cd
5903         * src/gpgme.h.in (gpgme_get_ctx_flag): New.
5904         * src/gpgme.c (gpgme_set_ctx_flag): Move down the file and add a trace
5905         statement.
5906         (gpgme_get_ctx_flag): New.
5907         * src/gpgme.def, src/libgpgme.vers: Add new interface.
5908
5909 2016-11-15  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
5910
5911         core: Enable extraction of session keys.
5912         + commit cad1210fb8a7402cb29e607f8f9680005314120d
5913         * src/gpgme.c (gpgme_set_export_session_keys): New function.
5914         (gpgme_get_export_session_keys): New function.
5915         * src/gpgme.h.in (struct _gpgme_op_decrypt_result): Add session_key
5916         member.
5917         (gpgme_{set,get}_export_session_keys): Declare new functions.
5918         * src/libgpgme.vers, src/gpgme.def: Export new functions in shared
5919         object.
5920         * src/engine.h: (_gpgme_engine_op_decrypt) Add export_session_key
5921         parameter.
5922         (_gpgme_engine_op_decrypt_verify): Add export_session_key parameter.
5923         * src/engine-backend.h: (struct engine_ops): Change function
5924         pointer declarations to match.
5925         * src/context.h (struct gpgme_context): Add export_session_keys member.
5926         * src/decrypt.c (release_op_data): Free result.session_key.
5927         (_gpgme_decrypt_status_handler): Store a copy of the exported session
5928         key.
5929         (decrypt_start): Pass export_session_keys from the context.
5930         * src/decrypt-verify.c (decrypt_verify_start): Pass
5931         export_session_keys from context.
5932         * src/engine.c (_gpgme_engine_op_decrypt): Pass through
5933         export_session_key flag.
5934         (_gpgme_engine_op_decrypt_verify): Pass through export_session_key
5935         flag.
5936         * src/engine-gpg.c (gpg_decrypt): If export_session_key is set, add
5937         --export-session-key to argument list.
5938         * src/engine-gpgsm.c (gpgsm_decrypt): Ignore export_session_key for
5939         now, since gpgsm offers no such mechanism.
5940         * src/engine-uiserver.c (_uiserver_decrypt): If export_session_key is
5941         set, add --export-session-key flag to cmd.
5942         * doc/gpgme.texi: Document new functions and session_key member of
5943         decrypt_result_t.
5944         * doc/uiserver.texi: Add --export-session-key flag to DECRYPT command.
5945
5946 2016-11-14  Andre Heinecke  <aheinecke@intevation.de>
5947
5948         qt: Add API to get the context for a Job.
5949         + commit 9451faa2ee333904cff59f92ab62918e13ab4b87
5950         * lang/qt/src/job.cpp,
5951         lang/qt/src/job.h (Job::context): New.
5952         * lang/qt/src/threadedjobmixin.cpp
5953         (ThreadedJobMixin::~ThreadedJobMixin): New. Unregister context.
5954         (ThreadedJobMixin::lateInitialization): Register context.
5955         * NEWS: Update for cpp and qt.
5956
5957         cpp: Add get / set Sender API.
5958         + commit d09a84eaf1e4f8c6c2e462995fa15c1a5690a6ce
5959         * cpp/src/context.cpp, cpp/src/context.h (Context::setSender),
5960         (Context::getSender): Add simple wrappers.
5961
5962         qt, cpp: Enable dll build for windows.
5963         + commit f3790ddf56558fb0a08af95fdbae979cd6589aad
5964         * lang/cpp/src/Makefile.am,
5965         lang/qt/src/Makefile.am: Add -no-undefined to LDFLAGS.
5966
5967         w32: Fix build of w32-glib.
5968         + commit b91c383386fe9eadd90afdb9bb1f8ec6c528173b
5969         * src/Makefile.am (main_sources): Remove system_components_not_extra.
5970         (libgpgme_la_SOURCES): Add system_components_not_extra.
5971         (libgpgme_glib_la_SOURCES): Remove duplicated ath files.
5972
5973 2016-11-11  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
5974
5975         doc: Correct deftypefun for gpgme_op_decrypt_verify_start.
5976         + commit 16a30205064914eef578d84d07141b5d51d82838
5977         * doc/gpgme.texi: Documentationabout gpgme_op_decrypt_verify_start was
5978         stored under the name gpgme_op_decrypt_verify instead.
5979
5980         doc: Correct text about gpgme_cancel_async.
5981         + commit d50bdb269e86db36a443958e3bfc6816a44d468e
5982         * doc/gpgme.texi: Documentation about gpgme_cancel_async should refer
5983         to the correct name.
5984
5985         core: Non-zero values should set _armor, _textmode, and _online.
5986         + commit da035768bd9a880becee5d0d553dfe12299f96eb
5987         * src/gpgme.c (gpgme_set_armor, gpgme_set_textmode,
5988         gpgme_set_offline): Ensure that non-zero values actually set the
5989         appropriate internal bit.
5990
5991 2016-11-11  Alon Bar-Lev  <alon.barlev@gmail.com>
5992
5993         tests,python: Atomic directory creation.
5994         + commit 41d8c7e51a8989be633b9ada124c58a01fae7d54
5995         * lang/python/tests/Makefile.am:  Use MIDIR_P.
5996         * tests/gpg/Makefile.am: Ditto.
5997         * tests/gpgsm/Makefile.am: Ditto.
5998
5999 2016-11-10  Werner Koch  <wk@gnupg.org>
6000
6001         core: Use better error code when using select with a too high fd.
6002         + commit 6e57379c8e37c0863f7d12819a5a7d0781bd76d2
6003         * src/posix-io.c (_gpgme_io_select): Return EMFILE instead of EBADF.
6004
6005 2016-11-10  Andre Heinecke  <aheinecke@intevation.de>
6006
6007         tests: Reduce thread count in new thread tests.
6008         + commit ddd0a3cf90ac4b0a27ea610ebd7b9b8016ff43c4
6009         * gpg/t-thread-keylist-verify.c,
6010         gpg/t-thread-keylist.c: Reduce threads to 100
6011
6012 2016-11-10  Werner Koch  <wk@gnupg.org>
6013
6014         core: Detect unreadable keyrings.
6015         + commit 2a39bd6c30d21c43c86645a7908ce6c57dad5e20
6016         * src/keylist.c (op_data_t): Add field keydb_search_err.
6017         (keylist_status_handler): Parse STATUS_ERROR into that var.
6018         (gpgme_op_keylist_next): Use that err instead of GPG_ERR_EOF.
6019
6020 2016-11-10  Andre Heinecke  <aheinecke@intevation.de>
6021
6022         tests: Fix additional memleaks in thread tests.
6023         + commit d0030efb45ec8436dd84a9623d2f66b80c6b9e10
6024         * tests/gpg/t-thread-keylist-verify.c (start_verify): Release
6025         data.
6026         (start_keylist): Unref keys.
6027         * tests/gpg/t-thread-keylist.c (start_keylist): Unref keys.
6028
6029         tests: Improve new thread tests.
6030         + commit 4d5174e4a83dcd524f8085f6646145f81b50a02a
6031         * tests/gpg/t-thread-keylist-verify.c (start_keylist): Mark
6032         arg as unused. Release context.
6033         (start_verify): Ditto.
6034         (main): Mark args as unused.
6035         * tests/gpg/t-thread-keylist.c (start_keylist):  Mark
6036         arg as unused. Release context.
6037         (main): Mark args as unused.
6038
6039         core: Use gpgrt locking for thread safeness.
6040         + commit 09b64554328445e99a8cc78fc34ea49c2ea2e7f9
6041         * configure.ac: Require libgpg-error 1.17. No longer
6042         check for pthread.
6043         * doc/gpgme.texi: Document removed neccessity for thread
6044         safe gpgme flavours.
6045         * src/sema.h (DEFINE_GLOBAL_LOCK),
6046         (DEFINE_STATIC_LOCK, INIT_LOCK, DECLARE_LOCK)
6047         (DESTROY_LOCK, LOCK, UNLOCK): Change to gpgrt equivalents.
6048         * src/posix-sema.c, src/w32-sema.c: Removed.
6049         * src/Makefile.am: Remove libpthread and
6050         Update accordingly.
6051         * src/ath.c, src/ath.h (ath_mutex_init)
6052         (ath_mutex_destroy, ath_mutex_lock, ath_mutex_unlock): Removed.
6053         * src/ath.h (ATH_MUTEX_INITIALIZER): Removed.
6054         * src/version.c (do_subsystem_inits): sema_subsystem_init is
6055         no longer required.
6056         * tests/gpg/Makefile.am: Add new threading tests.
6057         (t_thread1_LDADD, t_cancel_LDADD):
6058         Use just gpgme.
6059         * tests/gpg/t-thread-keylist-verify.c,
6060         tests/gpg/t-thread-keylist.c: New.
6061         * src/gpgme-config.in: Use -lgpgme for thread-model pthread.
6062
6063 2016-11-09  Justus Winter  <justus@g10code.com>
6064
6065         python: Require at least GPGME 1.7 for out-of-tree builds.
6066         + commit f1f341062e24724e26928d893dd5769d3ccf5fa2
6067         * lang/python/setup.py.in: Bump required version to 1.7.
6068
6069 2016-11-09  Werner Koch  <wk@gnupg.org>
6070
6071         w32: Better protect the IO-system's fd_table.
6072         + commit 10f2e1c30be651e74a03f4563a9f212d7416adb3
6073         * src/w32-io.c (fd_table_lock): New.
6074         (new_fd): Lock allocation of a new slot.
6075         (release_fd): Lock deallocation of a slot.
6076
6077 2016-11-04  Andre Heinecke  <aheinecke@intevation.de>
6078
6079         cpp: Add API for swdb queries.
6080         + commit 3509cf2f9846360848b6c08d36cbca18373c935e
6081         * lang/cpp/src/swdbresult.cpp,
6082          lang/cpp/src/swdbresult.h (SwdbResult): New.
6083         * lang/cpp/src/Makefile.am: Update accordingly.
6084
6085         cpp: Add more EngineInfo::Version ctors.
6086         + commit 512de91f9a8da8f491e09653eb4b5bdd0a027198
6087         * lang/cpp/src/engineinfo.h
6088         (EngineInfo::Version::Version(const char*)),
6089         (EngineInfo::Version::Version()): New.
6090
6091         cpp: Don't include gpgme.h in tofuinfo header.
6092         + commit 4d3f33d0e9d960df2c34fb4d215987ab4d36111c
6093         * lang/cpp/src/tofuinfo.h: Don't include gpgme.h
6094
6095         cpp: Extend gpgmefw for tofuinfo and swdb query.
6096         + commit 23979b9be5a6028e3e9cafc3aff632bc720b81f2
6097         * lang/cpp/src/gpgmefw.h (gpgme_tofu_info_t)
6098         (gpgme_query_swdb_result_t): New forwards.
6099
6100 2016-11-04  Werner Koch  <wk@gnupg.org>
6101
6102         w32: Fix locating gpgconf on 64 bit systems.
6103         + commit df08a0ca3f029b06b7e3a6bd63330df5cb96585a
6104         * src/w32-util.c (find_program_at_standard_place): Use access to check
6105         whether the binary is at CSIDL_PROGRAM_FILES before testing
6106         CSIDL_PROGRAM_FILESX86.
6107
6108 2016-11-03  Werner Koch  <wk@gnupg.org>
6109
6110         core: Add gpgme_op_query_swdb and helper.
6111         + commit aad94cb7c313d4501bed748f48830cbb93c67e20
6112         * src/gpgme.h.in (gpgme_query_swdb_result_t): New.
6113         (gpgme_op_query_swdb): New.
6114         (gpgme_op_query_swdb_result): New.
6115         * src/libgpgme.vers, src/gpgme.def: Add the two new functions.
6116         * src/queryswdb.c: New.
6117         * src/Makefile.am (main_sources): Add new file.
6118         * src/context.h (OPDATA_QUERY_SWDB): New.
6119         * src/engine-backend.h (struct engine_ops): Add field 'query_swdb'.
6120         Adjust all initializer.
6121         * src/engine.c (_gpgme_engine_op_query_swdb): New.
6122         * src/engine-gpgconf.c (parse_swdb_line): New.
6123         (gpgconf_query_swdb): New.
6124         (_gpgme_engine_ops_gpgconf): Register that function.
6125
6126         * src/util.h (GPG_ERR_TOO_OLD): Define for older libgpg-error.
6127         (GPG_ERR_ENGINE_TOO_OLD): Ditto.
6128
6129         * tests/run-swdb.c: New.
6130         * tests/Makefile.am (noinst_PROGRAMS): Add new debug tool.
6131
6132 2016-11-03  Andre Heinecke  <aheinecke@intevation.de>
6133
6134         qt: Change license of export / version header.
6135         + commit 34a4e8017be452e8ead6b9c2da84be1ec7929cae
6136         * lang/qt/src/qgpgme_export.h,
6137         lang/qt/src/qgpgme_version.h: Change license to GPLv2+
6138
6139 2016-11-03  Werner Koch  <wk@gnupg.org>
6140
6141         core: Make use of --homedir in gpgconf.
6142         + commit 0c2038c0043c1e79547b55e79c3d3e267dae801c
6143         * src/engine-gpgconf.c (struct engine_gpgconf): Add field 'version'.
6144         (have_gpgconf_version): New.
6145         (gpgconf_release): Free VERSION.
6146         (gpgconf_new): Set VERSION.
6147         (gpgconf_read, gpgconf_write): Use --homedir with recent gnupg.
6148
6149 2016-11-02  Andras Mantia  <andras@kdab.com>
6150
6151         qt: Fix build with g++ 4.8.x.
6152         + commit b4658f6a1110bb0b54bd5dfc9df8e8b390e38d61
6153         * lang/qt/src/defaultkeygenerationjob.cpp
6154         (DefaultKeyGenerationJob::start): Explicitly connect pointer
6155         in the QPointer.
6156
6157 2016-11-02  Andre Heinecke  <aheinecke@intevation.de>
6158
6159         qt, cpp: Fix versioning in cmake config and header.
6160         + commit bf9aa0ccf7b0165aa3a1af2bdb18daca7c02ce74
6161         * configure.ac (VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO): New
6162         subst variables for the version header.
6163         * lang/cpp/src/GpgmeppConfigVersion.cmake.in,
6164         lang/cpp/src/gpgmepp_version.h.in,
6165         lang/qt/src/QGpgmeConfigVersion.cmake.in,
6166         lang/qt/src/qgpgme_version.h.in: Use new variables.
6167
6168         qt: Install cmake config into qgpgme subdir.
6169         + commit b5c4d56cfdcafade3467be100fca6f1c89ecab73
6170         * lang/qt/src/Makefile.am: Install cmake config file in qgpgme subdir.
6171
6172         qt: Require gpgmepp from cmake config script.
6173         + commit 4149194d2e2f2f4d142926ba4d4efbd336b543f2
6174         * lang/qt/src/QGpgmeConfig.cmake.in.in: Require cpp.
6175
6176         qt, cpp: Add all generated files to cleanfiles.
6177         + commit 8486f213423311174ebff5cba74127cbd9bb3c2a
6178         * cpp/src/Makefile.am (CLEANFILES),
6179         qt/src/Makefile.am (CLEANFILES): Add all generated files
6180         to cleanfiles.
6181
6182 2016-11-01  Andre Heinecke  <aheinecke@intevation.de>
6183
6184         qt: Add Distinguished Name parser from libkleo.
6185         + commit 627c5deed84b4481710b6c0de06b26e886679bbe
6186         * lang/qt/src/dn.cpp (DN, DN::Attribute): New public API.
6187         * lang/qt/src/dn.h: New.
6188         * lang/qt/src/Makefile.am: Update accordingly.
6189
6190         qt, cpp: Install version headers in subdirs.
6191         + commit 567123de21247cab05762d799400739a12eb67ae
6192         * lang/cpp/src/Makefile.am,
6193         lang/qt/src/Makefile.am: Install version headers in include
6194         subdirs.
6195
6196 2016-10-31  Justus Winter  <justus@g10code.com>
6197
6198         python: Use vanity modules for constants in tests and examples.
6199         + commit 4b3264345084a0c9bf9f97fb233df700d7608e66
6200         * lang/python/gpg/constants/sig/notation.py: New file.
6201         * lang/python/gpg/constants/sig/__init__.py: Import new module.
6202
6203         * lang/python/examples/assuan.py: Use more specific module for
6204         constants, e.g. 'protocol.ASSUAN' instead of 'PROTOCOL_ASSUAN'.
6205         * lang/python/examples/testCMSgetkey.py: Likewise.
6206         * lang/python/tests/initial.py: Likewise.
6207         * lang/python/tests/t-callbacks.py: Likewise.
6208         * lang/python/tests/t-decrypt-verify.py: Likewise.
6209         * lang/python/tests/t-decrypt.py: Likewise.
6210         * lang/python/tests/t-edit.py: Likewise.
6211         * lang/python/tests/t-encrypt-large.py: Likewise.
6212         * lang/python/tests/t-encrypt-sign.py: Likewise.
6213         * lang/python/tests/t-encrypt-sym.py: Likewise.
6214         * lang/python/tests/t-encrypt.py: Likewise.
6215         * lang/python/tests/t-export.py: Likewise.
6216         * lang/python/tests/t-file-name.py: Likewise.
6217         * lang/python/tests/t-idiomatic.py: Likewise.
6218         * lang/python/tests/t-import.py: Likewise.
6219         * lang/python/tests/t-keylist.py: Likewise.
6220         * lang/python/tests/t-protocol-assuan.py: Likewise.
6221         * lang/python/tests/t-sig-notation.py: Likewise.
6222         * lang/python/tests/t-sign.py: Likewise.
6223         * lang/python/tests/t-signers.py: Likewise.
6224         * lang/python/tests/t-trustlist.py: Likewise.
6225         * lang/python/tests/t-verify.py: Likewise.
6226         * lang/python/tests/t-wait.py: Likewise.
6227
6228         python: Import the topmost module in tests and examples.
6229         + commit 20dc37a0e7e1531b0e568a6ec29b1c2d18de59c3
6230         * examples/verifydetails.py: Only import the topmost module 'gpg' and
6231         update the code accordingly.
6232         * tests/support.py: Likewise.
6233         * tests/t-callbacks.py: Likewise.
6234         * tests/t-data.py: Likewise.
6235         * tests/t-decrypt-verify.py: Likewise.
6236         * tests/t-decrypt.py: Likewise.
6237         * tests/t-edit.py: Likewise.
6238         * tests/t-encrypt-large.py: Likewise.
6239         * tests/t-encrypt-sign.py: Likewise.
6240         * tests/t-encrypt-sym.py: Likewise.
6241         * tests/t-encrypt.py: Likewise.
6242         * tests/t-export.py: Likewise.
6243         * tests/t-file-name.py: Likewise.
6244         * tests/t-import.py: Likewise.
6245         * tests/t-keylist.py: Likewise.
6246         * tests/t-sig-notation.py: Likewise.
6247         * tests/t-sign.py: Likewise.
6248         * tests/t-signers.py: Likewise.
6249         * tests/t-trustlist.py: Likewise.
6250         * tests/t-verify.py: Likewise.
6251         * tests/t-wait.py: Likewise.
6252         * tests/t-wrapper.py: Likewise.
6253
6254         python: Improve constants module.
6255         + commit 70b7064e5c4f3eff9c296c00156724bc0cdaa64f
6256         * lang/python/gpg/constants/__init__.py: Import all modules below
6257         'constants/'.  Interface hygiene: delete 'util'.
6258         * lang/python/gpg/constants/data/encoding.py: Delete 'util'.
6259         * lang/python/gpg/constants/event.py: Likewise.
6260         * lang/python/gpg/constants/import.py: Likewise.
6261         * lang/python/gpg/constants/keylist/mode.py: Likewise.
6262         * lang/python/gpg/constants/md.py: Likewise.
6263         * lang/python/gpg/constants/pk.py: Likewise.
6264         * lang/python/gpg/constants/protocol.py: Likewise.
6265         * lang/python/gpg/constants/sig/mode.py: Likewise.
6266         * lang/python/gpg/constants/sigsum.py: Likewise.
6267         * lang/python/gpg/constants/validity.py: Likewise.
6268         * lang/python/gpg/errors.py: Likewise.
6269
6270 2016-10-31  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
6271
6272         python: Rename Python module from PyME to gpg.
6273         + commit 2fac017618a76882605125b05ff1f7393fe99860
6274         This follows weeks of discussion on the gnupg-devel mailing list.
6275         Hopefully it will make it easier for people using Python to use GnuPG
6276         in the future.
6277
6278 2016-10-25  Werner Koch  <wk@gnupg.org>
6279
6280         core: New API functions gpgme_set_sender, gpgme_get_sender.
6281         + commit b8159eadb5636cd9d93ee60c41e75d5978927870
6282         * src/context.h (struct gpgme_context): Add field 'sender'.
6283         * src/gpgme.c: Include mbox-util.h.
6284         (gpgme_release): Free SENDER.
6285         (gpgme_set_sender): New.
6286         (gpgme_get_sender): New.
6287         * src/gpgme.def, src/libgpgme.vers: Add new functions.
6288
6289         * src/engine-gpg.c (append_args_from_sender): New.
6290         (gpg_encrypt_sign, gpg_sign): Call append_args_from_sender.
6291         (gpg_verify): Add arg CTX.  Call append_args_from_sender/
6292         * src/engine-gpgsm.c (gpgsm_verify): Add dummy arg CTX.
6293         * src/engine-uiserver.c (uiserver_verify): Ditto.
6294         * src/engine.c (_gpgme_engine_op_verify): Add arg CTX.
6295         * src/verify.c (verify_start): Pass CTX to engine function.
6296
6297         * tests/gpg/t-verify.c (main): Add some checks for new functions.
6298         * tests/run-sign.c (main): Add option --sender.
6299         * tests/run-verify.c (main): Ditto.
6300
6301 2016-10-19  Andre Heinecke  <aheinecke@intevation.de>
6302
6303         qt: Improve WKSPublishJob apidoc.
6304         + commit 26cbba3c9cb04a68b95f3a6000ac9bd93fe76dd7
6305         * lang/qt/src/wkspublishjob.h: Improve doc.
6306
6307 2016-10-18  Werner Koch  <wk@gnupg.org>
6308
6309         Release 1.7.1.
6310         + commit 2c490cdb3e50761c498357982445ebb01f18dc1e
6311         * configure.ac: Set LT version to C27/A16/R0.  Note that the LT
6312         versions for cpp and Qt have already been updated.
6313
6314 2016-10-14  Werner Koch  <wk@gnupg.org>
6315
6316         tests: Make t-cancel more portable.
6317         + commit 05e8e1260baa5cbc6f1d6e387e642c1f6c188d44
6318         * tests/gpg/t-cancel.c: Include sys/time.h and protect sys/select.h.
6319
6320         python: Call ln(1) in a portable way.
6321         + commit c6cab5a2bd6e7ed226c6c3f0b78b3f48b47db74c
6322         * lang/python/Makefile.am: Specify target dir for ln.
6323
6324 2016-10-14  Andre Heinecke  <aheinecke@intevation.de>
6325
6326         cpp: Fix init of string from null.
6327         + commit 1e8c34a9192956bb2fe96a7a6a76ff59de8d1c0c
6328         * lang/cpp/src/key.cpp (UserID::addrSpecFromString): Check return
6329         value before creating the string.
6330
6331 2016-10-13  Justus Winter  <justus@g10code.com>
6332
6333         python: Make 'get_key' more idiomatic.
6334         + commit f526d0e22e8b881ccbca66b46a0e1b68bbc4cd6b
6335         * lang/python/pyme/core.py (Context.get_key): Raise errors.KeyNotFound
6336         if the key is not found.  This error is both a KeyError for idiomatic
6337         error handling as well as a GPGMEError so we don't break existing
6338         code.
6339         * lang/python/pyme/errors.py (KeyNotFound): New class.
6340         * lang/python/tests/support.py (no_such_key): New variable.
6341         * lang/python/tests/t-keylist.py: Test the new behavior.
6342
6343         python: Return public keys by default.
6344         + commit 1e6073ffa98db2c265adbcf0dbbe70c067a910f0
6345         * lang/python/pyme/core.py (Core.get_key): Return public keys by
6346         default, improve docstring.
6347         * lang/python/examples/testCMSgetkey.py: Update example.
6348         * lang/python/examples/verifydetails.py: Likewise.
6349
6350         python: Fix example.
6351         + commit cabd4c74e52c8983d624b6877cddc7f8912eff04
6352         * lang/python/examples/inter-edit.py: Fix example.
6353
6354 2016-10-13  Andre Heinecke  <aheinecke@intevation.de>
6355
6356         cpp: Fix version number.
6357         + commit 56302e7bb6a694a7c570f389f9a7883efdfdaf42
6358         * configure.ac (LIBGPGMEPP_LT_CURRENT): Bump.
6359
6360         qt, cpp: Fix permissions of Config files.
6361         + commit a274c7590aa0e38d682d5177904983632f471cb0
6362         * lang/cpp/src/Makefile.am,
6363         lang/qt/src/Makefile.am: Do not install config files as executable.
6364
6365         qt: Install SpecialJob.
6366         + commit 2538c12fa0728f4113f83f69f8c8ec9efb163872
6367         * lang/qt/src/Makefile.am: Install SpecialJob
6368         * NEWS: mention it.
6369
6370         qt, cpp: Fix expected targets in Config files.
6371         + commit a3cf30f89418c8a6bc9456533d95ba7fc2a33a4c
6372         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
6373         lang/qt/src/QGpgmeConfig.cmake.in.in: Remove KF5 variants.
6374
6375 2016-10-11  Daniel Vrátil  <dvratil@kde.org>
6376
6377         qt: Add missing implementation of MultiDeleteJob.
6378         + commit e5a35af5573651b96a90ef4a537b040333595472
6379         * lang/qt/src/multideletejob.h: Fix include, cryptobackend.h is now
6380         called protocol.h
6381         * lang/qt/src/multideletejob.cpp: New file.
6382         * lang/qt/src/Makefile.am: Add multideletejob.cpp.
6383
6384         qt: Install abstractimportjob.h.
6385         + commit ce7385caabb57e5435695cc912acffe2815770b7
6386         * lang/cpp/src/Makefile.am: Install abstractimportjob.h since it's
6387         included from importjob.h
6388
6389 2016-10-11  Andre Heinecke  <aheinecke@intevation.de>
6390
6391         cpp: Add API for gpgme_addrspec_from_uid.
6392         + commit 54f94b14e2bb9b38ffd89f509406bfbd012da632
6393         * lang/cpp/src/key.cpp (UserID::addrSpecFromString): New static
6394         function to expose addrspec from uid.
6395         (UserID::addrSpec): New. Get addrSpec from Userid.
6396         * NEWS: Update accordingly.
6397
6398 2016-10-10  Andre Heinecke  <aheinecke@intevation.de>
6399
6400         Add NEWS for cpp and qt, bump cpp version.
6401         + commit e7ceb83a5969581f5e1b0b6a69d18a93b594f6d4
6402         * NEWS: Add entries for cpp and qt changes.
6403         * configure.ac: Bump cpp version because of added API.
6404
6405         Add convenience function to get key from sig.
6406         + commit b6b820bff14a9aa8fa67755b246c90062ffdba14
6407         * lang/cpp/src/verificationresult.cpp (Signature::key(bool, bool)):
6408         New. Can be used to search / update the key associcated with this
6409         signature.
6410
6411         cpp: Return null key if the signature had no key.
6412         + commit 34e9dfee81958160f6604849b63369ae4de67417
6413         * lang/cpp/src/verificationresult.cpp (Private): Add null key
6414         to list when there is no key associated with the signature.
6415
6416         qt: Add simple verify test.
6417         + commit f131a5e72b0881cafcc3b0a91da8f050af2684a6
6418         * lang/qt/tests/t-verify.cpp: New. Small test if a signature
6419         returns a key with fingerprint.
6420         * lang/qt/tests/Makefile.am: Add new test.
6421
6422         core: Fix w32 crash in find_program_in_dir.
6423         + commit 098a2da15b1b46b145add623dec0488abd39bd74
6424         * src/w32-util.c (find_program_in_dir): Fix call to _gpgme_strconcat.
6425
6426 2016-10-08  Werner Koch  <wk@gnupg.org>
6427
6428         core: New helper function gpgme_addrspec_from_uid.
6429         + commit 0ea2ff67900c243fff9f689658dcb23d1c0961cd
6430         * src/gpgme.h.in: Add gpgme_addrspec_from_uid.
6431         * src/gpgme.def, src/libgpgme.vers: Ditto.
6432         * src/mbox-util.c (gpgme_addrspec_from_uid): New.
6433
6434 2016-10-06  Justus Winter  <justus@g10code.com>
6435
6436         Add missing includes.
6437         + commit 857592041b8355cd58a7068c9f2446cf8dc0968f
6438         * lang/cpp/src/key.cpp: Include <strings.h> for 'strcasecmp'.
6439         * tests/gpg/t-cancel.c: Include <sys/select.h> for 'fd_set' and
6440         friends.
6441
6442 2016-10-05  Andre Heinecke  <aheinecke@intevation.de>
6443
6444         cpp: Bump Revision.
6445         + commit 8033cff441e9ea185531290273ec343f3402703c
6446         * configure.ac (LIBGPGMEPP_LT_REVISION): Bump revision.
6447
6448         qt: Fix spelling error in WKSPublishJob.
6449         + commit 88c7e84ede4b6017cac3a396e8c87c2bd3a2bf58
6450         * src/qgpgmewkspublishjob.cpp,
6451         src/qgpgmewkspublishjob.h,
6452         src/wkspublishjob.h,
6453         tests/t-wkspublish.cpp: Fix spelling of received.
6454         * src/configure.ac (LIBQGPGME_LT_CURRENT): Bump
6455         accordingly.
6456
6457         qt: Disable tests that require a password for 2.0.
6458         + commit 24779c9e2301bd17fd328d65b0383e1cbc944119
6459         * lang/qt/tests/t-encrypt.cpp: Disable tests that require
6460         a password for 2.0.
6461
6462         Add warning flags for c++ compiler, too.
6463         + commit 4984cc93db6b55f2420a9abd844c074a5fb4ed0c
6464         * configure.ac (CXXFLAGS): Add Wall and Wextra.
6465
6466         qt: Fix unused variable warnings.
6467         + commit 9d1df990386010e0581b542a76a4f5d85d8d11b5
6468         * qt/src/qgpgmenewcryptoconfig.cpp,
6469         qt/src/threadedjobmixin.h,
6470         qt/tests/t-encrypt.cpp,
6471         qt/tests/t-support.h,
6472         qt/tests/t-wkspublish.cpp: Mark additional variables as unused.
6473
6474         cpp: Add support for URL Data encodings.
6475         + commit 370ee1aa802ec6a4030a39b2df7d24a0c47e5ac7
6476         * lang/cpp/src/data.h (Data::Encoding): Extend enum.
6477         * lang/cpp/src/data.cpp (Data::encoding),
6478         Data::setEncoding): Support new values.
6479
6480         cpp: Fix gcc diagnostic push / pop.
6481         + commit 39dd7585f5a7d801942efcb375d6dd46d01d2968
6482         * lang/cpp/src/context.cpp: Fix pragmas.
6483
6484         qt: Disable t-wkspublish test.
6485         + commit 52a91ccc6a25425d4374b77040e30efb6816940f
6486         * lang/qt/tests/Makefile.am (TESTS): Remove t-wkspublish.
6487
6488 2016-09-30  Alon Bar-Lev  <alon.barlev@gmail.com>
6489
6490         python: Link 'data.h' and 'config.h' into the builddir.
6491         + commit 453ab9d24ca48c9e01d21e1454d6b08de1938b76
6492         * lang/python/Makefile.am: Link to the files.
6493         * lang/python/gpgme.i: Update path.
6494         * lang/python/setup.py.in: Do not add the top builddir to the include
6495         path.
6496
6497         python: Add 'prepare' target.
6498         + commit 68fb8371a1dd5f4e05e50b1733f9996d139cbf38
6499         * lang/python/Makefile.am: Add 'prepare' target.
6500
6501 2016-09-29  Andre Heinecke  <aheinecke@intevation.de>
6502
6503         cpp, qt: Handle modified includedir installation.
6504         + commit 7302791c0d308c3284ac24a743035d27a0c0b6ba
6505         * lang/cpp/src/Makefile.am,
6506         lang/qt/src/Makefile.am: Replace resolved_includedir.
6507         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
6508         lang/qt/src/QGpgmeConfig.cmake.in.in: Use resolved_includedir
6509         instead of relying on a common installation prefix.
6510
6511 2016-09-27  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
6512
6513         Clarify licensing.
6514         + commit 145392f07f42ef23ebcb83a917b4d8e2964e7aa8
6515         * src/b64dec.c, src/mbox-util.c, src/mbox-util.h: These three files
6516           are explicitly licensed under LGPL, but their comments suggest that
6517           details about the warranty can be found in the GPL.  Adjust comments
6518           to refer to the correct license.
6519
6520 2016-09-27  Justus Winter  <justus@g10code.com>
6521
6522         tests: Fix check for gpg versions not reporting the critical flag.
6523         + commit a423603f80d9eb653ce9c171662db2175d7456f5
6524         * lang/python/tests/t-sig-notation.py: Also blacklist 2.0.x.
6525         * tests/gpg/t-sig-notation.c: Likewise.
6526
6527 2016-09-26  Justus Winter  <justus@g10code.com>
6528
6529         python: Correctly translate to size_t.
6530         + commit c38fabfea0601ed5f61e27e0bf43f8e74c67ce2a
6531         * lang/python/gpgme.i: Correctly translate Python number to size_t.
6532
6533         python: Correctly translate off_t.
6534         + commit 1d80e7374aa3150306c86afe7acdc8e8eb05143f
6535         * lang/python/gpgme.i: Improve int/long translations, correctly handle
6536         off_t with large file support.
6537
6538         python: Include 'config.h'.
6539         + commit 3703a4723899d7563937b4b99f5bbe4dd8d3dfed
6540         * lang/python/Makefile.am: Pass 'top_builddir' to 'setup.py'.
6541         * lang/python/gpgme.i: Include 'config.h'.
6542         * lang/python/helpers.c: Likewise.
6543         * lang/python/helpers.h: Likewise.
6544         * lang/python/setup.py.in: Make sure that 'config.h' can be found.
6545
6546 2016-09-23  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
6547
6548         Fix spelling.
6549         + commit 95f38652f696476b38a040644eac40b4511d2b32
6550          * lang/cpp/src/context.h, lang/qt/src/protocol.h,
6551            lang/qt/src/wkspublishjob.h, src/data-identify.c, src/engine-gpg.c:
6552            minor spelling cleanup.
6553
6554         move some file encodings to UTF-8.
6555         + commit a11450eb048df79a3f2b00ebef6d7cab07ad5054
6556         * THANKS, doc/ChangeLog-2011, tests/ChangeLog-2011,
6557           tests/gpg/geheim.txt: convert from iso 8859-1 to utf-8.
6558         * lang/qt/src/dataprovider.cpp, lang/qt/src/qgpgmerefreshkeysjob.cpp,
6559           lang/qt/src/qgpgmesecretkeyexportjob.cpp: replace U+FFFD REPLACEMENT
6560           CHARACTER with proper U+00E4 LATIN SMALL LETTER A WITH DIAERESIS.
6561
6562 2016-09-23  Andre Heinecke  <aheinecke@intevation.de>
6563
6564         tests: Check data after decryption.
6565         + commit 9b38817968b90caf73f123255fe427691e82fec4
6566         * tests/gpgsm/t-decrypt.c (main): Check data matches expected.
6567         Only print result if it does not.
6568
6569         cpp, qt: Include config.h.
6570         + commit a142f187b7ddb2728ec3e1743da4a0c4538ab40a
6571         lang/cpp/src/callbacks.cpp,
6572         lang/cpp/src/configuration.cpp,
6573         lang/cpp/src/context.cpp,
6574         lang/cpp/src/context_glib.cpp,
6575         lang/cpp/src/context_qt.cpp,
6576         lang/cpp/src/context_vanilla.cpp,
6577         lang/cpp/src/data.cpp,
6578         lang/cpp/src/decryptionresult.cpp,
6579         lang/cpp/src/defaultassuantransaction.cpp,
6580         lang/cpp/src/editinteractor.cpp,
6581         lang/cpp/src/encryptionresult.cpp,
6582         lang/cpp/src/engineinfo.cpp,
6583         lang/cpp/src/eventloopinteractor.cpp,
6584         lang/cpp/src/exception.cpp,
6585         lang/cpp/src/gpgadduserideditinteractor.cpp,
6586         lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
6587         lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
6588         lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
6589         lang/cpp/src/gpgsignkeyeditinteractor.cpp,
6590         lang/cpp/src/importresult.cpp,
6591         lang/cpp/src/key.cpp,
6592         lang/cpp/src/keygenerationresult.cpp,
6593         lang/cpp/src/keylistresult.cpp,
6594         lang/cpp/src/scdgetinfoassuantransaction.cpp,
6595         lang/cpp/src/signingresult.cpp,
6596         lang/cpp/src/tofuinfo.cpp,
6597         lang/cpp/src/trustitem.cpp,
6598         lang/cpp/src/verificationresult.cpp,
6599         lang/cpp/src/vfsmountresult.cpp,
6600         lang/qt/src/dataprovider.cpp,
6601         lang/qt/src/defaultkeygenerationjob.cpp,
6602         lang/qt/src/gpgme_backend_debug.cpp,
6603         lang/qt/src/job.cpp,
6604         lang/qt/src/qgpgmeadduseridjob.cpp,
6605         lang/qt/src/qgpgmebackend.cpp,
6606         lang/qt/src/qgpgmechangeexpiryjob.cpp,
6607         lang/qt/src/qgpgmechangeownertrustjob.cpp,
6608         lang/qt/src/qgpgmechangepasswdjob.cpp,
6609         lang/qt/src/qgpgmedecryptjob.cpp,
6610         lang/qt/src/qgpgmedecryptverifyjob.cpp,
6611         lang/qt/src/qgpgmedeletejob.cpp,
6612         lang/qt/src/qgpgmedownloadjob.cpp,
6613         lang/qt/src/qgpgmeencryptjob.cpp,
6614         lang/qt/src/qgpgmeexportjob.cpp,
6615         lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
6616         lang/qt/src/qgpgmeimportjob.cpp,
6617         lang/qt/src/qgpgmekeyformailboxjob.cpp,
6618         lang/qt/src/qgpgmekeygenerationjob.cpp,
6619         lang/qt/src/qgpgmekeylistjob.cpp,
6620         lang/qt/src/qgpgmelistallkeysjob.cpp,
6621         lang/qt/src/qgpgmenewcryptoconfig.cpp,
6622         lang/qt/src/qgpgmerefreshkeysjob.cpp,
6623         lang/qt/src/qgpgmesecretkeyexportjob.cpp,
6624         lang/qt/src/qgpgmesignencryptjob.cpp,
6625         lang/qt/src/qgpgmesignjob.cpp,
6626         lang/qt/src/qgpgmesignkeyjob.cpp,
6627         lang/qt/src/qgpgmetofupolicyjob.cpp,
6628         lang/qt/src/qgpgmeverifydetachedjob.cpp,
6629         lang/qt/src/qgpgmeverifyopaquejob.cpp,
6630         lang/qt/src/qgpgmewkspublishjob.cpp,
6631         lang/qt/src/threadedjobmixin.cpp,
6632         lang/qt/tests/run-keyformailboxjob.cpp,
6633         lang/qt/tests/t-encrypt.cpp,
6634         lang/qt/tests/t-keylist.cpp,
6635         lang/qt/tests/t-keylocate.cpp,
6636         lang/qt/tests/t-ownertrust.cpp,
6637         lang/qt/tests/t-support.cpp,
6638         lang/qt/tests/t-tofuinfo.cpp,
6639         lang/qt/tests/t-wkspublish.cpp: Include config.h
6640
6641 2016-09-22  Werner Koch  <wk@gnupg.org>
6642
6643         w32: Silence some warnings about unused parameters.
6644         + commit 583aafdd6870a7fb12a34d90993fd0f46928592c
6645         * src/assuan-support.c (my_recvmsg, my_sendmsg, my_waitpid)
6646         (my_socketpair) [W32]: Mark unused parameters.
6647
6648         core: Fix error checking in _gpgme_mkstemp.
6649         + commit c447b64d5989845a2ae2cf8fb30a92d2a0bd05af
6650         * src/w32-util.c (_gpgme_mkstemp): Fix error checking.
6651         (dlopen): Mark FLAGS as unused.
6652
6653         core: New helper function _gpgme_strconcat.
6654         + commit dc39552d01094eff2bef5f9fcd1c16928909d20e
6655         * src/conversion.c: Include stdarg.h.
6656         (do_strconcat): New.
6657         (_gpgme_strconcat): New.
6658         * src/util.h: Provide fallback for GPGRT_ATTR_SENTINEL.
6659         (_gpgme_strconcat): New with sentinel.
6660
6661         * src/w32-util.c (find_program_in_dir): Replace malloc and stpcpy by
6662         _gpgme_strconcat.
6663         (find_program_at_standard_place): Ditto.
6664         (_gpgme_set_default_gpg_name): Ditto.
6665         (_gpgme_set_default_gpgconf_name): Ditto.
6666         (_gpgme_mkstemp): Ditto.
6667         (_gpgme_set_override_inst_dir): Repalce malloc and strcpy by strdup.
6668
6669 2016-09-22  Daiki Ueno  <ueno@gnu.org>
6670
6671         tests: Add test for cancellation.
6672         + commit 7a6543c2dfeef874a34086c8f3eeb1dbdf1ce822
6673         * tests/gpg/t-cancel.c: New file.
6674         * tests/gpg/Makefile.am (tests_skipped): New variable, default to
6675         t-genkey and t-cancel.
6676         (noinst_PROGRAMS): Add $(tests_skipped).
6677         * tests/gpg/.gitignore: Add t-cancel.
6678
6679         gpg: Add option --exit-on-status-write-error.
6680         + commit dee56820cabde60c43c9bf8281b8d411cb2ad644
6681         * src/engine-gpg.c (gpg_new): Add --exit-on-status-write-error if the
6682         engine version is latest enough to expect progress output from gpg.
6683
6684         tests: Fix select usage in t-eventloop.
6685         + commit d0cf6b15121c9b42dbcef243e5ce30c9996a449c
6686         * tests/gpg/t-eventloop.c (do_select): Supply timeout value to select.
6687
6688         doc: Fix minor errors in I/O callback example.
6689         + commit 0aaf1dedd629446ab991fff76581b4b58e4872a0
6690         * gpgme.texi (I/O Callback Example): Fix typos, add timeout to select,
6691         and initialize mutex as recursive.
6692
6693 2016-09-21  Andreas Stieger  <astieger@suse.com>
6694
6695         cpp: Avoid missing returns in non-void functions.
6696         + commit ae324b51ffa338b891387bff2657d60c1fd3ae40
6697         * lang/cpp/src/context.cpp
6698           (Context::signaturePolicyURL): return nullptr on default
6699           (to_tofu_policy_t): add default case for unknown
6700         * lang/cpp/src/key.cpp
6701           (Key::primaryFingerprint): return nullptr on default
6702         * lang/cpp/src/tofuinfo.cpp
6703           (GpgME::TofuInfo::policy): add default case for unknown
6704
6705 2016-09-21  Werner Koch  <wk@gnupg.org>
6706
6707         Release 1.7.0.
6708         + commit e7ab75379feadcc2894d9d4cde0f16ad0044780d
6709         * configure.ac: Bump LT vesion to C26/A15/R0.
6710
6711         python: Create install dir.
6712         + commit 936928632b02d7cc2ac645543bb03e4c94285f05
6713         * lang/python/Makefile.am (install-exec-local): Create dir.
6714
6715 2016-09-20  Werner Koch  <wk@gnupg.org>
6716
6717         tests: Make "make -j distcheck" work in Python.
6718         + commit 0763357e39d140b068ee9838a5da08be75426d9f
6719         * lang/python/Makefile.am (SUBDIRS): Make current dir fist.
6720         * lang/python/tests/Makefile.am (xcheck): Depend on pubring-stamp.
6721         (CLEANFILES): Remove private-keys-v1.d/gpg-sample.stamp.
6722         (check-local): Remove.
6723         (initial.py): Remove dependency.
6724         (./pubring-stamp): Depend on conf files and the
6725         private-keys-v1.d/gpg-sample.stamp file.  Also replace use of
6726         basename.
6727
6728         tests: Use --batch for gpg import.
6729         + commit bfb6890ded99f040fe8ecf910f927a136e4acfda
6730         * lang/python/tests/Makefile.am (./pubring-stamp): Use --batch with
6731         GPG to avoid Pinentries during import when using GnuPG >= 2.1.
6732         Replace touch by echo.
6733         * tests/gpg/Makefile.am (./pubring-stamp): Ditto.
6734
6735         tests: Improve portability.
6736         + commit 29207bcd3bf4de7264197db6758130375b16d9bb
6737         * lang/qt/tests/Makefile.am (clean-local): Avoid non-portable "--"
6738         * lang/python/Makefile.am (copystamp): Use well defined cp -R instead
6739         of cp -r.
6740
6741         build: Create swdb file.
6742         + commit df7e92b4d585b7dce919c5a3aab9524f6e183cbe
6743         * Makefile.am (distcheck-hook): New.
6744         (dist-hook): s/VERSION/PACKAGE_VERSION/ for future compatibility.
6745
6746 2016-09-20  Justus Winter  <justus@g10code.com>
6747
6748         python: Fix detection of Python available versions.
6749         + commit ef99b74eb12463db7da5806a316e3b55f8097c5c
6750         * configure.ac: Test for 'PYTHON_VERSION' as 'AX_PYTHON_DEVEL' sets
6751         'PYTHON' but clears the former.
6752
6753 2016-09-19  Andre Heinecke  <aheinecke@intevation.de>
6754
6755         core: Remove moc artifact.
6756         + commit e3c35147d6adb754d4eb0781a54af2a8f0803663
6757         * src/moc_kdpipeiodevice.cpp: Removed.
6758         * src/Makefile.am (EXTRA_DIST): Remove moc_kdpipeiodevice.cpp.
6759
6760         qt: Improve README.
6761         + commit 3f92253e0e476d77aa11463bc51ade367985855f
6762         * lang/qt/README: Add more content. Clearly note license difference.
6763
6764         cpp: Improve README.
6765         + commit 66febf9942c321d30b8770f6aa6cd6ce2315d34f
6766         * lang/cpp/README: Add more content, move license to bottom.
6767
6768         qt: Add debug output for testTofuPolicy.
6769         + commit d438cb59a068b6f076e6bd70d3a2c46bc05ccb5c
6770         * lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): Add
6771         debug output.
6772
6773 2016-09-19  Ben Kibbey  <bjk@luxsci.net>
6774
6775         core: Check for GPG_TTY as well as DISPLAY.
6776         + commit 9d62bacac7826cb73bb18fac7268f3d2df662d7b
6777         * src/engine-assuan.c (llass_new): Update --ttyname from GPG_TTY.
6778         * src/engine-g13.c (g13_new): Ditto.
6779         * src/engine-gpg.c (gpg_new): Ditto.
6780         * src/engine-uiserver.c (uiserver_new): Ditto.
6781         * src/engine-gpgsm.c (gpgsm_new): Ditto.
6782
6783 2016-09-16  Andre Heinecke  <aheinecke@intevation.de>
6784
6785         qt: Add test for setting tofu policy.
6786         + commit a8ff34fc3025af4079cede7f8f9fdf40189b8638
6787         * lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): New.
6788
6789         qt: Add job for tofupolicy.
6790         + commit 77aecfb5c97cea1a99f1ff627748cf71767bac5c
6791         * lang/qt/src/job.cpp, lang/qt/src/protocol.h,
6792         lang/qt/src/protocol_p.h: Register job.
6793         * lang/qt/src/qgpgmetofupolicyjob.cpp,
6794         lang/qt/src/qgpgmetofupolicyjob.h,
6795         lang/qt/src/tofupolicyjob.h: New.
6796         * lang/qt/src/Makefile.am: Update accordingly.
6797
6798         cpp: Add support for gpgme_op_tofu_policy.
6799         + commit 4d384d7bfef044094695271576ca233625bb520a
6800         * src/context.cpp, src/context.h (setTofuPolicy, setTofuPolicyStart):
6801         New.
6802
6803         cpp: Declare sizes of tofu-info enums.
6804         + commit 32baac8cdec6fee51bdfc3c55cb2ee141e086df4
6805         * lang/cpp/src/tofuinfo.h (Policy, Validity): Declare sizes.
6806
6807 2016-09-16  Werner Koch  <wk@gnupg.org>
6808
6809         cpp: Silence use of deprecated function warning.
6810         + commit bd24db313d860ae46d37776dcf1067455d1b9880
6811         * lang/cpp/src/context.cpp (GpgME): Use pragma to silence wardning.
6812
6813         core: Document the version a function has been deprecated.
6814         + commit b615316168f4d33311909d4056b236d13c69488f
6815         * src/gpgme.h.in (_GPGME_DEPRECATED): Change to take versio numbers
6816         for documentation.  Change all places.
6817         (_GPGME_DEPRECATED_OUTSIDE_GPGME): Ditto.
6818         * lang/python/gpgme-h-clean.py: Adjust RE.
6819
6820         core: Map GPGME_STATUS_EOF to the empty string.
6821         + commit 3d6340e8c59ee11a95e03fb213ad9b228be47833
6822         * src/status-table.c (_gpgme_status_to_string): Return "" for EOF.
6823         * src/engine-gpg.c (read_status): Ditto.  The old code accidently used
6824         GPGME_STATUS_EOF which is the integer 0 and neiteyr NULL nor a string.
6825
6826 2016-09-16  Justus Winter  <justus@g10code.com>
6827             Kai Michaelis  <kai@gnupg.org>
6828
6829         python: Release the GIL during calls into GPGME.
6830         + commit 6af7bee076bacbc0cdfe7de342bce43ca5671b3b
6831         * lang/python/helpers.c (pyme_raise_callback_exception): Re-acquire
6832         the Global Interpreter Lock.
6833         (pyPassphraseCb, pyme_set_passphrase_cb, pyProgressCb,
6834         pyme_set_progress_cb, pyStatusCb, pyme_set_status_cb,
6835         _pyme_interact_cb, pyDataReadCb, pyDataWriteCb, pyDataSeekCb,
6836         pyDataReleaseCb, pyme_data_new_from_cbs, _pyme_assuan_data_cb,
6837         _pyme_assuan_inquire_cb, _pyme_assuan_status_cb): Likewise.
6838         * lang/python/setup.py.in: Make 'gpgme-config' emit the correct
6839         cflags, and SWIG generate code to release the GIL before calling us.
6840
6841 2016-09-16  Justus Winter  <justus@g10code.com>
6842
6843         python: Adapt to 'gpgme_op_interact'.
6844         + commit a458e7fe2006d92bd5a838e2747fb66bbac4b1b8
6845         * lang/python/examples/inter-edit.py: Update example.
6846         * lang/python/gpgme.i (gpgme_edit_cb_t): Turn into
6847         'gpgme_interact_cb_t'.
6848         * lang/python/helpers.c (_pyme_edit_cb): Turn into
6849         '_pyme_interact_cb_t'.
6850         * lang/python/private.h (_pyme_edit_cb): Likewise.
6851         * lang/python/pyme/constants/__init__.py: Replace numeric status codes
6852         with the keywords.
6853         * lang/python/pyme/constants/status.py: Likewise.
6854         * lang/python/pyme/core.py (Context.interact): New method.
6855         (Context.op_edit): Deprecate, update docstring, implement using
6856         Context.interact.
6857         * lang/python/tests/t-edit.py: Test both interfaces.
6858
6859 2016-09-16  Werner Koch  <wk@gnupg.org>
6860
6861         core: Remove stub to try implementing gpg < 2.1 support for createkey.
6862         + commit 268e251b802cc7c19831722d7e3a52777a0f412f
6863         * src/engine-gpg.c (gpg_createkey_legacy): Remove.
6864         (gpg_genkey): Remove call.
6865
6866         core: Fix setting og the verification result.
6867         + commit 1f9641dd0fb08e4a3df3b507b974a3f78887920f
6868         * src/verify.c (parse_new_sig): Proberly handle the RC in an ERRSIG
6869         status.
6870
6871 2016-09-15  Werner Koch  <wk@gnupg.org>
6872
6873         core: New function gpgme_op_interact, deprecate gpgme_op_edit.
6874         + commit ed1f2700a73060e2615697491ea9e49ded4293e6
6875         * src/gpgme.h.in (gpgme_interact_cb_t): New.
6876         (GPGME_INTERACT_CARD): New.
6877         (gpgme_op_interact_start, gpgme_op_interact): New.
6878         * src/libgpgme.vers, src/gpgme.def: Add new functions.
6879         * src/edit.c (op_data_t): Rename fnc to fnc_old and change users.  Add
6880         fnc.
6881         (edit_status_handler): Call old or new callback.
6882         (command_handler): Ditto.
6883         (interact_start): New.
6884         (gpgme_op_interact_start, gpgme_op_interact_start): New.
6885         * src/status-table.c (_gpgme_status_to_string): New.
6886
6887         * tests/gpg/t-edit.c (edit_fnc): Rename to interact_fnc and change
6888         type of STATUS.  Use gpgme_io_writen.
6889         (main): s/gpgme_op_edit/gpgme_op_interact/.
6890
6891         core: Minor change of the gpgme_op_edit semantics.
6892         + commit d2b72d3cc19fe2a7d548dac38d55e069e0c9a904
6893         * src/edit.c (command_handler): Handle special error code.
6894         * src/engine-gpg.c (read_status): Ditto.
6895         * src/engine-gpgsm.c (status_handler): Ditto.
6896         * src/engine-uiserver.c (status_handler): Ditto.
6897         * src/util.h (GPG_ERR_FALSE): Define for older libgpg-error versions.
6898
6899 2016-09-14  Werner Koch  <wk@gnupg.org>
6900
6901         core: New function gpgme_op_tofu_policy.
6902         + commit 7c37719d79345a665ec2f4570e3f257033b58c62
6903         * src/gpgme.h.in (gpgme_op_tofu_policy_start): New function.
6904         (gpgme_op_tofu_policy): New function.
6905         * src/libgpgme.vers, src/gpgme.def: Add new functions.
6906         * src/tofupolicy.c: New.
6907         * src/Makefile.am (main_sources): Add that file.
6908         * src/context.h (ctx_op_data_id_t): Add OPDATA_TOFU_POLICY.
6909         * src/engine.c (_gpgme_engine_op_tofu_policy): New.
6910         * src/engine-backend.h (engine_ops): Add funcptr 'tofu_policy'.
6911         Adjust all engine initializations.
6912         * src/engine-gpg.c (gpg_tofu_policy): New.
6913         (_gpgme_engine_ops_gpg): Register this function.
6914
6915         * tests/run-tofu.c: New.
6916         * tests/Makefile.am (noinst_PROGRAMS): Add it.
6917
6918         core: Defer implementation of gpgme_op_createkey with gpg < 2.1.
6919         + commit d79dcb78d867aaf55b85aea117c4ae6035a1531a
6920         * src/engine-gpg.c (gpg_createkey_legacy): Mark unused variables.
6921
6922         core: New function gpgme_op_keysign.
6923         + commit bfd2bd0ccc9fed8284ef932ac788d4ca0dba0336
6924         * src/gpgme.h.in (gpgme_op_keysign_start, gpgme_op_keysign): New.
6925         (GPGME_KEYSIGN_LOCAL): New.
6926         (GPGME_KEYSIGN_LFSEP): New.
6927         (GPGME_KEYSIGN_NOEXPIRE): New.
6928         * src/context.h (ctx_op_data_id_t): Add OPDATA_KEYSIGN.
6929         * src/keysign.c: New.
6930         * src/Makefile.am (main_sources): Add keysig.
6931         * src/libgpgme.vers, src/gpgme.def: Add gpgme_op_keysign_start.
6932         * src/engine.c (_gpgme_engine_op_keysign): New.
6933         * src/engine-backend.h (engine_ops): Add 'keysign' and adjust all
6934         engine initializers.
6935         * src/engine-gpg.c (_add_arg): Add args PREFIX and ARGLEN and change
6936         callers to set them.
6937         (add_arg_pfx): New.
6938         (add_arg_len): New.
6939         (gpg_keysign): New.
6940         (_gpgme_engine_ops_gpg): Set keysign to gpg_keysign.
6941         * tests/run-keysign.c: New.
6942         * tests/Makefile.am (noinst_PROGRAMS): Add run-keysign.
6943
6944 2016-09-14  Justus Winter  <justus@g10code.com>
6945
6946         python: Clarify that we support Python 2.7 too.
6947         + commit 594c3b8b052e60b6be77ed532fe46549133a9726
6948         * lang/python/README: Use 'Python' instead of 'Python 3'.
6949         * lang/python/pyme/version.py.in: Likewise.
6950         * lang/python/setup.py.in: Add classifier for 2.7, drop 3 only.
6951
6952         python: Trim imports.
6953         + commit 4011b2b2a1050f0837e989da3db9b5459e71ccd6
6954         * lang/python/examples/encrypt-to-all.py: Drop unused import of 'os'.
6955         * lang/python/examples/signverify.py: Likewise.
6956         * lang/python/examples/simple.py: Likewise.
6957         * lang/python/examples/verifydetails.py: Likewise.
6958
6959         python: Improve error handling.
6960         + commit 44d18200d5ffe8691e18d93ce6c534660702b982
6961         * lang/python/gpgme.i (gpgme_engine_info_t): Improve error handling.
6962
6963         python: Adapt to TOFU changes.
6964         + commit f6cd560ca74248dd719a37cfb34386148727a92d
6965         * lang/python/pyme/results.py (TofuInfo): Drop.
6966         (Signature): The TOFU information moved to the key.
6967
6968         python: Improve build system integration.
6969         + commit 99db351288d5bb075f124ef10e540e25bc36b70a
6970         * configure.ac: Try to compile a Python module for each version.
6971         * m4/m4_ax_swig_python.m4: Drop unused file.
6972
6973 2016-09-14  Werner Koch  <wk@gnupg.org>
6974
6975         core: New function gpgme_op_revuid.
6976         + commit c943380b7a2cc9b32f81c22224fc6f92e8ea8469
6977         * src/engine.h (GENKEY_EXTRAFLAG_REVOKE): New.
6978         * src/genkey.c (adduid_start): Rename to addrevuid_start.  Add arg
6979         REVOKE and pass it as extraflags.  Remove useless ARMOR extraflag.
6980         Adjust callers.
6981         (gpgme_op_revuid_start, gpgme_op_revuid): New.
6982         * src/gpgme.def, src/libgpgme.vers: Add them.
6983
6984         * tests/run-genkey.c: Add option --revuid.
6985
6986         core: Change a parameter for the engine's genkey function.
6987         + commit c22f5884c50557f54704f4becc5a8c1ee0749547
6988         * src/engine.h (GENKEY_EXTRAFLAG_ARMOR): New.
6989         * src/engine-backend.h (engine_ops): Rename USE_ARMOR in genkey to
6990         EXTRAFLAGS.
6991         * src/engine.c (_gpgme_engine_op_genkey): Ditto.
6992         * src/engine-gpg.c (gpg_createkey_from_param): Ditto and test the
6993         flags.
6994         (gpg_createkey_legacy): Ditto.
6995         (gpg_createkey): Ditto.
6996         (gpg_addkey): Ditto.
6997         (gpg_genkey): Ditto.
6998
6999 2016-09-14  Justus Winter  <justus@g10code.com>
7000
7001         python: Build for both Python2 and Python3.
7002         + commit 24b4162d908b48a92660020be0b776c2874fb05a
7003         * NEWS: Update.
7004         * configure.ac: Check for multiple Python versions.
7005         * lang/python/Makefile.am: Build and install for both Python versions.
7006         * lang/python/tests/Makefile.am: Test both versions.
7007         * lang/python/tests/run-tests.py: New test runner.
7008
7009 2016-09-14  Werner Koch  <wk@gnupg.org>
7010
7011         core: New function gpgme_op_adduid.
7012         + commit 3210f3e4725afc5ee2810b9a1361918ec9c42ca4
7013         * src/genkey.c: Replace most error codes GPG_ERR_INV_VALUE by
7014         GPG_ERR_INV_ARG.
7015         (struct op_data_t): Add field UIDMODE.
7016         (genkey_status_handler): Use UIDMODE.
7017         (adduid_start): New.
7018         (gpgme_op_adduid_start, gpgme_op_adduid): New.
7019         * src/gpgme.def, src/libgpgme.vers: Add them.
7020         * tests/run-genkey.c: Add option --adduid.
7021
7022         core: New function gpgme_op_createsubkey.
7023         + commit cc353701b0fde4c811ddc1e9a91b852dfe9f4e06
7024         * src/genkey.c (createsubkey_start): New.
7025         (gpgme_op_createsubkey_start, gpgme_op_createsubkey): New.
7026         * src/gpgme.def, src/libgpgme.vers: Add them.
7027         * src/engine-gpg.c (gpg_createkey): Factor some code out to ...
7028         (gpg_add_algo_usage_expire): new.
7029         (gpg_addkey): Implement.
7030         * tests/run-genkey.c: Add option --addkey.
7031
7032 2016-09-13  Werner Koch  <wk@gnupg.org>
7033
7034         core: Use const char * where appropriate.
7035         + commit 51f9acbca935c5287d9a28205037b0923e9a65f5
7036
7037
7038         core: Cast away the common const problem with spawn and argv.
7039         + commit 686a065f639ef006e33c164e282d787bcd169754
7040         * src/dirinfo.c (read_gpgconf_dirs): Use a cast to assignd to ARGV.
7041
7042         core: Fix condition-always-true warning in trace macro.
7043         + commit 3009e6162eaa39adaaf45f06fc4f88c7153360ee
7044         * src/data-compat.c (old_user_read): Cast AMT.
7045
7046         core: Mark unused function args.
7047         + commit 4a200146b602349eebb4eac2e102357748d7ba5b
7048
7049
7050         tests: Mark lots of unused vars and fix const mismatches.
7051         + commit 9064eebdc05e7149c2c8cc899fbd7874622fb769
7052
7053
7054         tests: Use gpgme_io_write in passhrase callbacks.
7055         + commit 4491ef0a9a15d3b307d1ade37ff620ef9fcb2478
7056         * tests/gpg/t-support.h (passphrase_cb): Use gpgme_io_write.
7057         * tests/gpgsm/t-support.h (passphrase_cb): Ditto.
7058         * tests/run-support.h (passphrase_cb): Ditto.
7059
7060         core: Do not pass const char* to functions taking a char*.
7061         + commit 3972f476e00f27d41a0aeabcb66600905b6737bd
7062
7063
7064         build: Use more compiler warnings.
7065         + commit 0510591c36591816a6ff3f87a04451001b7ed46f
7066         * configure.ac: Add useful compiler warnings.
7067
7068         core: New function gpgme_op_create_key.
7069         + commit 00c501d296da287bec2fd6a0e3912abfbde90a98
7070         * src/engine-backend.h (engine_ops): Change prototype of genkey.
7071         * src/engine-gpgsm.c (gpgsm_genkey): Change accordingly.
7072         * src/engine-gpg.c (gpg_genkey): Change it to a dispatcher.
7073         (gpg_createkey_from_param): New for the old functionality.
7074         (gpg_createkey_legacy): New.  Stub for now.
7075         (gpg_createkey): New.
7076         (gpg_addkey): New.  Stub for now.
7077         (gpg_adduid): New.  Stub for now.
7078         * src/engine.c (_gpgme_engine_op_genkey): Add new args.
7079         * src/genkey.c (op_data_t): Add field ERROR_CODE.
7080         (parse_error): New.
7081         (genkey_status_handler): Parse ERROR status line.
7082         (genkey_start): Use NULL/0 for the new args.
7083         (createkey_start): New.
7084         (gpgme_op_createkey_start, gpgme_op_createkey): New.
7085         * src/gpgme.def, src/libgpgme.vers: Add gpgme_op_createkey_start and
7086         gpgme_op_createkey.
7087         * src/gpgme.h.in (_gpgme_op_genkey_result): Add fields PUBKEY and
7088         SECKEY.
7089         (GPGME_CREATE_SIGN): New.
7090         (GPGME_CREATE_ENCR): New.
7091         (GPGME_CREATE_CERT): New.
7092         (GPGME_CREATE_AUTH): New.
7093         (GPGME_CREATE_NOPASSWD): New.
7094         (GPGME_CREATE_SELFSIGNED): New.
7095         (GPGME_CREATE_NOSTORE): New.
7096         (GPGME_CREATE_WANTPUB): New.
7097         (GPGME_CREATE_WANTSEC): New.
7098         (GPGME_CREATE_FORCE): New.
7099
7100         * tests/run-genkey.c: New.
7101         * tests/Makefile.am (noinst_PROGRAMS): Add it.
7102
7103 2016-09-13  Justus Winter  <justus@g10code.com>
7104
7105         python: Handle slight differences between Python 2 and 3.
7106         + commit 70a3be27a509a1b5ea7372bee93d83c5019427ff
7107         * lang/python/helpers.c (pyDataWriteCb): Handle Python integers being
7108         returned on Python 2.
7109         (pyDataSeekCb): Likewise.
7110         * lang/python/pyme/core.py (Data.__init__): Fix testing for string
7111         argument.
7112         (Data.new_from_filepart): Likewise.
7113         * lang/python/pyme/util.py (is_a_string): New function.
7114         * lang/python/tests/t-encrypt-large.py (read_cb): Force evaluation of
7115         generator.
7116         * lang/python/tests/t-idiomatic.py: Partly skip test on Python 2.
7117         * lang/python/tests/t-verify.py (check_result): Here, the difference
7118         between 2 and 3 really matters.  We cannot change the char *
7119         conversion in Python 2 without breaking all existing applications, and
7120         using bytestrings in Python 3 would be very inconvenient.
7121
7122         python: Fix types and error handling.
7123         + commit 4abff7d750a1abf5b388a4c87ec321fc3e4aed10
7124         * lang/python/helpers.c (_pyme_edit_cb): Drop the const.
7125         (_pyme_assuan_{data,inquire,status}_cb): Fix error handling.
7126
7127 2016-09-12  Justus Winter  <justus@g10code.com>
7128
7129         python: Avoid Python3-only form of super().
7130         + commit c0c50318bd8ef6c8119ad9fdc53ad9087ded4c32
7131         * lang/python/pyme/core.py (GpgmeWrapper.__repr__): Use more
7132         compatible form of super.
7133         (GpgmeWrapper.__setattr__): Likewise.
7134         (Context.__init__): Likewise.
7135         (Data.__init__): Likewise.
7136
7137         python: Make type translation compatible with Python 2.7.
7138         + commit 1d5bbbf1185a0d1f82750f10b69dad3999f7ef4c
7139         * lang/python/gpgme.i: Avoid functions not available in Python 2.7.
7140         * lang/python/helpers.c: Likewise.
7141
7142         python: Avoid hardcoding the interpreter.
7143         + commit 70999d81618b3d3ae6b61a43be2ce703ad284275
7144         * lang/python/setup.py.in: Avoid hardcoding the interpreter.
7145
7146         python: Do not rely on subprocess.DEVNULL.
7147         + commit b48b852a846129914d6c63ec7b47388cdcf6acca
7148         * lang/python/setup.py.in: Do not rely on subprocess.DEVNULL.
7149
7150         tests: Fix version comparison.
7151         + commit dfd99ab50c3bc1d6745b6f682791e4885e8d8a9a
7152         * tests/gpg/t-sig-notation.c: Fix version comparison.
7153
7154         tests: Make signature notation test compatible with older GnuPGs.
7155         + commit a0263ad282d350b548cbbc27e96f196d9217d040
7156         * lang/python/tests/t-sig-notation.py: Only check the critical flag
7157         when GnuPG >= 2.1.13 is used.
7158         * tests/gpg/t-sig-notation.c: Likewise.
7159
7160 2016-09-12  Andre Heinecke  <aheinecke@intevation.de>
7161
7162         qt: Fix some includes.
7163         + commit d480f6b701894f78f3f4016d69c0e3b87939930b
7164         * lang/qt/src/qgpgmekeyformailboxjob.cpp: Explicitly include
7165         QStringList.
7166         * lang/qt/tests/t-support.h, lang/qt/tests/t-support.cpp: Move
7167         includes into impl. Explicitly include QDir.
7168
7169 2016-09-12  Justus Winter  <justus@g10code.com>
7170
7171         qt: Fix tofu test.
7172         + commit 7b9e6ea376d04fb4694ed22369abaae92ce3ec86
7173         * lang/qt/tests/t-tofuinfo.cpp: Adjust member names.
7174
7175 2016-09-07  Werner Koch  <wk@gnupg.org>
7176
7177         core,cpp: Extend the TOFU information.
7178         + commit 120b14783c0312d782dc08ce4949a6209d5ccc7b
7179         * src/gpgme.h.in (struct _gpeme_tofu_info): Rename FIRSTSEEN to
7180         SIGNFIRST and LASTSEEN to SIGNLAST.  Add ENCRFIST and ENCRLAST.
7181         * src/keylist.c (parse_tfs_record): Parse to ENCRFIRST and ENCRLAST.
7182         * src/verify.c (parse_tofu_stats): Ditto.
7183         * tests/run-keylist.c (main): Adjust and print encrypt stats.
7184         * tests/run-verify.c (print_result): Ditto.
7185
7186         * lang/cpp/src/tofuinfo.h (TofuInfo): Rename firstSeen to signFirst
7187         and lastSeen to signLast.  Add encrCount, encrFirst and encrLast.
7188         * lang/cpp/src/tofuinfo.cpp (encrCount, encrFirst, encrLast): New.
7189
7190 2016-09-06  Andre Heinecke  <aheinecke@intevation.de>
7191
7192         tests: Set passphrase cb in t-encrypt-mixed.
7193         + commit 151da95470f174dc770b2111890ad650a1697276
7194         * tests/gpg/t-encrypt-mixed.c (main): Set passphrase cb.
7195
7196         core: Check for gpg version for loopback mode.
7197         + commit e8cb143c8337b122a6790f769ddb0a97c4baccd3
7198         * src/engine-gpg.c (build_argv): Check for version 2.1.0
7199         before adding pinentry-mode.
7200
7201         core: Fix passphrase cb for mixed sym encrypt.
7202         + commit efe7e11dfa2ff911b477ce748292e53e7a50347e
7203         * src/encrypt.c (encrypt_start): Handle SYMMETRIC flag.
7204         * src/encrypt-sign.c (encrypt_sign_start): Ditto.
7205
7206 2016-09-05  Andre Heinecke  <aheinecke@intevation.de>
7207
7208         qt: Clarify comment and strings in tofuinfo test.
7209         + commit ab3fbdbd05cfd1b039bb5b1eb3941fbb4bcf6307
7210         * lang/qt/tests/t-tofuinfo.cpp (testTofuSignCount)
7211         (testTofuKeyList): Ensure distinct messages. Clarify comment.
7212
7213         qt: Enable signcount checks in tofuinfo test.
7214         + commit 965b842fad6ec6fbd8902f3a32119abcd0728fe4
7215         * lang/qt/tests/t-tofuinfo.cpp: Enable checks for signcount.
7216
7217         cpp: Add convenience update function to a key.
7218         + commit 79439e76cc5b302222874a1f9e93665cb12801ac
7219         * lang/cpp/src/key.cpp (Key::update): New.
7220         * lang/cpp/src/key.h: Update accordingly.
7221
7222         cpp: Add ostream operators for key and uid.
7223         + commit 444d85ace0dddff5c511961927052d9946035b00
7224         * lang/cpp/src/key.cpp (Key, UserID): Add ostream operator.
7225         * lang/cpp/src/key.h: Update accordingly.
7226
7227         qt: Add missing header redirection.
7228         + commit 8a39a595eb802b80a6ad756b0ee8939e9733e86f
7229         * lang/qt/src/keyformailboxjob.h,
7230         lang/qt/src/qgpgmekeyformailboxjob.h: Fix includes.
7231
7232         qt: Include cpp before core directory.
7233         + commit e3a4697894cc5a93c295e84bb10c743bc7fdc87e
7234         * lang/qt/src/Makefile.am (AM_CPPFLAGS): Include cpp before core.
7235
7236 2016-08-25  Andre Heinecke  <aheinecke@intevation.de>
7237
7238         qt: Fix 2.1 t-support copy.
7239         + commit 05570bd3d05fb3d7934c1122f0d5ef5fdbaa7974
7240         * lang/qt/src/t-support.cpp (copyKeyring): Fix seckey copy.
7241
7242         qt: Fix and extend TofuInfo test.
7243         + commit 9fc72e928bf2cf239bd3b0facdf33ceb1acc975b
7244         * lang/qt/tests/t-tofuinfo.cpp: Delete executed jobs.
7245         (testTofuKeyList): New.
7246         (testSupported): Activate for 2.1.16
7247         (signAndVerify): Disable sigcount tests.
7248
7249         qt: Fix keyring copy in tests.
7250         + commit c875f07e559a7c53fc173b4c3f9f5715f3fbb8f8
7251         * lang/qt/test/t-encrypt.cpp,
7252         lang/qt/test/t-tofuinfo.cpp: Assert on copy failure.
7253         * lang/qt/test/t-support.cpp (copyKeyrings): Fix path.
7254
7255         qt: Add generic flag support for keylistjobs.
7256         + commit 4e37d0bb1255558ce20e1a5ac83a2d06a37f8b0b
7257         * lang/qt/src/keylistjob.h (addMode): New.
7258         * lang/qt/src/qgpgmekeylistjob.h (addMode): New.
7259         * lang/qt/src/qgpgmekeylistjob.cpp (addMode: New.
7260
7261         qt: Ensure that current src dir is included first.
7262         + commit 5a92cc96da183ebb19867a2a910f53ba41e76ae9
7263         * lang/qt/src/Makefile.am: Reorder include directives.
7264
7265         cpp: Add WithTofu Keylist Mode.
7266         + commit f311b92ceaedb12c9e00a722b6b47bbe6b50871e
7267         * lang/cpp/src/context.cpp: Handle WithTofu.
7268         * lang/cpp/src/global.h (KeyListMode): Add WithTofu.
7269         * lang/cpp/src/util.h (add_to_gpgme_keylist_mode_t): Handle WithTofu.
7270
7271         qt: Fix tofuinfo test when gpg is gpg2.
7272         + commit 053e6e0a7b8ea38ad9d4160c84814867bbb9fcf6
7273         * lang/qt/tests/t-support.cpp (QGpgMETest::copyKeyrings): New helper.
7274         * lang/qt/tests/t-support.h: Declare.
7275         * lang/qt/tests/t-encrypt.cpp: use it
7276         * lang/qt/tests/t-tofuinbo.cpp: ditto.
7277
7278         qt: Remove unused variable in test.
7279         + commit f08904b810d77d87c66d9c7875c4e7f2bde5dd92
7280         * t-wkspublish.cpp (testWKSPublishCreate): Remove context.
7281
7282         qt: Add test for wkspublishjob.
7283         + commit df04b232b8897f030534f8c3fbc87064edf8ae7d
7284         * lang/qt/tests/t-wkspublish.cpp: New.
7285         * lang/qt/tests/Makefile.am: Update accordingly.
7286
7287         qt: Add WKSPublishJob.
7288         + commit 94420b05775122b25885c66ac67f77c59d01644d
7289         * lang/qt/src/Makefile.am: Add new files.
7290         * lang/qt/src/job.cpp: Include moc / subclass stub.
7291         * lang/qt/src/protocol.h: Add virtual for new job.
7292         * lang/qt/src/protocol_p.h: Add job.
7293         * lang/qt/src/wkspublishjob.h: Interface for WKSPublishJob.
7294         * lang/qt/src/qgpgmewkspublishjob.cpp,
7295         lang/qt/src/qgpgmewkspublishjob.h: New.
7296
7297         Cpp: Change firstSeen / lastSeen return values.
7298         + commit de7b67f9b2e6bd43a036fa0bcc6a8ca4f5b10986
7299         * lang/cpp/src/tofuinfo.cpp,
7300         lang/cpp/src/tofuinfo.h (TofuInfo::firstSeen, TofuInfo::lastSeen):
7301         Change return values to unsigned long and update doc.
7302
7303         Cpp: Add wrapper for gpgme_get_dirinfo.
7304         + commit abcd9a283ee8f81870622c8e1dbdc7aad38c0358
7305         * lang/cpp/src/context.cpp (dirInfo): New.
7306         * lang/cpp/src/global.h (dirInfo): New.
7307
7308         Cpp: Add support for spawn engine.
7309         + commit ece8b02a839d6fc566fea7b6e59fabff164f6cf5
7310         * lang/cpp/src/context.cpp (Context::spawn, Context::spawnAsync): New.
7311         * lang/cpp/src/context.h: Add prototypes.
7312         (SpawnFlags): New.
7313         * lang/cpp/src/global.h (SpawnEngine): Added.
7314
7315 2016-08-25  Werner Koch  <wk@gnupg.org>
7316
7317         core: Add GPGME_KEYLIST_MODE_WITH_TOFU.
7318         + commit 9ee103957e4136337b92d238283f8ef30fd4a7c5
7319         * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_TOFU): New.
7320         * src/engine-gpg.c (gpg_keylist_build_options): Use that.
7321         * src/keylist.c: Include limits.h.
7322         (parse_tfs_record): New.
7323         (keylist_colon_handler): Support TFS record.
7324         * tests/run-keylist.c: Include time.h.
7325         (isotimestr): New.
7326         (main): Add option --tofu.  Print TOFU info.
7327         * tests/run-verify.c: Include time.h.
7328         (isotimestr): New.
7329         (print_result): Use isotimestr for TOFU dates.
7330
7331 2016-08-24  Werner Koch  <wk@gnupg.org>
7332
7333         core: Adjust for TOFU_STATS change in gnupg 2.1.16.
7334         + commit 38798fee5b539d6153a8a7856152959412ee59b5
7335         * src/gpgme.h.in (_gpgme_tofu_info): Change 'firstseen' and 'lastseen'
7336         to a timestamp value.
7337         * src/verify.c (parse_tofu_stats): Do not cap these values at UINT_MAX.
7338
7339         core: Set the 'encrcount' field in gpgme_tofu_info_t.
7340         + commit 1eefc2d43c0adb2ce516f8e3509ace2fb562e401
7341         * src/verify.c (parse_tofu_stats): Set ENCRCOUNT field.
7342
7343         cpp: Get rid of AssuanResult due to its deprecation.
7344         + commit e20b0f0201543834f15c5d50cd3b2ece69a35d70
7345         * lang/cpp/src/assuanresult.cpp: Remove.
7346         * lang/cpp/src/assuanresult.h: Remove.
7347         * lang/cpp/src/Makefile.am: Remove these files.
7348         * lang/cpp/src/context.cpp: Remove header assuanresult.h
7349         (assuanTransact): Change return type to Error.  Use
7350         gpgme_op_assuan_transact_ext.
7351         (startAssuanTransaction): Change return type to Error.
7352         (assuanResult): Remove
7353         * lang/cpp/src/context.h (assuanResult): Adjust for changes.
7354
7355 2016-08-24  Andre Heinecke  <aheinecke@intevation.de>
7356
7357         Qt: Adapt (disabled) tofuinfo test to new API.
7358         + commit d2e40fb7adf667f3e2d2457ee4c646ea4d4d88b3
7359         * lang/qt/tests/t-tofuinfo.cpp: Switch to UID based API.
7360
7361         Cpp: Add Key to signature.
7362         + commit 7c5a4974b71c30e824cbfcb3a0a70064e5ed5adb
7363         * lang/cpp/src/verificationresult.cpp,
7364         lang/cpp/src/verificationresult.h (Signature::key): New.
7365
7366         Cpp: Use fpr field for primaryFingerprint.
7367         + commit 40ea1c85773cbe324557c34b3a4282f609fcdaf6
7368         * lang/cpp/src/key.cpp (Key::primaryFingerprint): Return
7369         fpr value if available.
7370
7371 2016-08-23  Andre Heinecke  <aheinecke@intevation.de>
7372
7373         Cpp: Move tofuinfo from signature to userid.
7374         + commit 799b168243e6499ac01bf59e0656547f353a2589
7375         * lang/cpp/src/key.cpp (UserID::tofuInfo): New.
7376         * lang/cpp/src/key.h: Update accordingly.
7377         * lang/cpp/src/tofuinfo.cpp: Remove dropped fields.
7378         * lang/cpp/src/tofuinfo.h: Update accordingly.
7379         * lang/cpp/src/verificationresult.cpp,
7380         lang/cpp/src/verificationresult.h: Remove tofu info.
7381         * lang/qt/tests/t-tofuinfo.cpp: Disable for now.
7382
7383 2016-08-23  Werner Koch  <wk@gnupg.org>
7384
7385         core: Put the protocol into a TOFU created key object.
7386         + commit 2972c44bd7e97b2169dea9c4a49d9754afdae3f0
7387         * src/verify.c (parse_tofu_user): Add arg 'protocol' and store it in
7388         the KEY.
7389         (_gpgme_verify_status_handler): Pass protocol.
7390
7391         core: Change the way TOFU information are represented.
7392         + commit be4ff75d7d5ac6ed15feb245ef3cec59b4bad561
7393         * src/gpgme.h.in (struct _gpgme_signature): Remove field 'tofu'.  Add
7394         field 'key'.
7395         (struct _gpgme_key): Add field 'fpr'.
7396         (struct _gpgme_user_id): Add field 'tofu'.
7397         (struct _gpgme_tofu_info): Remove fields 'address' and 'fpr'.
7398         * src/key.c (gpgme_key_unref): Release TOFU and FPR.
7399         * src/keylist.c (keylist_colon_handler): Store the fingerprint of the
7400         first subkey also in KEY.
7401         * src/verify.c (release_tofu_info): Remove.
7402         (release_op_data): Release KEY.
7403         (parse_tofu_user): Rewrite for new data structure.
7404         (parse_tofu_stats): Ditto.
7405         (parse_tofu_stats_long): Ditto.
7406         * tests/run-verify.c (print_result): Ditto.
7407         * tests/run-keylist.c (main): Print more fields.
7408
7409         core: Extend gpgme_user_id_t with 'address'.
7410         + commit 3955dce06e9d056599e5ec7d40301e66b9305195
7411         * src/mbox-util.c, src/mbox-util.h: Adjust for use in gpgme.
7412         * src/Makefile.am (main_sources): Add mbox-util.
7413         * src/key.c (_gpgme_key_append_name): Set 'address' field of uid.
7414         (gpgme_key_unref): Free it.
7415
7416 2016-08-22  Werner Koch  <wk@gnupg.org>
7417
7418         core: New code for parsing mail addresses.
7419         + commit 26c5ba528ce1411d96655952ec48359105695c0f
7420         * src/mbox-util.c: New.
7421         * src/mbox-util.h: New.
7422
7423         core: Add new items for gpgme_get_dirinfo.
7424         + commit 24e61984c9532924135c57b8ff98489a2d3bd4a3
7425         * src/dirinfo.c (WANT_SYSCONFDIR, WANT_LIBEXECDIR, WANT_LIBDIR): New.
7426         (WANT_DATADIR, WANT_LCOALEDIR, WANT_AGENT_SSH_SOCKET): New
7427         (WANT_DIRMNGR_SOCKET): New.
7428         (dirinfo): Add fields 'sysconfdir', 'bindir', 'libexecdir', 'libdir',
7429         'datadir', 'localedir', 'agent_ssh_socket', and 'dirmngr_socket'.
7430         (parse_output): Set these fields.
7431         (get_gpgconf_item): Return them.
7432         (gpgme_get_dirinfo): Likewise.
7433
7434         core: Base gpgme_get_dirinfo(uiserver-socket) on the socket dir.
7435         + commit c9e7dcb100d807583d8e312da459561138231376
7436         * src/dirinfo.c (dirname_len): New.
7437         (parse_output): Change computation of UISRV_SOCKET.
7438
7439 2016-08-21  Werner Koch  <wk@gnupg.org>
7440
7441         core: New commands --lang and --have-lang for gpgme-config.
7442         + commit 3e60788810f93cfcd7f08e5882aff32ed7b6f831
7443         * configure.ac (GPGME_CONFIG_AVAIL_LANG): New ac_subst.
7444         * src/gpgme-config.in (avail_lang): Add commands --lang and
7445         --have-lang.
7446
7447 2016-08-18  Andre Heinecke  <aheinecke@intevation.de>
7448
7449         core: Remove (now) useless diagnostic.
7450         + commit 30f156280f18500ee522db58aecd40711c8af685
7451         * src/w32-io.c(_gpgme_io_spawn): Remove spawnhelper not found
7452         diagnostic.
7453
7454         core: Fail loudly in case w32 spawner not found.
7455         + commit 9cf983b0199950c8f8cccee2cb8e45aafcba9fd1
7456         * src/w32-io.c (_gpgme_io_spawn): Show a message box in
7457         case gpgme-w32spawn.exe not found.
7458
7459 2016-08-17  Andre Heinecke  <aheinecke@intevation.de>
7460
7461         Cpp: Fix some pedantic warnings.
7462         + commit 64194b0f8df1afe6135cd119fd3216fc8db68033
7463         * lang/cpp/src/context.cpp,
7464         lang/cpp/src/context.h (Context::getKeysFromRecipients): Remove
7465         ignored / invalid const qualifier.
7466         * lang/cpp/src/result.h: Don't shadow error function in ctor.
7467
7468 2016-08-16  Werner Koch  <wk@gnupg.org>
7469
7470         core: New global flag "require-gnupg".
7471         + commit 8c09dd9989bcd434a8cb5997770cb8414b96bd5c
7472         * src/gpgme.c (gpgme_set_global_flag): Add flag.
7473         * src/engine.c (engine_minimal_version): New variable.
7474         (_gpgme_set_engine_minimal_version): New function.
7475         (gpgme_get_engine_info): Check that flag.
7476
7477         * tests/run-keylist.c (main): New option --require-gnupg.
7478
7479         core: Simplify setting of dummy versions.
7480         + commit b7b0e7b5bfefd51c8092ea54f262b18aebf78128
7481         * src/engine.c (_gpgme_engine_info_release): Do not assert but free
7482         FILE_NAME.
7483         (gpgme_get_engine_info): Provide default for VERSION and REQ_VERSION.
7484         Use calloc instead of malloc.
7485         (_gpgme_set_engine_info): Ditto.
7486         * src/engine-assuan.c (llass_get_version): Return NULL.
7487         (llass_get_req_version): Ditto.
7488         * src/engine-spawn.c (engspawn_get_version): Ditto.
7489         (engspawn_get_req_version): Ditto.
7490         * src/engine-uiserver.c (uiserver_get_version): Ditto.
7491         (uiserver_get_req_version): Ditto.
7492
7493 2016-08-12  Andre Heinecke  <aheinecke@intevation.de>
7494
7495         Qt: Add test for progress signal of encryptjob.
7496         + commit 391e55411cda11446ca9de4dd0dc2b54d3e6fff5
7497         * lang/qt/tests/t-encrypt.cpp (testProgress): New.
7498
7499         Cpp: Provide size-hint for seekable and mem data.
7500         + commit df7bbf5a66576a5a320b54c8f6ad52bc84f0e833
7501         * lang/cpp/src/data.cpp (GpgME::Data::Data): Set size-hint for
7502         mem and DataProvider based Data.
7503
7504 2016-08-12  Werner Koch  <wk@gnupg.org>
7505
7506         core: Make use of the "size-hint" in engine-gpg.
7507         + commit fe1e8e71aa18b4ac6471292b2894b8859f42f7c8
7508         * src/engine-gpg.c: Include data.h.
7509         (add_input_size_hint): New.
7510         (gpg_decrypt, gpg_encrypt, gpg_encrypt_sign, gpg_sign)
7511         (gpg_verify): Call new function,
7512
7513         * tests/run-encrypt.c (status_cb): Print to stderr.
7514         (progress_cb): New.o
7515         (main): Add option --progress.  Print full-status lines.  Provide a
7516         size for the input data.
7517
7518         core: Add gpgme_data_set_flag to add more meta data to data objects.
7519         + commit 293d1736911fd5e77b8cec305168b35b2420c612
7520         * src/gpgme.h.in (gpgme_data_set_flag): New public function.
7521         * src/data.c (gpgme_data_set_flag): New.
7522         (_gpgme_data_get_size_hint): New.
7523         * src/data.h (strucy gpgme_data): Add field 'size_hint'.
7524         * src/gpgme.def, src/libgpgme.vers: Add new function.
7525         * src/conversion.c (_gpgme_string_to_off): New.
7526
7527 2016-08-12  Andre Heinecke  <aheinecke@intevation.de>
7528
7529         Qt: Fix defaultkeygenerationjob build.
7530         + commit 75c974c4e0a31981325f7d151bd13f2523f5df20
7531         * lang/qt/src/defaultkeygenerationjob.cpp: Include moc.
7532
7533 2016-08-11  Andre Heinecke  <aheinecke@intevation.de>
7534
7535         Qt: Add DefaultKeyGenerationJob.
7536         + commit 105f5446e69db00291164397cf0d8e68374cf420
7537         * lang/qt/src/defaultkeygenerationjob.cpp,
7538         lang/qt/src/defaultkeygenerationjob.h: New.
7539         * lang/qt/src/Makefile.am: Update accordingly.
7540
7541         Qt: Ensure all public classes are exported.
7542         + commit 59e2251a083b0ed61b3ab6d47015cef7cc6ceb05
7543         * src/abstractimportjob.h,
7544         src/cryptoconfig.h,
7545         src/deletejob.h,
7546         src/exportjob.h,
7547         src/importfromkeyserverjob.h,
7548         src/importjob.h,
7549         src/keygenerationjob.h,
7550         src/keylistjob.h,
7551         src/listallkeysjob.h,
7552         src/refreshkeysjob.h,
7553         src/signencryptjob.h,
7554         src/specialjob.h,
7555         src/verifydetachedjob.h: Export classes.
7556
7557         Qt: Add KeyForMailboxJob.
7558         + commit 8c5abc8d932affab4bc79a85e3f98f6f6b982ae8
7559         * lang/qt/src/job.cpp: Include moc and make subclass.
7560         * lang/qt/src/keyformailboxjob.h,
7561         lang/qt/src/qgpgmekeyformailboxjob.cpp,
7562         lang/qt/src/qgpgmekeyformailboxjob.h: New.
7563         * lang/qt/tests/run-keyformailboxjob.cpp: New manual test.
7564         * lang/qt/tests/Makefile.am: Add run-keyformailboxjob.
7565         * lang/qt/src/Makefile.am: Update accordingly.
7566         * lang/qt/src/protocol.h, lang/qt/src/protocol_p.h: Add
7567         keyformailboxjob.
7568
7569 2016-08-10  Werner Koch  <wk@gnupg.org>
7570
7571         doc: Get rid of version.texi.
7572         + commit b7d99e02188b7907b09fec3032fc1fd82fc2668a
7573         * configure.ac (CC_FOR_BUILD): New.
7574         * doc/mkdefsinc.c: New.  Taken from GnuPG and modified for gpgme.
7575         * doc/Makefile.am (EXTRA_DIST): Add defsincdate and mkdefsinc.c
7576         (BUILT_SOURCES): new.
7577         (gpgme.texi): New dependency.
7578         (mkdefsinc, defsincdate, defs.inc): New rules.
7579         (dist-hook): New.
7580         * doc/gpgme.texi: Include defs.inc.  Remove version.texi.
7581
7582         build: Declare all languages for make dist.
7583         + commit 48691db97b759d67aa7b49c36bb704b5806ade2e
7584         * lang/Makefile.am (DIST_SUBDIRS): New.
7585
7586         core: Do not identify PNG files as PGP signatures.
7587         + commit a9168185ba97aa1d827315cd8017899bf904aded
7588         * src/data-identify.c (next_openpgp_packet): Blacklist PNG files.
7589
7590 2016-08-10  Andre Heinecke  <aheinecke@intevation.de>
7591
7592         Cpp: Handle empty recipients consistently.
7593         + commit 09667a6006986a782af98ca1de4d6521e1b8f353
7594         * lang/cpp/src/context.cpp (Context::getKeysFromRecipients):
7595         New helper.
7596         (Context::encrypt, Context::startEncryption, Context::signAndEncrypt)
7597         (Context::startCombinedSigningAndEncryption): Use new helper.
7598         * lang/cpp/src/context.h (Context::getKeysFromRecipients): Add
7599         as private helper.
7600
7601         core: Handle ENCRYPT_SYMMETRIC also for sig & enc.
7602         + commit b602d8bc7bd726afb52dc60cc07e4609e88d4511
7603         * src/engine-gpg.c (gpg_encrypt_sign): Handle ENCRYPT_SYMMETRIC
7604         flag.
7605
7606         Qt: Remove unused variable.
7607         + commit d467018ce36f5be36751267c3b6079e8c1ee5d8a
7608         * lang/qt/src/qgpgmerefreshkeysjob.cpp (slotStatus): Remove
7609         unused variable typ.
7610
7611         Qt: Create TestPassphraseProvider on stack.
7612         + commit a27d7755d071aad42efc2aa4ea3899ba7b17f8bf
7613         * lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp: Create
7614         TestPassphraseProvider on stack.
7615
7616         Cpp: Clarify ownership of provider classes.
7617         + commit 21d5e71d486da8e37cf53f2b968646b39a6daa72
7618         * lang/cpp/src/context.h: Note that the context does not take
7619         ownership of providers.
7620
7621 2016-08-10  Justus Winter  <justus@g10code.com>
7622
7623         tests: Fix memory leak.
7624         + commit 04f994d5db6db0575dc73c2356c7d51424e2d9fe
7625         * tests/gpg/t-encrypt-mixed.c (main): Free 'text2'.
7626
7627 2016-08-10  Andre Heinecke  <aheinecke@intevation.de>
7628
7629         core: Ensure err is initalized in gpg_encrypt.
7630         + commit 270887309f4b673b13e58c29ea3989c56989590e
7631         * src/engine-gpg.c (gpg_encrypt): Initialize err.
7632
7633         Qt: Fix t-keylist moc include.
7634         + commit 0c222e1b3cabe1a8b84a2877420cdd5df56171b5
7635         * lang/qt/tests/t-keylist.cpp: Don't include t-support.moc
7636
7637 2016-08-09  Andre Heinecke  <aheinecke@intevation.de>
7638
7639         Qt: Clean up debug output in tests.
7640         + commit 969f223d8de21d7c8b0f7646bbf8dbb5864e8d03
7641         * lang/qt/tests/t-support.cpp: Remove accidentally commited
7642         debug output.
7643
7644         Qt: Add encryption test and refactor testsuite.
7645         + commit f209ec8f581ae597b37f2e3a5e452e4b53b2d4c7
7646         * lang/qt/tests/Makefile.am: Add t-encrypt and t-support.
7647         * lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.c (QGpgMETest):
7648         New. Class to handle common cleanup / init.
7649         * lang/qt/tests/t-keylist.cpp,
7650         lang/qt/tests/t-keylocate.cpp,
7651         lang/qt/tests/t-ownertrust.cpp,
7652         lang/qt/tests/t-tofuinfo.cpp: Inherit QGpgMETest.
7653         * lang/qt/tests/t-encrypt.cpp: New. Test Symetric and Asymectric
7654         encryption. Mixed encryption test is disabled.
7655
7656         Qt: Add support for EncryptJobs with generic flags.
7657         + commit 34b456c3fb9e59788b07a75441da482bb28bda87
7658         * lang/qt/src/encryptjob.h, lang/qt/src/signencryptjob.h,
7659         lang/qt/src/qgpgmeencryptjob.h, lang/qt/src/qgpgmeencryptjob.cpp,
7660         lang/qt/src/qgpgmesignencryptjob.cpp,
7661         lang/qt/src/qgpgmeencryptjob.cpp: Add start and exec overloads
7662         that accept generic EncryptFlags.
7663
7664         Cpp: Add support for all EncryptionFlags.
7665         + commit 17372393798ea5e2d6838f3dd1e001dd4a66c941
7666         * lang/cpp/src/context.h (EncryptionFlags): Extend.
7667         * lang/cpp/src/context.cpp (encryptflags2encryptflags): Ditto.
7668
7669         Cpp: Fix simple symmetric encryption.
7670         + commit bf776ce94cf454f1b3f1645b1cde09cd1c54324b
7671         * lang/cpp/src/context.cpp (Context::encrypt): If no recipients
7672         are provided encrypt with NULL and not an empty array.
7673
7674         core: Add support for mixed symmetric and asym enc.
7675         + commit 3d2f027d0f40e7ec4ab48cee89ff0ee10b423566
7676         * src/gpgme.h.in (gpgme_encrypt_flags_t): New flag
7677         GPGME_ENCRYPT_SYMMETRIC.
7678         * src/engine-gpg.c (gpg_encrypt): Also add --symmetric if the flag
7679         is given.
7680         * NEWS: Mention new flag.
7681         * tests/run-encrypt.c (show_usage): Extend for --symmetric.
7682         (main): Handle --symmetric.
7683         (main): Set passphrase_cb in loopback mode.
7684         (main): Fix encrypt call if no recipients are given.
7685         * tests/gpg/t-encrypt-mixed.c: New.
7686         * tests/gpg/Makefile.am (c_tests): Add new test.
7687         * doc/gpgme.texi: Document new flag.
7688
7689 2016-08-08  Werner Koch  <wk@gnupg.org>
7690
7691         core: Let GPGME_PROTOCOL_ASSUAN pass Assuan comments through.
7692         + commit b5e16b036f0045524a583d8a366d8a3366fc0005
7693         * src/engine-assuan.c (llass_new): Set ASSUAN_CONVEY_COMMENTS,
7694
7695 2016-08-08  Andre Heinecke  <aheinecke@intevation.de>
7696
7697         Prepend LD_LIBRARY_PATH for python tests.
7698         + commit ab6f66d676581cb497e581e4af40e2fe5bff507b
7699         * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Prepend path
7700         instead of setting the value.
7701
7702 2016-08-05  Justus Winter  <justus@g10code.com>
7703
7704         python: Clean up and modernize examples.
7705         + commit 2a613e87156b23c4aa6aa5ce38505cb285de6a18
7706         * lang/python/examples/Examples.rst: Delete file.
7707         * lang/python/examples/t-edit.py: Likewise.  This is actually a test
7708         case and has been moved to 'tests'.
7709         * lang/python/examples/assuan.py: New file.
7710         * lang/python/examples/decryption-filter.py: Likewise.
7711         * lang/python/examples/delkey.py: Modernize.
7712         * lang/python/examples/encrypt-to-all.py: Likewise.
7713         * lang/python/examples/exportimport.py: Likewise.
7714         * lang/python/examples/genkey.py: Likewise.
7715         * lang/python/examples/inter-edit.py: Likewise.
7716         * lang/python/examples/sign.py: Likewise.
7717         * lang/python/examples/signverify.py: Likewise.
7718         * lang/python/examples/simple.py: Likewise.
7719         * lang/python/examples/testCMSgetkey.py: Likewise.
7720         * lang/python/examples/verifydetails.py: Likewise.
7721
7722 2016-08-04  Werner Koch  <wk@gnupg.org>
7723
7724         core: Extend gpgme_subkey_t to carry the keygrip.
7725         + commit 6f3dc66634e30d86aa6250c4ac22f9b8f7ec1be9
7726         * src/gpgme.h.in (struct _gpgme_subkey): Add file 'keygrip'.
7727         * src/key.c (gpgme_key_unref): Free KEYGRIP.
7728         * src/keylist.c (keylist_colon_handler): Parse GRP records.
7729         * src/engine-gpg.c (gpg_keylist_build_options): Do not use
7730         --with-fingerprint options for gpg versions >= 2.1.15.
7731
7732         * tests/run-keylist.c (main): Print subkeys and keygrips.
7733
7734 2016-08-03  Justus Winter  <justus@g10code.com>
7735
7736         python: Add a nicer interface to list keys.
7737         + commit 56e26b54da9f16961209275d7a61883d3ea898ca
7738         * lang/python/pyme/core.py (Context.keylist): New method.
7739         * lang/python/tests/t-keylist.py: Test new method.
7740
7741 2016-08-02  Justus Winter  <justus@g10code.com>
7742
7743         python: Add a flag identifying in-tree builds.
7744         + commit 4c8265d32ddff5960a464b8d4e8d7d2258495b2e
7745         * lang/python/helpers.c (pyme_in_tree_build): New variable.
7746         * lang/python/helpers.h (pyme_in_tree_build): New declaration.
7747         * lang/python/pyme/version.py.in (in_tree_build): New variable.
7748         * lang/python/setup.py.in: Rework macro handling, set 'IN_TREE_BUILD'
7749         as appropriate.
7750
7751         python: Fix build system integration.
7752         + commit 0bd7d8c1977183abc414e11aafa26a4f834ca2a5
7753         * lang/python/Makefile.am: Be more careful when cleaning the build
7754         directory, we must not delete the generated file 'pyme/version.py'.
7755
7756         doc: Document the Assuan protocol.
7757         + commit 135185b7ef2225aa5e8c54a6cf1265d3e6cbbe48
7758         * doc/gpgme.texi: Document the Assuan protocol.
7759
7760 2016-07-28  Justus Winter  <justus@g10code.com>
7761
7762         python: Fix out-of-tree build.
7763         + commit 4e728de8421e2ade2061786aaebcdae3f60da3b8
7764         * lang/python/MANIFEST.in: Add 'private.h'.
7765
7766         python: Improve error handling.
7767         + commit 5a7c7a86f7e8eaf10e37138617a2d838f9d4466f
7768         * lang/python/pyme/core.py (Context.protocol): Check that the engine
7769         is usable before setting the protocol.
7770         (Context._errorcheck): Add missing functions.
7771
7772         src: Fix dummy engine versions.
7773         + commit b9e6eacd06ffeb36854c208aa4325cff3e3dfbbe
7774         Previously, 'gpgme_engine_check_version' failed for these protocols
7775         because the version parser failed to parse the dummy versions.
7776
7777         * src/engine-assuan.c (llass_get_version): Use a version triple that
7778         the parser can understand.
7779         (llass_get_req_version): Likewise.
7780         * src/engine-spawn.c (engspawn_get_version): Likewise.
7781         (engspawn_get_req_version): Likewise.
7782         * src/engine-uiserver.c (uiserver_get_version): Likewise.
7783         (uiserver_get_req_version): Likewise.
7784
7785         python: Drop superfluous imports and trim public interface.
7786         + commit 2ff58fcbd5c060dac3a7feec478819d2c5a164ec
7787         * lang/python/pyme/__init__.py: Avoid leaking low-level 'gpgme', make
7788         sure the main module looks nice and tidy, appease pyflakes.
7789         * lang/python/pyme/errors.py: Appease pyflakes.
7790         * lang/python/pyme/util.py: Avoid leaking low-level 'gpgme' into the
7791         module namespace.
7792         * lang/python/pyme/version.py.in: Likewise.
7793         * lang/python/tests/t-keylist.py: Drop superfluous imports.
7794         * lang/python/tests/t-sig-notation.py: Likewise.
7795         * lang/python/tests/t-sign.py: Likewise.
7796         * lang/python/tests/t-signers.py: Likewise.
7797
7798         python: Rename compiled SWIG module.
7799         + commit 2f754440f28e8f81babdf7efa6186edbc8ad99fd
7800         Avoid the name pygpgme, as this is the name of another popular Python
7801         binding for GPGME.
7802
7803         This commit renames the compiled Python module produced by SWIG.
7804
7805         * lang/python/Makefile.am: Rename the compiled Python module.
7806         * lang/python/gpgme.i: Likewise.
7807         * lang/python/pyme/core.py: Likewise.
7808         * lang/python/pyme/errors.py: Likewise.
7809         * lang/python/pyme/util.py: Likewise.
7810         * lang/python/pyme/version.py.in: Likewise.
7811         * lang/python/setup.py.in: Likewise.
7812
7813         python: Rename exported functions.
7814         + commit b5aa05c3b261c3846ebbcf76e7505cff5459f918
7815         Avoid the name pygpgme, as this is the name of another popular Python
7816         binding for GPGME.
7817
7818         This commit renames all functions that are exported to the Python
7819         world.
7820
7821         * lang/python/helpers.c: Rename all exported functions.
7822         * lang/python/helpers.h: Likewise.
7823         * lang/python/pyme/core.py: Likewise.
7824
7825         python: Rename private functions.
7826         + commit 1d2f22aae668ce136cacd254875e118dc1faa6a2
7827         Avoid the name pygpgme, as this is the name of another popular Python
7828         binding for GPGME.
7829
7830         This commit renames all functions that are not exported to the Python
7831         world.
7832
7833         * lang/python/gpgme.i: Rename all private functions.
7834         * lang/python/helpers.c: Likewise.
7835         * lang/python/helpers.h: Likewise.
7836         * lang/python/private.h: Likewise.  Also move the SWIG runtime helper
7837         prototypes here.
7838
7839         python: Support the Assuan engine.
7840         + commit de69fa496c09386d5e99747670d6887cf52dd09e
7841         * lang/python/gpgme.i: Add typemaps for the Assuan protocol callbacks.
7842         * lang/python/helpers.c (_pyme_assuan_{data,inquire,status}_cb): New
7843         functions.
7844         * lang/python/private.h (_pyme_assuan_{data,inquire,status}_cb): New
7845         prototypes.
7846         * lang/python/pyme/core.py (Context.assuan_transact): New method.
7847         * lang/python/pyme/util.py (percent_escape): New function.
7848         * lang/python/tests/Makefile.am (py_tests): Add new test.
7849         * lang/python/tests/t-protocol-assuan.py: New file.
7850
7851         python: Improve engine information handling.
7852         + commit 355d7072863ac1f0f725e77141a59f3ed8a5e4af
7853         * lang/python/gpgme.i (gpgme_engine_info_t): Wrap engine infos.
7854         * lang/python/pyme/core.py (Context.engine_info): New property.
7855         (Context.{g,s}et_engine_info): Improve docstrings.
7856         * lang/python/pyme/results.py (EngineInfo): New class.
7857
7858         python: Add accessors for the protocol.
7859         + commit 78f7bf4dcf75206faae5776c2ee4166628313532
7860         * lang/python/pyme/core.py (Context.__init__): Add 'protocol'
7861         parameter.
7862         (Context.protocol): New accessors.
7863
7864         python: Expose less functions to the Python world.
7865         + commit 3d4dc3f0218234a27103bdb6f93b17c0703b71a2
7866         * lang/python/Makefile.am (EXTRA_DIST, COPY_FILES): Add new file.
7867         * lang/python/gpgme.i: Include new file and add comments.
7868         * lang/python/helpers.c: Include new file.
7869         * lang/python/helpers.h: Move functions we do not need to expose...
7870         * lang/python/private.h: ... here.
7871
7872 2016-07-19  Ben Kibbey  <bjk@luxsci.net>
7873
7874         Fix including nil bytes in keylist output.
7875         + commit 6a7ee33abd5059f5ae2f70a7dd9f610c16552f8e
7876         * src/gpgme-tool.c (cmd_keylist,gt_result): use strlen().
7877
7878 2016-07-15  Justus Winter  <justus@g10code.com>
7879
7880         python: Make GPGME's version easily accessible.
7881         + commit e545ca3f682b615ce447c186a2c73489a32b0592
7882         * lang/python/pyme/version.py.in (gpgme_versionstr): New variable.
7883
7884         python: Add an idiomatic interface.
7885         + commit 1f318b7aaaa77672fab117d54fe75221780df83c
7886         * configure.ac: Bump required Python version.
7887         * lang/python/pyme/__init__.py: Update docstring.  Import Context and
7888         Data.
7889         * lang/python/pyme/core.py (Context.encrypt): New function.
7890         (Context.decrypt): Likewise.
7891         (Context.sign): Likewise.
7892         (Context.verify): Likewise.
7893         * lang/python/pyme/errors.py: Add new errors.
7894         * lang/python/pyme/util.py (process_constants): Rework and return the
7895         inserted keys.
7896         * lang/python/tests/Makefile.am (EXTRA_DIST): Add new keys.
7897         * lang/python/tests/encrypt-only.asc: New file.
7898         * lang/python/tests/sign-only.asc: Likewise.
7899         * lang/python/tests/initial.py: Mark key 'Alpha' as trusted, import
7900         new keys.
7901         * lang/python/tests/support.py: Add fingerprints of known keys.
7902         (in_srcdir): New function.
7903         (print_data): Handle bytes too.
7904         (mark_key_trusted): New function.
7905         * lang/python/tests/t-decrypt-verify.py: Adjust test.  Test idiomatic
7906         interface.
7907         * lang/python/tests/t-decrypt.py: Test idiomatic interface.
7908         * lang/python/tests/t-encrypt-sign.py: Likewise.
7909         * lang/python/tests/t-encrypt-sym.py: Likewise.
7910         * lang/python/tests/t-encrypt.py: Likewise.
7911         * lang/python/tests/t-idiomatic.py: Simplify.
7912         * lang/python/tests/t-keylist.py: Adjust to newly trusted key.
7913         * lang/python/tests/t-sign.py: Likewise.  Test idiomatic interface.
7914         * lang/python/tests/t-signers.py: Likewise.
7915         * lang/python/tests/t-verify.py: Likewise.
7916
7917 2016-07-14  Andre Heinecke  <aheinecke@intevation.de>
7918
7919         Qt: Disable keylocate test for gnupg < 2.0.10.
7920         + commit d2f2cbd297c4d2f2c3264ecc3ffb7a2b3a70bd55
7921         * lang/qt/tests/t-keylocate.cpp: Disable test for gnupg < 2.0.10
7922
7923         Cpp: Add EngineInfo::Version class.
7924         + commit 41de1ab904eaddffb2de17b1de8ef41e462daabe
7925         * lang/cpp/src/engineinfo.cpp (EngineInfo::engineVersion): New.
7926         * lang/cpp/src/engineinfo.h (EngineInfo::engineVersion): Declare.
7927         (EngineInfo::Version): Small helper to work with versions.
7928
7929         Qt: Fix usage of ignore-invalid-option in tests.
7930         + commit e7f4c364732660c6cda25720b7dbc5b1c917e368
7931         * Makefile.am (pubring-stamp): Fix config.
7932
7933         Qt: Fix tests if gpg2 is gpg.
7934         + commit e4c0645c1eea9380d80a20895eb83c9dd7228776
7935         * lang/qt/tests/Makefile.am (pubring-stamp): Loopback and provide
7936         passphrase on command line when importing.
7937
7938 2016-07-14  Justus Winter  <justus@g10code.com>
7939
7940         python: Fix test.
7941         + commit fddcc62abd57cb04e84861abd3991c7d529c2464
7942         * lang/python/tests/t-keylist.py: Do not assume key alpha is trusted
7943         yet.
7944
7945 2016-07-13  Werner Koch  <wk@gnupg.org>
7946
7947         build: Update config.{guess,sub} to {2016-05-15,2016-06-20}.
7948         + commit a9670d152a4598aef1ae0960a79fb6f5d8db55ad
7949         * build-aux/config.guess: Update.
7950         * build-aux/config.sub: Update.
7951
7952         core: New GPGME_DATA_ENCODING_MIME.
7953         + commit d8d5f5a16712244fe6eff860b6ac5f007b1bf870
7954         * src/gpgme.h.in (GPGME_DATA_ENCODING_MIME): New.
7955         * src/data.c (gpgme_data_set_encoding): Adjust check.
7956         * src/engine-gpg.c (have_gpg_version): New.
7957         (gpg_encrypt, gpg_encrypt_sign): Pass flag '--mimemode'.
7958         (gpg_sign): Ditto.
7959
7960         * lang/cpp/src/data.h (GpgME): Add MimeEncoding.
7961         * lang/cpp/src/data.cpp (encoding, setEncoding): Support MimeEncoding.
7962
7963         * src/gpgme-tool.c (server_data_encoding): Add flag --mime.
7964
7965         core: Pass the engine's version string to the engine's new function.
7966         + commit 2095b1573a8196ba3efdf817324d1b3ee05cbb93
7967         * src/engine-backend.h (engine_ops): Add arg 'version' to NEW.
7968         * src/engine-assuan.c (llass_new): Add dummy arg 'version'.
7969         * src/engine-g13.c (g13_new): Ditto.
7970         * src/engine-gpgconf.c (gpgconf_new): Ditto.
7971         * src/engine-gpgsm.c (gpgsm_new): Ditto.
7972         * src/engine-spawn.c (engspawn_new): Ditto.
7973         * src/engine-uiserver.c (uiserver_new): Ditto.
7974         * src/engine.c (_gpgme_engine_new): Pass version string to the new
7975         function.
7976         * src/engine-gpg.c (struct engine_gpg): Add field 'version'.
7977         (gpg_new): Add arg 'version'.
7978         (gpg_release): Free VERSION.
7979
7980 2016-07-13  Andre Heinecke  <aheinecke@intevation.de>
7981
7982         Cpp: Add feature enum for new identify.
7983         + commit 537cb871fd59f3a20c697a046715e6339ff6633b
7984         * lang/cpp/src/context.cpp (supported_features2): Add
7985         BinaryAndFineGrainedIdentify
7986         * lang/cpp/src/global.h (Feature2): ditto.
7987
7988 2016-07-12  Justus Winter  <justus@g10code.com>
7989
7990         python: Port more tests.
7991         + commit 1bff47ee58bcf9d0016fb7ac7e37cbf075abd059
7992         * lang/python/pyme/core.py (Context.op_keylist_all): Add missing
7993         'op_keylist_end'.
7994         (Context.op_trustlist_all): Fix function. Add missing
7995         'op_trustlist_end'.
7996         * lang/python/tests/Makefile.am (pytests): Add new files.
7997         * lang/python/tests/t-import.py: New file.
7998         * lang/python/tests/t-keylist.py: Likewise.
7999         * lang/python/tests/t-trustlist.py: Check alternate interface.
8000
8001         python: Improve python packaging.
8002         + commit 57b51685528153f5a50ab0999feec25c83190501
8003         * lang/python/Makefile.am: Sign source releases, and upload them.
8004         * lang/python/setup.py.in: Add categories.
8005
8006 2016-07-12  Andre Heinecke  <aheinecke@intevation.de>
8007
8008         m4: Don't set fpic for qt on windows.
8009         + commit 938f7e9c8b466594d05c0347fe627b225263a6a6
8010         * m4/qt.m4 (FIND_QT): Do not set fpic for windows.
8011
8012         m4: Use LIBS instead of LDFLAGS for Qt libs.
8013         + commit 744978cce8f9dfb2363b9d274ee99f25cfcf0e40
8014         * m4/qt.m4: Modify LIBS instead of LDFLAGS for link test.
8015
8016         Bump version to 1.7.0.
8017         + commit bf742fb88545689addfca18192baf2f56a1895e1
8018         * configure.ac(mym4_version_minor),
8019         (mym4_version_micro): Next release will be 1.7.0
8020
8021         Qt: Install CamelCase forward includes.
8022         + commit fd87c4679c4bfe19390fa2047dff23bb213a4b18
8023         * lang/qt/src/Makefile.am (camelcase_headers): New. Create and install
8024         CamelCase headers.
8025
8026         Qt: Export VerifyDetachedJob.
8027         + commit 86ab2ee2d603111d24500b8d64a9a1dd82f8bdc0
8028         * lang/qt/src/verifydetachedjob.h (VerifyDetachedJob): Export it.
8029
8030         Qt/Cpp: Add version headers.
8031         + commit b03c48cfb06faae7d7033a0532f319cbcf13f18a
8032         * lang/cpp/src/gpgmepp_version.h.in,
8033         lang/qt/src/qgpgme_version.h.in: New. Version information.
8034         * lang/qt/src/Makefile.am, lang/cpp/src/Makefile.am: Add them.
8035         * configure.ac: Configure them.
8036
8037         Qt/Cpp: Add license blurb to export headers.
8038         + commit 362b8cdf4e0d5cd54ec2b325508dcdefac686f2c
8039         * lang/cpp/src/gpgmepp_export.h,
8040         lang/qt/src/qgpgme_export.h: Add license blurb.
8041
8042 2016-07-11  Justus Winter  <justus@g10code.com>
8043
8044         python: Fix distcheck.
8045         + commit ce662891373eba6cce1cf8df516cb2370970737e
8046         * lang/python/Makefile.am (EXTRA_DIST): Add missing files.
8047
8048 2016-07-11  Andre Heinecke  <aheinecke@intevation.de>
8049
8050         m4: Add compile / link check for qt.
8051         + commit ed070313155a1c79a57ba69f4299f2aefc65fad7
8052         * m4/qt.m4 (FIND_QT): Check if a qt application can be compiled and
8053         linked.
8054
8055 2016-07-11  Justus Winter  <justus@g10code.com>
8056
8057         python: Enable out-of-tree build of pyme bindings.
8058         + commit 007382ce94a6318557370c440f7d609a030a119e
8059         * lang/python/MANIFEST.in: Update manifest template.
8060         * lang/python/Makefile.am: Copy more files, move generation of files
8061         to Python build script, add 'sdist' target to build a Python source
8062         distribution.
8063         * lang/python/gpgme-h-clean.py: Add code to build 'errors.i'.
8064         * lang/python/setup.py.in: Generate files, enable out-of-tree builds.
8065
8066         python: Do not depend on access to internal data structures.
8067         + commit 98cba522c906115efcba1f8cc0bec7e5edb51ecd
8068         * lang/python/gpgme.i (gpgme_data_t): Rework so that it works without
8069         access to the definition of 'struct gpgme_data'.
8070         * lang/python/helpers.c (object_to_gpgme_data_t): Add assertion.
8071
8072         python: Make result wrapping backwards compatible.
8073         + commit c53f87c5f9ca63119152f41dcebfb175d4df2cef
8074         * lang/python/pyme/results.py (Result.__init__): Skip missing fields.
8075
8076 2016-07-11  Andre Heinecke  <aheinecke@intevation.de>
8077
8078         Qt: Fix memleaks in tests.
8079         + commit bfa8ac7e02c16790ee5bd3b42c26699f4821d72e
8080         * lang/qt/tests/t-keylist.cpp(cleanupTestCase): Ensure that
8081         posted events are handled for autodeletion.
8082         (testSingleKeylistSync): delete job.
8083         * lang/qt/tests/t-ownertrust.cpp(cleanupTestCase): Ditto
8084         * lang/qt/tests/t-ownertrust.cpp(testChangeOwnerTrust): Delete
8085         keylistjobs.
8086         * lang/qt/tests/t-keylocate.cpp(cleanupTestCase): Ditto
8087
8088         Qt: Add some general Protocol documentation.
8089         + commit b1f42e8f25ada220ec8e4762cfebc3a49b1f7d56
8090         * lang/qt/src/protocol.h (Protocol): Add doc.
8091
8092         Qt: Disable t-tofuinfo tests.
8093         + commit 02babb29612d554c37b63a49f78acc45653b557e
8094         * lang/qt/tests/t-tofuinfo.cpp: Disable tests.
8095
8096 2016-07-08  Justus Winter  <justus@g10code.com>
8097
8098         src: Fix error handling.
8099         + commit de74fe59feef9adc858ac04004880bfd44315d0d
8100         * src/encrypt.c (encrypt_status_handler): Fix error handling, ||
8101         conflates errors.
8102
8103         python: Fix raising stashed exceptions.
8104         + commit 8a93f345b701332270c9829a4d0a93537f98a8d8
8105         Fixes an issue with newer versions of Python.
8106
8107         * lang/python/helpers.c (pygpgme_raise_callback_exception): Be more
8108         careful when restoring the exception.
8109
8110 2016-07-07  Justus Winter  <justus@g10code.com>
8111
8112         python: Fix distcheck.
8113         + commit 52efcf1ee9fc8ba4c6bd23d8fe4f5f7993ba9fb1
8114         * lang/python/INSTALL: Drop obsolete file.
8115         * lang/python/Makefile.am (EXTRA_DIST): Add missing files.
8116         (CLEANFILES): Remove generated files.
8117         (clean-local): Fix permissions of copied files.
8118         * lang/python/tests/Makefile.am (TESTS): Use our own setup and
8119         teardown scripts.
8120         (EXTRA_DIST): Add missing files.
8121         * lang/python/tests/final.py: New file.
8122         * lang/python/tests/initial.py: Likewise.
8123
8124         qt: Fix distcheck.
8125         + commit 38c408560c6ebc3ea5eeeade01d38750bf5799e5
8126         * lang/qt/src/Makefile.am (qgpgme_headers): Add missing file.
8127         (CLEANFILES): Add generated file.
8128         * lang/qt/tests/Makefile.am (clean-local): Remove private keys.
8129
8130         cpp: Fix distcheck.
8131         + commit 49286ac1c82c480e2c718f828c57da9778ccd0b9
8132         * lang/cpp/src/Makefile.am (CLEANFILES): Remove generated file.
8133
8134 2016-07-06  Andre Heinecke  <aheinecke@intevation.de>
8135
8136         Qt: Add test for publicKeyAlgorithmAsString.
8137         + commit fc0267233239b42e9fb74a8acd7511503e287a9e
8138         * lang/qt/tests/t-keylist.cpp (testPubkeyAlgoAsString): New.
8139
8140         Cpp: Expose gpgme_pubkey_algo_name.
8141         + commit e41ae4db9e70d9aebf80ebbd4ce03977435c2ccf
8142         * lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithmAsString): New
8143         static variant.
8144         * lang/cpp/src/key.h: Declare function. Clarify comment about name
8145         mismatch.
8146
8147         Qt: Add check for pubkeyAlgo in t-keylist.
8148         + commit 9f93346d21271b916f15d80420669f5d659a40de
8149         * lang/qt/tests/t-keylist.cpp (testSingleKeyListSync): Check
8150         pubkeyAlgo.
8151
8152         Cpp: Add PubkeyAlgo enum.
8153         + commit c28007d0407bcc3621b8266d6d77eb0d069aec35
8154         * lang/cpp/src/key.h (Subkey::PubkeyAlgo): New enum.
8155         (Subkey::publicKeyAlgorithm): Change return type.
8156         * lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithm): Use enum.
8157
8158         Qt: Fix include order when buildin test.
8159         + commit 4934893e27a50f5715dcd4d2907ecbe629921b32
8160         * lang/qt/tests/Makefile.am (AM_CPPFLAGS): Include cpp before
8161         gpgme src directory.
8162
8163         Revert "Qt: More robust lookup of Cpp's context.h"
8164         + commit 7a8c04f66d382dc49d962ad18c46d7ad332ccc0f
8165         * lang/qt/src/threadedjobmixin.h: Revert using full path
8166         for context.h
8167
8168 2016-07-05  Andre Heinecke  <aheinecke@intevation.de>
8169
8170         Qt: Fix test build with Qt < 5.4.0.
8171         + commit 49a6ee50587c9d4b6f07e60ce1a939c863e7f15c
8172         * lang/qt/tests/t-keylist.cpp,
8173         lang/qt/tests/t-keylocate.cpp,
8174         lang/qt/tests/t-ownertrust.cpp: Use old style SIGNAl syntax for
8175         QSignalSpy
8176
8177         Qt: More robust lookup of Cpp's context.h.
8178         + commit 47bfbc9026b49b9918359af5fcc1621aab0d1065
8179         * lang/qt/src/threadedjobmixin.h: When building qgpgme look for
8180         context.h in the full cpp subdirectory.
8181
8182         w32: Fallback to 2.1 reg key for gpgconf search.
8183         + commit 72b83ffc4d7581f4efef3bd7c261d7d7424bcf0e
8184         * src/w32-util.c (_gpgme_get_gpgconf_path): Fallback to 2.1 installer
8185          registry key.
8186
8187 2016-07-04  Andre Heinecke  <aheinecke@intevation.de>
8188
8189         Doc: Document pinentry mode.
8190         + commit 329ab93f7ed862d7f4c0501fca5355936a74ac52
8191         * doc/gpgme.texi (Passphrase Callback): Document as context
8192         attribute.
8193         (gpgme_set_passphrase_cb): Note that this requires LOOPBACK mode
8194         with GnuPG 2.1.
8195
8196         Qt: Add testTofuSignCount.
8197         + commit 8fa9b5696ca9f8386971e6f36646536f9579ceaa
8198         * src/lang/qt/tests/t-tofuinfo.cpp(testTofuSignCount): New.
8199         (initTestCase): Set gpg-agent loopback pinentry config.
8200         (signAndVerify): Helper for tofuTestSignCount.
8201
8202         Qt: Add test passphrase provider.
8203         + commit efb5059b9b6e81db7b0c016aa9fb70abe98308ea
8204         * lang/qt/tests/t-support.h (TestPassphraseProvider): New.
8205         * lang/qt/tests/Makefile.am (t_tofuinfo_SOURCES): Add t-support.h
8206
8207         Cpp: Add support for TOFU_CONFLICT sigsum.
8208         + commit 80498ab662238a31325e78c0037ea6752f680a37
8209         * lang/cpp/src/verificationresult.cpp (GpgME::Signature::Summary):
8210         Handle TOFU_CONFLICT.
8211         * lang/cpp/src/verificationresult.h (Summary): Add TofuConflict.
8212
8213         Cpp: Add support for pinentry_mode.
8214         + commit d75c118aae18e20f08dbbb69c7998e1f3694ccd0
8215         * lang/cpp/src/context.cpp (Context::pinentryMode): Return mode.
8216         (Context::setPinentryMode): Set mode.
8217         * lang/cpp/src/context.h (PinentryMode): Add enum.
8218
8219 2016-07-01  Andre Heinecke  <aheinecke@intevation.de>
8220
8221         Qt: Add test for TofuInfo.
8222         + commit fbd6ac4655ebf56d91ebd9a4ff499c8319fcd087
8223         * lang/qt/tests/t-tofuinfo.cpp: New.
8224         * lang/qt/tests/Makefile.am: Update accordingly.
8225
8226         Cpp: Add TofuInfo to signatures.
8227         + commit 93c5d420fcfe275aeff2b3d5ce99629edbe6625d
8228         * lang/cpp/src/tofuinfo.cpp, lang/cpp/src/tofuinfo.h: New class.
8229         * lang/cpp/src/verificationresult.cpp (Signature::tofuInfo): New.
8230         (VerificationResult::Private): Handle tofu info.
8231         (GpgME::operator<<(std::ostream &os, const Signature &sig)): Include
8232         TofuInfo in dump.
8233         * lang/cpp/src/verificationresult.h (Signature::tofuInfo): New.
8234         * lang/cpp/src/Makefile.am (main_sources, gpgmepp_headers): Add
8235         new files.
8236         * configure.ac (LIBGPGMEPP_LT_REVISION): Bump for new API.
8237
8238         core: Clarify documentation of tofu_stats address.
8239         + commit 948ce7d1edf12ecb5080a4816ca15f495d6393f5
8240         * src/gpgme.h.in: Mention that Address is not always in addr-spec.
8241
8242         core: Fix identify for armored detached sigs.
8243         + commit 570bf2a648f14b34c4c45d3890b7300529a82d37
8244         * src/data-identify.c (basic_detection): Return signature for
8245         signature.
8246
8247 2016-06-27  Andre Heinecke  <aheinecke@intevation.de>
8248
8249         Cpp: Expose new data_identify values.
8250         + commit 15fc5c34c88ecbb61272705af60f7054b41c57f7
8251         * lang/cpp/src/data.cpp (GpgME::Data::type): Handle PGP Encrypted
8252          and Signature.
8253         * lang/cpp/src/data.h: Add values accordingly.
8254
8255         Cpp: Do not treat KEYEXPIRED as error.
8256         + commit 82d484c852d07958ac93efb3d2d7b7726fbb5231
8257         * lang/cpp/src/editinteractor.cpp (status_to_error): No error
8258         for KEYEXPIRED.
8259
8260 2016-06-24  Andre Heinecke  <aheinecke@intevation.de>
8261
8262         tests: Add new test tool run-decrypt.
8263         + commit 3364549c19682f56d4d9c52ab7f76862c5a456cf
8264         * tests/run-decrypt.c: New.
8265         * tests/Makefile.am (noinst_PROGRAMS): Add run-decrypt.
8266
8267 2016-06-23  Werner Koch  <wk@gnupg.org>
8268
8269         core: Add closer inspection of "PGP MESSAGE".
8270         + commit cf37a57d28c43ec36277e84ca44458b7287b940b
8271         * src/data-identify.c (inspect_pgp_message): New.
8272         (basic_detection): Un-const arg DATA. Call inspect_pgp_message.
8273
8274         core: Add a base 64 decoder.
8275         + commit f8b8027ae63c957557ed6bdc7e5a30ef1bdd8e77
8276         * src/b64dec.c: New. Taken from gnupg.  Prefix function names with
8277         _gpgme_ and change to use standard C malloc functions.
8278         * src/util.h.h (struct b64state): New.
8279         * src/Makefile.am (main_sources): Add file.
8280
8281 2016-06-22  Werner Koch  <wk@gnupg.org>
8282
8283         core: Detect compressed signed OpenPGP data.
8284         + commit bb8cf6236582fc9eb6564046599989af52779a26
8285         * src/data-identify.c (next_openpgp_packet): Allow partial encoding.
8286         (pgp_binary_detection): Handle compressed packets.
8287
8288 2016-06-21  Werner Koch  <wk@gnupg.org>
8289
8290         tests: Add new test tool run-identify.
8291         + commit 5905e8bbd809c1408edad4fa4eb0527fa51cbea3
8292         * src/gpgme-tool.c (gt_identify): Add new strings.
8293         * tests/run-identify.c: New.
8294         * tests/Makefile.am (noinst_PROGRAMS): Add run-identify.
8295
8296         core: Enhance gpgme_data_identify to detect binary PGP messages.
8297         + commit 32d4bbf5e3e5f88e4a6852d72a35ee30df9d5279
8298         * src/gpgme.h.in (GPGME_DATA_TYPE_PGP_ENCRYPTED): New.
8299         (GPGME_DATA_TYPE_PGP_SIGNATURE): New.
8300         * src/data-identify.c: Add enum for OpenPGP packet types.
8301         (buf32_to_ulong): New.
8302         (next_openpgp_packet): New.  Based on the gnupg/kbx/keybox-openpgp.c
8303         implementation and relicensed to LGPL by g10 Code.
8304         (pgp_binary_detection): New.
8305         (basic_detection): Call pgp_binary_detection instead of returning
8306         unknown.
8307
8308 2016-06-16  Justus Winter  <justus@g10code.com>
8309
8310         python: Improve autmatically generated docstrings.
8311         + commit 8997d88bf97d1784706becbf8e9dc74e4656e311
8312         * lang/python/gpgme.i: Add comment.
8313         * lang/python/pyme/core.py (__getattr__): Rewrite automatically
8314         generated doctrings for the wrapper methods.
8315
8316         python: Make result objects more robust.
8317         + commit a324d0cffe93cab955698c2c065b2f2227e379e4
8318         Results returned by the GPGME are fragile, i.e. they are only valid
8319         until the next operation is performed in the context.
8320
8321         We cannot arbitrarily constrain the lifetime of Python objects, we
8322         therefore create deep copies of the results.
8323
8324         * lang/python/gpgme.i (gpgme_tofu_info_t): Turn these into a list.
8325         (gpgme_*_result_t): Create deep copies of these objects.
8326         * lang/python/helpers.c (pygpgme_wrap_fragile_result): New function.
8327         * lang/python/helpers.h (pygpgme_wrap_fragile_result): New prototype.
8328         * lang/python/pyme/results.py: New file.
8329
8330         python: Avoid creating SWIG proxy classes.
8331         + commit 856bcfe2934237011984fab0bc69800a7c25c34b
8332         * lang/python/Makefile.am (gpgme_wrap.c): Use '-builtin' to make SWIG
8333         generate builtin types for c types.
8334         * lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Adapt slightly.
8335
8336         python: Simplify wrapping glue.
8337         + commit 6641c7814b30e3e8f18105b2636545cc1bd07552
8338         * lang/python/pyme/core.py: Rename '_getctype' to '_ctype' and turn it
8339           into a string.  Likewise rename '_getnameprepend' to '_cprefix'.
8340         * lang/python/helpers.c: Adapt accordingly.
8341
8342         python: Rework callbacks.
8343         + commit f3618bc615e3eff1f52fb5849cbf0f0b95515a61
8344         Simplify how the lifetime of callback arguments is managed.
8345
8346         * lang/python/gpgme.i (gpgme_edit_cb_t): Check arguments.
8347         (PyObject_p_p, void_p_p): Drop rather dangerous interface.
8348         (pygpgme_unwrap_gpgme_ctx_t): New function.
8349         * lang/python/helpers.c (pygpgme_clear_generic_cb): Drop dangerous
8350         function.
8351         (pyPassphraseCb): Assert contract.
8352         (pygpgme_set_passphrase_cb): Use Python's calling convention so that
8353         we can raise exceptions.  Hand in 'self', get the wrapped object, and
8354         simply store the hook data as attribute of the wrapper object.
8355         (pyProgressCb, pygpgme_set_progress_cb): Likewise.
8356         (pygpgme_set_status_cb): Likewise.
8357         (pygpgme_data_new_from_cbs): Likewise.
8358         * lang/python/helpers.h (pygpgme_clear_generic_cb): Drop prototype.
8359         (pygpgme_set_passphrase_cb): Update prototype.
8360         (pygpgme_set_progress_cb): Likewise.
8361         (pygpgme_set_status_cb): Likewise.
8362         (pygpgme_data_new_from_cbs): Likewise.
8363         (pygpgme_unwrap_gpgme_ctx_t): New prottotype.
8364         * lang/python/pyme/core.py (Context, Data): Update callsites.
8365
8366         python: Wrap objects implementing the buffer protocol.
8367         + commit 616929b6edf00b4a774b727385d39b785a112b90
8368         * lang/python/Makefile.am: Add the toplevel source directory to CFLAGS
8369         when compiling the bindings so that we can use private header files.
8370         * lang/python/gpgme.i (gpgme_data_t): Rework the object wrapping.  Do
8371         not create a Python wrapper object, merely a gpgme_data_t object, and
8372         keep references to buffer objects, if any.  If necessary, update the
8373         buffer after the function call.
8374         (pygpgme_wrap_gpgme_data_t): New function.
8375         * lang/python/helpers.c (object_to_gpgme_data_t): Rework object
8376         wrapping.  Also wrap objects implementing the buffer protocol.
8377         * lang/python/helpers.h (object_to_gpgme_data_t): Update prototype.
8378         (pygpgme_wrap_gpgme_data_t): New prototype.
8379         * lang/python/tests/t-idiomatic.py: Demonstrate this.
8380
8381         python: Add properties to wrapped object.
8382         + commit 5464060baef2da8f5ea377118758e451c55e3787
8383         * lang/python/pyme/core.py (GpgmeWrapper.__repr__): Saner
8384         representation.
8385         (GpgmeWrapper.__str__): Construct a nicer human readable string.
8386         (GpgmeWrapper._boolean_properties): New field.
8387         (GpgmeWrapper.__wrap_boolean_property): New function.
8388         (GpgmeWrapper.__getattr__): Wrap functions using properties.
8389         (GpgmeWrapper.__setattr__): New method.  Likewise wrap functions.
8390         (Context.signers): New property.
8391         (Context.pinentry_mode): Likewise.
8392         (Context._boolean_properties): List boolean properties.
8393         (Context.__init__): Add keyword arguments for properties and apply
8394         them.
8395
8396         python: Improve the documentation.
8397         + commit 5492853d7b84b4e1d0b11b234e32252ba8d1608d
8398         * lang/python/Makefile.am: Copy the README file.
8399         * lang/python/README: Rename, convert to org, and update.
8400         * lang/python/pyme/__init__.py: Move license out of the docstring,
8401         update docstring.
8402         * lang/python/pyme/core.py: Add and update docstrings.
8403
8404         python: Get version information from the build system.
8405         + commit 7eef399d89d4c3877cb795ed5ba45ecb241e67be
8406         * configure.ac: Generate 'setup.py' and 'version.py'.
8407         * lang/python/Makefile.am: Use generated setup script.
8408         * lang/python/pyme/version.py: Turn it into a template, and get
8409         version information from the build system.  Also drop some variables.
8410         * lang/python/setup.py: Likewise.  This way we can avoid importing the
8411         version module, which is frowned upon and actually caused a problem.
8412
8413         python: Fix exception leak.
8414         + commit a852f99a0ac9dc7f7493b403f811f5f7518fae40
8415         * lang/python/helpers.c (pygpgme_stash_callback_exception): Fix leak.
8416
8417         python: Fix license.
8418         + commit 3bacce03e60dc45cc2da99a2f5c504612202e802
8419         Other parts of the build system are also LGPLed.
8420
8421         * lang/python/Makefile.am: Fix license.
8422
8423 2016-06-14  Werner Koch  <wk@gnupg.org>
8424
8425         core: Make sure FD_SET is not used with an out of range fd.
8426         + commit 8173c4f1f8a145c4b1d454f6f05e26950e23d675
8427         * src/posix-io.c (_gpgme_io_select): Check for FD out of range.
8428
8429 2016-06-08  Justus Winter  <justus@g10code.com>
8430
8431         python: Improve error handling.
8432         + commit 77d149e8614c381458e07808a7930ce3fb92cdc3
8433         * lang/python/helpers.c (pyPassphraseCb): Handle write errors.
8434         (pyEditCb): Likewise.
8435
8436         python: Add function to raise exceptions from c.
8437         + commit 5ebc205439cac266685d2532466df8b3457dea23
8438         * lang/python/helpers.c (pygpgme_raise_exception): New function.
8439
8440         python: Fix stripping deprecated functionality.
8441         + commit 8426304b67a0b0a5630db500abf740b0e0b9e43c
8442         * lang/python/Makefile.am (gpgme.h): Add script as input.
8443         * lang/python/gpgme-h-clean.py (deprec_func): Also match struct
8444         members.
8445         (line_break): Fix matching on struct members.
8446
8447         python: Fix type.
8448         + commit 990492ea4f7dafbb75de15ea91c30cbf090034b5
8449         * lang/python/gpgme.i: Use correct Python type for size.
8450
8451         python: Implement the context manager protocol.
8452         + commit e3c5913a33edcbd7329b8d154c669f95ce782038
8453         * lang/python/pyme/core.py (Context.__del__): Make function
8454         idemptotent.
8455         (Context.{__enter__,__exit__}): Implement the context manager
8456         protocol.
8457         (Data.__del__): Make function idemptotent, drop debug print.
8458         (Data.{__enter__,__exit__}): Implement the context manager
8459         protocol.
8460         * lang/python/tests/t-idiomatic.py: Demonstrate this.
8461
8462 2016-06-07  Justus Winter  <justus@g10code.com>
8463
8464         python: Fix error handling.
8465         + commit f8f9bf06bc3190968ba6613032d60a3bf2c8a6d9
8466         * lang/python/gpgme.i: Fix freeing an uninitialized pointer in the
8467         error handling of generated wrapper functions by explicitly storing
8468         the pointer in a local variable which can be initialized.
8469
8470 2016-06-06  Justus Winter  <justus@g10code.com>
8471
8472         python: Wrap file-like objects on demand.
8473         + commit 8196edf9ca5c8f2f02553e7f22d9c79dbd229882
8474         * lang/python/gpgme.i (gpgme_data_t): Use new function to create
8475         wrapper objects if necessary, and deallocate them after the function
8476         call.
8477         * lang/python/helpers.c (object_to_gpgme_data_t): New function.
8478         * lang/python/helpers.h (object_to_gpgme_data_t): New prototype.
8479         * lang/python/tests/Makefile.am (pytests): Add new test.
8480         * lang/python/tests/t-idiomatic.py: New file.
8481
8482         python: Move helper function.
8483         + commit 26c3accc95ab77ddbe60db822e2938ad5f480d41
8484         * lang/python/gpgme.i (object_to_gpgme_t): Move...
8485         * lang/python/helpers.c: ... here.
8486         * lang/python/helpers.h (object_to_gpgme_t): New prototype.
8487
8488         python: Fix error handling.
8489         + commit 89eb0cd4d65bc033ed6342810b26232797482d64
8490         * lang/python/gpgme.i (object_to_gpgme_t): Properly propagate
8491         exceptions.
8492
8493         python: Initialize GPGME for the user.
8494         + commit ae06f7c2fe0e49baeab5a827dc38ba8c57a6404c
8495         * lang/python/pyme/core.py: Call 'check_version' and explain why.
8496         * lang/python/tests/support.py (init_gpgme): Drop call here.
8497
8498 2016-06-01  Justus Winter  <justus@g10code.com>
8499
8500         python: Fix test suite with GnuPG prior to 2.1.12.
8501         + commit bbf19124bbec9eb6298cef2914baae7ac74382fe
8502         * lang/python/tests/Makefile.am (gpg-agent.conf): Use
8503         'allow-loopback-pinentry'.
8504
8505         python: Make Python detection more robust.
8506         + commit 1607aa7fe5dd686ba3bfb6de4a2b602d6a458c86
8507         Previously, missing Python development packages made configure fail
8508         instead of merely disabling the bindings.
8509
8510         * configure.ac: Check for 'PYTHON_VERSION'.
8511         * m4/ax_python_devel.m4: Make test non-fatal.
8512
8513         python: Improve build system integration, fix warnings.
8514         + commit 73c47535b631a55687ecc5eff1d1d9a9fd71021e
8515         * lang/python/Makefile.am: Pass CFLAGS to python build system.
8516         * lang/python/helpers.c (pyPassphraseCb): Use correct type for length.
8517         (pygpgme_data_new_from_cbs): Drop unused variable.
8518
8519 2016-06-01  Andre Heinecke  <aheinecke@intevation.de>
8520
8521         Cpp: Use whitelist for status messages.
8522         + commit 54314a9c7d7ad52981c836ca742644a1fa69b518
8523         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
8524         Use whitelist instead of blacklist.
8525
8526         Qt: Fix debug output in t-ownertrust.
8527         + commit 9d6f85bd25e51445f1776b498875e77b529311b1
8528         * lang/qt/tests/t-ownertrust.cpp (testChangeOwnerTrust): Remove
8529         general debug of trust level. Add debug output for error.
8530
8531 2016-06-01  Justus Winter  <justus@gnupg.org>
8532
8533         tests: Fix notation tests.
8534         + commit c88c9ef384b6f7bda9a61b58f26c2f89ae25f684
8535         * lang/python/tests/t-sig-notation.py (check_result): Check critical
8536         flag.
8537         * tests/gpg/t-sig-notation.c (check_result): Likewise.
8538
8539 2016-06-01  Werner Koch  <wk@gnupg.org>
8540
8541         core: Set notation flags for verify.
8542         + commit 1cacd7d00a7b3de4a5e11ccce5ee6c50e0a5516d
8543         * src/gpgme.h.in (GPGME_STATUS_NOTATION_FLAGS): New.
8544         * src/status-table.c (status_table): Add new status.
8545         * src/verify.c (parse_notation): Handle flags.  Also fix NOTATION_DATA
8546         in case gpg would not percent-escape spaces.
8547         (_gpgme_verify_status_handler): Handle flags.
8548         * tests/run-verify.c (print_result): Print notaion data.
8549
8550 2016-05-31  Tobias Mueller  <muelli@cryptobitch.de>
8551
8552         python: use GPG_ERROR_CONFIG variable.
8553         + commit 8ad17f402f6420880dcf06a13a54feadb52c0208
8554         instead of calling gpg-error-config.
8555         This is useful when configuring with --with-gpgerror-prefix
8556         because then GPG_ERROR_CONFIG contains the correct
8557         /path/to/bin/gpg-error-config whereas calling gpg-error-config
8558         directly would look in the user's PATH (and not in the prefix
8559         where gpg-error-config was installed).
8560
8561 2016-05-31  Justus Winter  <justus@gnupg.org>
8562
8563         python: Port more tests.
8564         + commit afa0dd56e1cce64fe08bff3c64b12aecce54fd2d
8565         * lang/python/gpgme.i: Hide length fields of notations.
8566         * lang/python/tests/Makefile.am (pytests): Add new tests.
8567         * lang/python/tests/t-decrypt-verify.py: New file.
8568         * lang/python/tests/t-sig-notation.py: Likewise.
8569         * lang/python/tests/t-verify.py: Likewise.
8570
8571 2016-05-27  Werner Koch  <wk@gnupg.org>
8572
8573         Speedup closing of fds before exec.
8574         + commit 89d22f9229f2ecd559ac6ea91dae60eeff940fa5
8575         * src/posix-io.c [__linux__]: Include dirent.h.
8576         (get_max_fds) [__linux__]: Try to figure out the highest used fd.
8577
8578 2016-05-27  Justus Winter  <justus@gnupg.org>
8579
8580         python: Port more tests.
8581         + commit 3915842657f0849a038752fd7445f96081a89dd9
8582         * lang/python/pyme/core.py (Data._error_check): Add
8583         'gpgme_data_get_file_name' to the list of functions not returning an
8584         error code.
8585         * lang/python/tests/Makefile.am (pytests): Add new tests.
8586         * lang/python/tests/support.py (verbose): New variable.
8587         * lang/python/tests/t-data.py: Test setting and getting the filename.
8588         * lang/python/tests/t-encrypt-large.py: New file.
8589         * lang/python/tests/t-file-name.py: Likewise.
8590         * lang/python/tests/t-trustlist.py: Likewise.
8591
8592         python: Implement data callbacks.
8593         + commit 2ae847c02731994d99e69d3d025ff01f41406452
8594         * lang/python/gpgme.i (object_to_gpgme_t): Set exception on error.
8595         * lang/python/helpers.c (pyDataReadCb): New function.
8596         (pyDataWriteCb): Likewise.
8597         (pyDataSeekCb): Likewise.
8598         (pyDataReleaseCb): Likewise.
8599         (pygpgme_data_new_from_cbs): Likewise.
8600         * lang/python/helpers.h (pygpgme_data_new_from_cbs): New prototype.
8601         * lang/python/pyme/core.py (Data.__init__): Fix docstring, fix read
8602         callbacks.
8603         (Data.__del__): Fix read callbacks.
8604         (Data._free_readcb): Drop function.
8605         (Data._free_datacbs): New function.
8606         (Data.new_from_cbs): Fix setting the callbacks.
8607         (Data.write): Raise stashed exceptions.
8608         (Data.read): Likewise.
8609         * lang/python/tests/t-callbacks.py: Test new functionality.
8610         * lang/python/tests/t-data.py: Likewise.
8611
8612         python: Fix object deallocation.
8613         + commit ebfe2300c33a3bad311e9ac1530e6c92636a08a4
8614         Handing a reference to the wrapper object created a non-trivial
8615         circular reference that Pythons garbage collector is unable to break.
8616         Explicitly break it by using a weak reference.
8617
8618         * lang/python/helpers.c (pygpgme_stash_callback_exception): Retrieve
8619         object from weak reference.
8620         * lang/python/pyme/core.py (Context.__del__): Free status callback.
8621         (Context.set_passphrase_cb): Use a weak reference.
8622         (Context.set_progress_cb): Likewise.
8623         (Context.set_status_cb): Likewise.
8624         (Context.op_edit): Likewise.
8625
8626         Improve comments.
8627         + commit e74cd9fb80f12b764d5e4561e73d55644147e9e7
8628         * src/gpgme.h.in (gpgme_data_seek_cb_t, gpgme_data_seek): Clarify that
8629         these functions return the new offset.
8630         (gpgme_data_release_cb_t): Fix name of parameter.
8631
8632         python: Fix reading data from existing files.
8633         + commit bf188e280b8b4fc775f33c47e2e1e275ed044004
8634         * lang/python/pyme/core.py (Data.__init__): Add 'copy' kwargument, and
8635         pass it to functions supporting it.  PEP8 fix.
8636         (Data.new_from_fd): PEP8 fix.
8637         (Data.new_from_file): Give a more helpful error message if copy is
8638         False.  PEP8 fix.
8639         (Data.new_from_fd): Hand the file descriptor to
8640         'gpgme_data_new_from_fd', not a stream.  Fix docstring.
8641         * lang/python/tests/t-data.py: Add tests for this.
8642
8643 2016-05-25  Justus Winter  <justus@gnupg.org>
8644
8645         src: Fix trace string.
8646         + commit ce73ae9d0cbf782cd3a1949fc4f568f0d1da60d9
8647         * src/data-compat.c (gpgme_data_new_from_file): Fix trace string.
8648
8649 2016-05-24  Justus Winter  <justus@gnupg.org>
8650
8651         python: Improve and test Context.wait.
8652         + commit 00ff6d07330028da370c869e3ec442eb76f8cbb8
8653         * lang/python/pyme/core.py (Context.wait): Improve docstring.  As the
8654         context passed to 'gpgme_wait' is never NULL, it is pointless to look
8655         at the returned context.  Always raise exceptions.
8656         * lang/python/tests/Makefile.am (pytests): Add new test.
8657         * lang/python/tests/t-wait.py: New file.
8658
8659         python: Make all GnuPG errors available.
8660         + commit 7bc9cc717e428f48d4b27016f44c9f3900b1fba6
8661         * lang/python/Makefile.am (errors.i): Generate file.
8662         * lang/python/gpgme.i: Include generated file.
8663         * lang/python/pyme/errors.py: Pull in all errors and error sources.
8664
8665         python: Move the base wrapper class.
8666         + commit 0ebd6a1b43a96bffa78da89dc8629edac0a74d35
8667         * python/lang/pyme/util.py (GpgmeWrapper): Move...
8668         * python/lang/pyme/core.py: ... here.
8669
8670         python: Support status callbacks.
8671         + commit 8b57f06e0c04f5c9b87a3c76618230d757412076
8672         * lang/python/helpers.c (pyStatusCb): New function.
8673         (pygpgme_set_status_cb): Likewise.
8674         * lang/python/helpers.h (pygpgme_set_status_cb): New prototype.
8675         * lang/python/pyme/core.py (Context.__init__): Initialize
8676         'last_statuscb'.
8677         (Context._free_statuscb): New function.
8678         (Context.set_status_cb): Likewise.
8679         * lang/python/tests/t-callbacks.py: Test status callbacks.
8680
8681         python: Improve docstring.
8682         + commit 72afb68f8c2f0cb326f20b289215402fd849339d
8683         * lang/python/pyme/core.py (Context.set_progress_cb): Improve
8684         docstring.
8685
8686 2016-05-24  Andre Heinecke  <aheinecke@intevation.de>
8687
8688         Qt: Fix test build with clang.
8689         + commit 00e93b2cae0585ff10425421d9097a846943b21c
8690         * lang/qt/tests/Makefile.am (LDADD): Explicitly add -lstdc++
8691
8692         Cpp: Set -std=c++11 also if CXXCPP is already set.
8693         + commit b107fc8a92bd16bc0d868c771b6334d6594e6395
8694         * m4/ax_cxx_compile_stdxx.m4 (AX_CXX_COMPILE_STDCXX): Set CXXCPP if
8695         neccessary.
8696
8697 2016-05-24  Justus Winter  <justus@gnupg.org>
8698
8699         python: Improve support for edit callbacks.
8700         + commit 09803c4a81b9431fd4c8f30abb1c60c4c735f0cb
8701         * lang/python/helpers.c (pyEditCb): Stash exceptions.
8702         * lang/python/pyme/core.py (Context.op_edit): Hand in 'self'.
8703         * lang/python/tests/Makefile.am (py_tests): Add new test.
8704         * lang/python/tests/t-callbacks.py: Test edit callbacks.
8705         * lang/python/tests/t-edit.py: New file.
8706
8707 2016-05-23  Justus Winter  <justus@gnupg.org>
8708
8709         python: Fix hook.
8710         + commit 283f0bdc3d32624dac93d02ba3df516e69d8d4ba
8711         * lang/python/helpers.c (pyProgressCb): Fix getting hook data.
8712         * lang/python/tests/t-callbacks.py: Show that this works.
8713
8714         python: Move edit callback function.
8715         + commit 5476ca6813fc9d8833d5224f19d4bb7515380ab5
8716         * lang/python/gpgme.i (pyEditCb): Move...
8717         * lang/python/helpers.c: ... here.
8718         * lang/python/helpers.h (pyEditCb): New prototype.
8719
8720         python: Port more tests.
8721         + commit a42d814a65fdc29a3be6efa97433997495696a88
8722         * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Set
8723         LD_LIBRARY_PATH.
8724         (pytests): Add new tests.
8725         * lang/python/tests/t-callbacks.py: Trim imports.
8726         * lang/python/tests/t-encrypt-sign.py: New file.
8727         * lang/python/tests/t-export.py: Likewise.
8728         * lang/python/tests/t-signers.py: Likewise.
8729
8730         python: Translate list of strings.
8731         + commit c9cc0412e940c78c3e9bacb6ff1459b5bb5bb9ad
8732         * lang/python/gpgme.i: Add typemap translating list of strings.
8733
8734 2016-05-21  Werner Koch  <wk@gnupg.org>
8735
8736         api: Return Tofu info for signatures.
8737         + commit 10df06ee8f9192309bf124872438f7c32457e1c6
8738         * src/gpgme.h.in (gpgme_tofu_policy_t): New.
8739         (gpgme_status_code_t): Add status codes for TOFU.
8740         (struct _gpgme_tofu_info, gpgme_tofu_info_t): New.
8741         (struct _gpgme_signature): Add field 'tofu'.
8742         * src/status-table.c (status_table): Add new codes.
8743         * src/verify.c: Include limits.h.
8744         (release_tofu_info): New.
8745         (release_op_data): Call that.
8746         (parse_tofu_user): New.
8747         (parse_tofu_stats): New.
8748         (parse_tofu_stats_long): New.
8749         (_gpgme_verify_status_handler): Handle TOFU status lines.
8750
8751         * tests/run-verify.c (print_description): New.
8752         (print_result): print tofu info.
8753
8754         api: Add new context flag "raw-description".
8755         + commit dac2c5441d418536632f014c8b0e1359580279d1
8756         * src/context.h (struct gpgme_context): Add field raw_description.
8757         * src/gpgme.c (gpgme_set_ctx_flag): New flag.
8758
8759         core: New functions to help parsing of status lines.
8760         + commit a92946a8cacc44f655249d84b316deae59e62671
8761         * src/conversion.c (_gpgme_split_fields): New.
8762         (_gpgme_strtoul_field): New.
8763
8764 2016-05-20  Andre Heinecke  <aheinecke@intevation.de>
8765
8766         Qt: Add test for changeownertrust.
8767         + commit eaf2d018e63c15cd9a81e5c1fd2fedbf8829f7b9
8768         * lang/qt/tests/t-ownertrust.cpp: New test.
8769         * lang/qt/tests/Makefile.am: Add test.
8770
8771         Cpp: Ignore STATUS_KEY_CONSIDERED when editing.
8772         + commit 5df858cbf196b2a53d600b7f45655f7b35c1fe93
8773         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
8774         Handle GPGME_STATUS_KEY_CONSIDERED.
8775
8776 2016-05-19  Werner Koch  <wk@gnupg.org>
8777
8778         api: Add new function gpgme_set_ctx_flag.
8779         + commit 88f2c1c0d16eee6bb36a901623ea65ac69499f03
8780         * src/gpgme.h.in (gpgme_set_ctx_flag): New prototype.
8781         * src/gpgme.c (gpgme_set_ctx_flag): New.
8782         * src/gpgme.def, src/libgpgme.vers: Add new function.
8783         * src/context.h (struct gpgme_context): Add FULL_STATUS.
8784         * src/decrypt.c (_gpgme_decrypt_status_handler): Do not call the
8785           status callback if FULL_STATUS is set.
8786         * src/genkey.c (genkey_status_handler): Ditto.
8787         * src/passphrase.c (_gpgme_passphrase_status_handler): Ditto.
8788         * src/sign.c (_gpgme_sign_status_handler): Ditto.
8789
8790         * src/engine-backend.h (struct engine_ops): Add SET_STATUS_CB and add
8791         adjust all definitions of that variable.
8792         * src/engine.c (_gpgme_engine_set_status_cb): New.
8793         * src/op-support.c (_gpgme_op_reset): Call this function.
8794
8795         * src/engine-gpg.c (struct engine_gpg): Add fields MON_CB and
8796         MON_CB_VALUE.
8797         (gpg_set_status_cb): New.
8798         (_gpgme_engine_ops_gpg): Register that function.
8799         (read_status): Call the monitor callback.
8800
8801         * src/engine-gpgsm.c (struct engine_gpgsm): Add fields MON_CB and
8802         MON_CB_VALUE.
8803         (_gpgme_engine_ops_gpgsm): Register that function.
8804         (gpgsm_assuan_simple_command): Change first arg to be an engine
8805         context and adjust call callers.  Call the monitor callback.
8806
8807         * src/engine-uiserver.c (struct engine_uiserver): Add fields MON_CB
8808         and MON_CB_VALUE.
8809         (_gpgme_engine_ops_uiserver): Register that function.
8810         (uiserver_assuan_simple_command): Change first arg to be an engine
8811         context and adjust call callers.  Call the monitor callback.
8812
8813         * tests/run-verify.c (status_cb): New.
8814         (print_result): Print algo names.
8815         (main): Add option --status.
8816
8817         api: Remove arbitrary restriction from gpgme_op_verify.
8818         + commit 5aa8e588e166abeef2e3d677ab6830f2d7af1b5d
8819         * src/verify.c (verify_start): Do not return GPG_ERR_INV_VALUES when
8820         when SIGNED_TEXT is not given.
8821
8822 2016-05-19  Justus Winter  <justus@gnupg.org>
8823
8824         python: Improve progress callbacks.
8825         + commit 0d4e95621e05d50cd454049a424bb9ee098a5db6
8826         * lang/python/helpers.c (pyProgressCb): Stash python errors, convert
8827         'what' to Unicode object.
8828         * lang/python/pyme/core.py (Context.set_progress_cb): Hand in 'self'.
8829         * lang/python/tests/t-callbacks.py: Test progress callbacks.
8830
8831         python: Robust exception handling in callbacks.
8832         + commit d90857a08c4fe5b73b6d6d46fd6200efdd72db44
8833         * lang/python/helpers.c (pygpgme_stash_callback_exception): New
8834         function.
8835         (pygpgme_raise_callback_exception): Likewise.
8836         (pyPassphraseCb): Stash python errors.
8837         * lang/python/helpers.h (pygpgme_raise_callback_exception): New
8838         prototype.
8839         * lang/python/pyme/core.py ({Context,Data}.__init__): Move common
8840         initialization to superclass.
8841         (Context.set_progress_cb): Hand in 'self'.
8842         * lang/python/pyme/util.py (GpgmeWrapper.__init__): New function.
8843         (GpgmeWrapper.__getattr__): Raise stashed exceptions.
8844         * lang/python/tests/Makefile.am (py_tests): Add new test.
8845         * lang/python/tests/t-callbacks.py: New file.
8846
8847 2016-05-19  Andre Heinecke  <aheinecke@intevation.de>
8848
8849         Qt: Check for graphviz and set HAVE_DOT correctly.
8850         + commit 2f748b5a2d162be4f23b18782219771ead54cb51
8851         * configure.ac: Check for graphviz and define HAVE_DOT.
8852         * lang/qt/doc/Doxyfile.in (HAVE_DOT): Use variable.
8853
8854 2016-05-19  Justus Winter  <justus@gnupg.org>
8855
8856         python: Add more tests.
8857         + commit 464d404c8816fc93baf945816c93e86bdeb0ea39
8858         * lang/python/tests/Makefile.am (py_tests): Add new tests.
8859         * lang/python/tests/support.py (print_data): New function.
8860         * lang/python/tests/t-decrypt.py: Use new function.
8861         * lang/python/tests/t-encrypt.py: Likewise.
8862         * lang/python/tests/t-sign.py: New file.
8863         * lang/python/tests/t-encrypt-sym.py: Likewise.
8864
8865         python: More type conversion fixes.
8866         + commit c1c893e3384a07ff864507902fbac4a7fee4d6f1
8867         * lang/python/helpers.c (pyPassphraseCb): Cope with 'uid_hint' being
8868         NULL, convert it to an Unicode object, and cope with the callback
8869         returning both Unicode and bytes objects.
8870
8871         python: Fix import.
8872         + commit 07f71cd17706093ca6b1507c41609356d479ae9f
8873         * lang/python/helpers.c (pygpgme_exception_init): Make module import
8874         relative.
8875
8876 2016-05-19  Andre Heinecke  <aheinecke@intevation.de>
8877
8878         Qt: Fix compilation of unit tests.
8879         + commit 375523ead3a749d77d286c56f10d403c07f2b014
8880         * lang/qt/tests/Makefile.am (AM_CPPFLAGS): Add -DBUILDING_QGPGME.
8881
8882 2016-05-18  Justus Winter  <justus@gnupg.org>
8883
8884         python: Various fixes.
8885         + commit 2c3a5d93e78cfca22785e51c5a65184a47da4bff
8886         * configure.ac: Fix SWIG detection, bump required Python version.
8887         * lang/python/Makefile.am: Portability fix.
8888
8889 2016-05-18  Andre Heinecke  <aheinecke@intevation.de>
8890
8891         Fix typo in compatibility declaration.
8892         + commit f0dca0ab92ed18d80e30d7d39db1596b4112794f
8893         * src/op-support.c (GPG_ERR_SUBKEYS_EXP_REV): Change to
8894         GPG_ERR_SUBKEYS_EXP_OR_REV.
8895
8896 2016-05-17  Werner Koch  <wk@gnupg.org>
8897
8898         tests: New maintenance helper run-encrypt.
8899         + commit 30b447fcfe0e4f362c2575e1b9388e8144b5b2fd
8900         * tests/run-encrypt.c: New.
8901
8902         Return dedicated error code for all subkeys expired or revoked.
8903         + commit 315fb73d4a774e2c699ac1804f5377559b4d0027
8904         * src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
8905         (GPGME_SIGSUM_TOFU_CONFLICT): New.
8906         * src/status-table.c (KEY_CONSIDERED): New.
8907         * src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
8908         KC_FLAGS.  Use calloc.  Detect all expired or revoked subkeys.
8909         (_gpgme_parse_key_considered): New.
8910         * src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
8911         (release_op_data): Free KC_FPR.
8912         (_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
8913         * src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
8914         (release_op_data): Free KC_FPR.
8915         (_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
8916
8917 2016-05-17  Andre Heinecke  <aheinecke@intevation.de>
8918
8919         Qt / Cpp: Port auto_ptr to unique_ptr.
8920         + commit 9b36ebf37a3b889c955ba68038bd5b3d9c5cde4e
8921         * lang/cpp/src/context.cpp,
8922         lang/cpp/src/context.h,
8923         lang/cpp/src/context_p.h (Context::createForEngine),
8924         (Context::edit, Context::startEditing),
8925         (Context::takeLastEditInteractor, Context::cardEdit),
8926         (Context::startCardEditing, Context::takeLastCardEditInteractor),
8927         (Context::assuanTransact, Context::startAssuanTransaction),
8928         (Context::takeLastAssuanTransaction): Port to unique_ptr.
8929         * lang/qt/src/qgpgmeadduseridjob.cpp,
8930         lang/qt/src/qgpgmechangeexpiryjob.cpp,
8931         lang/qt/src/qgpgmechangeownertrustjob.cpp,
8932         lang/qt/src/qgpgmechangepasswdjob.cpp,
8933         lang/qt/src/qgpgmesignkeyjob.cpp: Update accordingly.
8934
8935 2016-05-17  Justus Winter  <justus@gnupg.org>
8936
8937         build: Add python autoconf macro.
8938         + commit 4711a1e181153a2395e5f523047595abd47965db
8939         * m4/ax_python_devel.m4: New file.
8940
8941         python: Clean up examples.
8942         + commit 10328324c8fc9725cd0c885eaebfc80dc32c1ff6
8943         * lang/python/examples/delkey.py: Clean up example.
8944         * lang/python/examples/encrypt-to-all.py: Likewise.
8945         * lang/python/examples/genkey.py: Likewise.
8946         * lang/python/examples/inter-edit.py: Likewise.
8947         * lang/python/examples/sign.py: Likewise.
8948         * lang/python/examples/signverify.py: Likewise.
8949         * lang/python/examples/simple.py: Likewise.
8950         * lang/python/examples/t-edit.py: Likewise.
8951         * lang/python/examples/verifydetails.py: Likewise.
8952         * lang/python/pyme/__init__.py: Likewise.
8953
8954         python: Import GPGMEError.
8955         + commit 64e5fe767f45e9ccb0fb3fe919171c222132a54c
8956         * pyme/core.py: Import GPGMEError.
8957
8958         Fixes c5d118b2.
8959
8960         python: Port more tests.
8961         + commit 9ceaec25918c6c5f2dfafe4e20181b83ce78f6ce
8962         * lang/python/Makefile.am: Add bits from the c test suite.
8963         * lang/python/support.py: New file.
8964         * lang/python/t-decrypt.py: Likewise.
8965         * lang/python/t-encrypt.py: Likewise.
8966
8967 2016-05-13  Andre Heinecke  <aheinecke@intevation.de>
8968
8969         Qt: Add keyLocateJob and test for it.
8970         + commit 52f2295d528029a36a3e0a89c777297762b3fc9b
8971         * configure.ac (LIBQGPGME_LT_REVISION): Bump.
8972         * lang/qt/src/protocol.h (locateKeysJob): Add Job.
8973         * lang/qt/src/protocol_p.h (locateKeysJob): Implement.
8974         * lang/qt/tests/Makefile.am: Add t-keylocate.
8975         * lang/qt/tests/t-keylocate.cpp: New.
8976
8977         Qt: Add missing copyright header in test.
8978         + commit 66ded1a5ce7236254f8541addecd4c3bc7b2878e
8979         * lang/qt/tests/t-keylist.cpp: Add copyright header.
8980
8981 2016-05-12  Justus Winter  <justus@gnupg.org>
8982
8983         python: Share generated methods between objects.
8984         + commit 11314f0db6e57597e3f56351a86fdb36a7a17dd7
8985         * lang/python/pyme/util.py (GpgmeWrapper.__getattr__): Monkey-patch
8986         the class.
8987         * lang/python/tests/t-wrapper.py: Demonstrate the sharing.
8988
8989         python: Raise exceptions on write errors.
8990         + commit c5d118b2a76e9528df780d11da9566ff7c22e4f5
8991         * lang/python/pyme/core.py (Data.write): Handle errors.
8992         * lang/python/pyme/errors.py (GPGMEError.fromSyserror): New function.
8993
8994         python: Fix writing to data buffers.
8995         + commit f7094d8358e933f3ce074eade7a40b2a7d291180
8996         * lang/python/gpgme.i: Add typemap for buffers.
8997         * lang/python/pyme/core.py (Data.write): Fix function.
8998         * lang/python/tests/Makefile.am: Add new test.
8999         * lang/python/tests/t-data.py: New file.
9000
9001         python: Add a test suite.
9002         + commit e64bffe0307d14204b00a177a472cd4f99c07561
9003         * configure.ac: Add new Makefile.
9004         * lang/python/Makefile.am: Add subdirectory.
9005         * lang/python/tests/Makefile.am: New file.
9006         * lang/python/tests/t-wrapper.py: Likewise.
9007
9008         python: Cache generated wrapper functions.
9009         + commit ed0ce84fbd2904bf59ac66ae7422716db3624efa
9010         * lang/python/util.py (GpgmeWrap.__getattr__): Cache generated wrapper
9011         functions.
9012
9013         python: Fix function invocation.
9014         + commit e3d3d366bd1a1aea8a38ae5dcbf71ea3c784e920
9015         * lang/python/pyme/core.py (Data.new_from_fd): Fix function
9016         invocation.
9017
9018         python: Fix name of exception, make slot methods explicit.
9019         + commit af9371eb63664c92fb67e8e7e03cc984e7d38a7f
9020         * lang/python/pyme/util.py (GpgmeWrapper._getctype): Fix exception,
9021         add docstring.
9022         (GpgmeWrapper._getnameprepend): New function.
9023         (GpgmeWrapper._errorcheck): Likewise.
9024
9025         python: Handle interpreter shutdown.
9026         + commit ce5121ad53b0e17fbf9150b354c80da73f7fe190
9027         * lang/python/pyme/core.py: Avoid races at interpreter shutdown.  This
9028         silences the most annoying occurrences, however this problem also
9029         affects the SWIG generated code, which might indicate that the real
9030         problem is somewhere else.  If so, this change can be easily reverted.
9031
9032         python: Make test case more robust.
9033         + commit c89d3a71ad20ff02755539a44f254b1e59054c4a
9034         * lang/python/examples/t-edit.py: Check if key is found.
9035
9036         python: Fix type translation.
9037         + commit d60deb8a127fb35c01acc729f33b014840af0e7b
9038         * lang/python/gpgme.i: Adjust to Python3's string type being
9039         'Unicode', not 'bytes'.  Fix type checking.
9040         * lang/python/core.py (Data.write): Add docstring mentioning the
9041         expected type of parameter 'buffer'.
9042         (Data.read): Adjust read loop.  Also, use a saner chunk size, and join
9043         all chunks at the end instead of adding them.
9044         * lang/python/examples/simple.py: Adjust example.
9045
9046 2016-05-11  Andre Heinecke  <aheinecke@intevation.de>
9047
9048         Cpp: Ensure gpgme.h is taken from current build.
9049         + commit b8de79160b2e05ac84d8feb61ff7ed1f7015a623
9050         * lang/cpp/src/Makefile.am (AM_CPPFLAGS): Add gpgme.h location.
9051
9052 2016-05-11  Justus Winter  <justus@gnupg.org>
9053
9054         python: Fix simple example.
9055         + commit bbeee5e1a060f2d1e37a08220eb552cf4673a058
9056         * lang/python/examples/simple.py: Flush stdout, encode name as
9057         UTF-8 before passing it to GPGME.
9058
9059         python: Integrate into the build system.
9060         + commit a29babd07cf9f9625d2b5aa2eb6b7bc9d1828359
9061         * configure.ac: Make Python bindings configurable, add new Makefile.
9062         * lang/python/Makefile.am: New file.
9063         * lang/python/setup.py: Integrate into the build system.
9064         * m4/ax_pkg_swig.m4: New file from the autoconf archive.
9065         * m4/m4_ax_swig_python.m4: Likewise.
9066
9067 2016-05-10  Andre Heinecke  <aheinecke@intevation.de>
9068
9069         Qt / Cpp: Fix make dist.
9070         + commit c303292aca26c43b6efe98719edb3ff7b2d6665d
9071         * lang/cpp/src/Makefile.am (EXTRA_DIST): Fix typo.
9072         (private_gpgmepp_headers): New. Private headers.
9073         (libgpgmepp_la_SOURCES): Add private headers.
9074         * lang/qt/src/Makefile.am (t_keylist_SOURCES): Remove non existent
9075         header.
9076
9077 2016-05-10  Justus Winter  <justus@gnupg.org>
9078
9079         python: PEP8 fixes.
9080         + commit 11392a80d9a85bcd8718b105e6d58038e61beaac
9081         Cherry picked from 0267c151.
9082
9083 2016-05-10  Andre Heinecke  <aheinecke@intevation.de>
9084
9085         Qt: Make Protocol class public API.
9086         + commit 56c4d9ea9520c95612e525b2fa1359db6fa88f4a
9087         * lang/qt/src/Makefile.am (qgpgme_headers): Add protocol.h
9088         (private_qgpgme_headers): Add protocol_p.h
9089         * lang/qt/src/protocol.h: New. From QGpgMEBackend.
9090         * lang/qt/src/protocol_p.h: New. From QGpgMEBackend.
9091         * lang/qt/src/qgpgmebackend.h,
9092         lang/qt/src/qgpgmebackend.cpp (Protocol): Removed.
9093
9094         Qt: Make doxygen quieter.
9095         + commit 97225bb01cd2ffa1d84c7fedbc577275de4a4893
9096         * lang/qt/doc/Doxyfile.in: Quiet and no undocumented warnings.
9097
9098         Qt: Only install public headers.
9099         + commit 740f92a7b83389ee9bde98b7bd25556793500b8b
9100         * lang/qt/src/Makefile.am: Do not install all headers.
9101
9102         Qt: Add test for async keylisting.
9103         + commit 0e3195948ddaba3af07d2415bb496491076edc17
9104         * src/lang/qt/tests/t-keylist.cpp(KeyListTest::testKeyListAsync): New.
9105
9106 2016-05-10  Werner Koch  <wk@gnupg.org>
9107
9108         Allow cc to detect missing cases in a switch.
9109         + commit fc38c15136c87ce971a8381fa87399088dd5a3cc
9110         * src/delete.c (delete_status_handler): Remove default case from a
9111         switch so that cc can check the use of all enum values.
9112
9113 2016-05-06  Andre Heinecke  <aheinecke@intevation.de>
9114
9115         Use common error message style for qt lang checks.
9116         + commit a579be82c84f0b9732ee3d52ff2142a3decf95d7
9117         * configure.ac: Use common error highliting for qt lang options.
9118
9119         Qt: Fix license mentioned in README.
9120         + commit 11ff8d5964bf66f905818514f6a51fc881ea1a56
9121         * lang/qt/README: License is GPLv2+ and not LGPL.
9122
9123         Add maybe mode for langs and default to it.
9124         + commit cd267791e9bd73505a2a1ea90c85df988e153c19
9125         * configure.ac (languages): Warn and disable langs for which
9126         requirements are not met.
9127
9128         Cpp: Handle PINENTRY_LAUNCHED status line.
9129         + commit 3fad1216770f446a89801d842aa8667356a5ec95
9130         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
9131         Add GPGME_STATUS_PINENTRY_LAUNCHED.
9132
9133 2016-04-12  Andre Heinecke  <aheinecke@intevation.de>
9134
9135         Cpp: Add support for pubkey_algo_name.
9136         + commit 5489532ad6ccf3a9b59405686b8a17352f1ecf06
9137         * lang/cpp/src/key.cpp (Subkey::algoName): New.
9138         * lang/cpp/src/key.h: Declare.
9139
9140         Cpp: Add support for gpgme_data_identify.
9141         + commit d949d711dc1d944a9d627d39a89af74943a5a8c1
9142         * lang/cpp/src/data.cpp (Data::type): New.
9143         * lang/cpp/src/data.h (Data::Type): New enum mapping.
9144
9145         Fix configuration without Qt language.
9146         + commit 6dba47c3a2c32d7c1e1d91a96030f99f606433ea
9147         * configure.ac: Define HAVE_DOXYGEN also if qt should not be built.
9148
9149 2016-04-11  Andre Heinecke  <aheinecke@intevation.de>
9150
9151         Qt/Cpp: Bump so version to 6.
9152         + commit 8e7074dbb8093cc342e330bcd6b172b4f769a0c6
9153         * configure.ac (LIBGPGMEPP_LT_CURRENT, LIBQGPGME_LT_CURRENT): Bump.
9154
9155         Qt / Cpp: Mention coding style in READMES.
9156         + commit d2b55101195efe9702e855a48fc6e21839fb98cc
9157         * src/lang/cpp/README, src/lang/qt/README: Add hacking note.
9158
9159         Qt: Add doc generation with doxygen.
9160         + commit a1e95f36ce1895cd9894f6d3ca76640c42c2f9fc
9161         * configure.ac: Look for doxygen if qt is built.
9162          Configure new files.
9163         * lang/qt/doc/Doxyfile.in: New.
9164         * lang/qt/doc/Makefile.am: New.
9165         * lang/qt/README: Update.
9166
9167         Qt: Fix unit test by adding initial.test dep.
9168         + commit d9f7a18ed88127e7f05d770d55118d1e928f3b3f
9169         * lang/qt/tests/t-keylist.cpp: Verify that GNUPGHOME is set.
9170         * lang/qt/tests/initial.test: New dummy test.
9171         * lang/qt/tests/Makefile.am: Add dependency to initial.test
9172
9173         Qt: Remove remaining boost usage.
9174         + commit afd8fad6e275e2f74b2ad045dce05d826986e2ec
9175         * lang/qt/src/dataprovider.h,
9176          lang/qt/src/decryptjob.h,
9177          lang/qt/src/decryptverifyjob.h,
9178          lang/qt/src/encryptjob.h,
9179          lang/qt/src/qgpgmeadduseridjob.cpp,
9180          lang/qt/src/qgpgmechangeexpiryjob.cpp,
9181          lang/qt/src/qgpgmechangeownertrustjob.cpp,
9182          lang/qt/src/qgpgmechangepasswdjob.cpp,
9183          lang/qt/src/qgpgmedecryptjob.cpp,
9184          lang/qt/src/qgpgmedecryptverifyjob.cpp,
9185          lang/qt/src/qgpgmedeletejob.cpp,
9186          lang/qt/src/qgpgmedownloadjob.cpp,
9187          lang/qt/src/qgpgmeencryptjob.cpp,
9188          lang/qt/src/qgpgmeexportjob.cpp,
9189          lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
9190          lang/qt/src/qgpgmeimportjob.cpp,
9191          lang/qt/src/qgpgmekeygenerationjob.cpp,
9192          lang/qt/src/qgpgmekeylistjob.cpp,
9193          lang/qt/src/qgpgmenewcryptoconfig.cpp,
9194          lang/qt/src/qgpgmenewcryptoconfig.h,
9195          lang/qt/src/qgpgmesignencryptjob.cpp,
9196          lang/qt/src/qgpgmesignjob.cpp,
9197          lang/qt/src/qgpgmesignkeyjob.cpp,
9198          lang/qt/src/qgpgmeverifydetachedjob.cpp,
9199          lang/qt/src/qgpgmeverifyopaquejob.cpp,
9200          lang/qt/src/signencryptjob.h,
9201          lang/qt/src/signjob.h,
9202          lang/qt/src/threadedjobmixin.cpp,
9203          lang/qt/src/threadedjobmixin.h,
9204          lang/qt/src/verifydetachedjob.h,
9205          lang/qt/src/verifyopaquejob.h: Remove boost usage.
9206
9207         Qt: Remove predicates.h and stl_util.h.
9208         + commit e18256fc5f613da9406da60c3ef2f84f2be04ef0
9209         * src/lang/qt/predicates.h, src/lang/qt/stl_util.h: Removed.
9210
9211         Qt: Remove usage of stl_util.h and predicates.h.
9212         + commit d293bd32293929eeb3f6ec35f916a4678fb51729
9213         * src/lang/qt/qgpgmelistallkeysjob.cpp: Use comperators from
9214           gpgmepp instead of detail. Remove boost usage.
9215
9216         Cpp: Add string comparators for keys.
9217         + commit 1bb162a54ba480413c4da07f2578efe6860494c0
9218         * lang/cpp/src/global.h (GPGMEPP_MAKE_STRCMP): New.
9219           (_gpgmepp_strcmp): NULL save wrapper around std::strcmp.
9220         * lang/cpp/src/key.h: Add comparators for various attributes.
9221
9222         Cpp: Remove last usages of boost.
9223         + commit 691950e18cf08a3f9bbc2004501834cd47bea579
9224         * lang/cpp/src/configuration.cpp: Use std::remove_pointer.
9225           (Configuration::operator<<): std::for_each.
9226         * lang/cpp/src/context.cpp: Delete manually instead of scoped ptr.
9227         * lang/cpp/src/scdgetinfoassuantransaction.cpp: Use static_assert.
9228           (to_reader_list): Tokenize with getline.
9229
9230 2016-04-04  Andre Heinecke  <aheinecke@intevation.de>
9231
9232         Add pthread in gpgmepp config.
9233         + commit cc68ff5f7210ac879fbdf719fcd5944f9ae5602b
9234         * lang/cpp/src/GpgmeppConfig.cmake.in.in: Add pthread.
9235
9236 2016-04-03  Andre Heinecke  <aheinecke@intevation.de>
9237
9238         Cpp / Qt: Reduce boost usage (memory and tuple)
9239         + commit f98898ab1a6952e0c3a5d235963a27eba2e19e46
9240         * cpp/src/assuanresult.h,
9241          cpp/src/configuration.cpp,
9242          cpp/src/configuration.h,
9243          cpp/src/data.h,
9244          cpp/src/decryptionresult.h,
9245          cpp/src/defaultassuantransaction.cpp,
9246          cpp/src/encryptionresult.cpp,
9247          cpp/src/encryptionresult.h,
9248          cpp/src/engineinfo.h,
9249          cpp/src/gpgagentgetinfoassuantransaction.cpp,
9250          cpp/src/gpgsignkeyeditinteractor.cpp,
9251          cpp/src/importresult.cpp,
9252          cpp/src/importresult.h,
9253          cpp/src/key.h,
9254          cpp/src/keygenerationresult.h,
9255          cpp/src/keylistresult.h,
9256          cpp/src/notation.h,
9257          cpp/src/signingresult.cpp,
9258          cpp/src/signingresult.h,
9259          cpp/src/verificationresult.cpp,
9260          cpp/src/verificationresult.h,
9261          cpp/src/vfsmountresult.h,
9262          qt/src/dataprovider.cpp,
9263          qt/src/dataprovider.h,
9264          qt/src/decryptjob.h,
9265          qt/src/decryptverifyjob.h,
9266          qt/src/downloadjob.h,
9267          qt/src/encryptjob.h,
9268          qt/src/qgpgmeadduseridjob.cpp,
9269          qt/src/qgpgmechangeexpiryjob.cpp,
9270          qt/src/qgpgmechangeownertrustjob.cpp,
9271          qt/src/qgpgmechangepasswdjob.cpp,
9272          qt/src/qgpgmedecryptjob.cpp,
9273          qt/src/qgpgmedecryptjob.h,
9274          qt/src/qgpgmedecryptverifyjob.cpp,
9275          qt/src/qgpgmedecryptverifyjob.h,
9276          qt/src/qgpgmedeletejob.cpp,
9277          qt/src/qgpgmedownloadjob.cpp,
9278          qt/src/qgpgmedownloadjob.h,
9279          qt/src/qgpgmeencryptjob.cpp,
9280          qt/src/qgpgmeencryptjob.h,
9281          qt/src/qgpgmeexportjob.cpp,
9282          qt/src/qgpgmeexportjob.h,
9283          qt/src/qgpgmeimportfromkeyserverjob.cpp,
9284          qt/src/qgpgmeimportfromkeyserverjob.h,
9285          qt/src/qgpgmeimportjob.cpp,
9286          qt/src/qgpgmeimportjob.h,
9287          qt/src/qgpgmekeygenerationjob.cpp,
9288          qt/src/qgpgmekeygenerationjob.h,
9289          qt/src/qgpgmekeylistjob.cpp,
9290          qt/src/qgpgmekeylistjob.h,
9291          qt/src/qgpgmelistallkeysjob.cpp,
9292          qt/src/qgpgmelistallkeysjob.h,
9293          qt/src/qgpgmenewcryptoconfig.cpp,
9294          qt/src/qgpgmenewcryptoconfig.h,
9295          qt/src/qgpgmesignencryptjob.cpp,
9296          qt/src/qgpgmesignencryptjob.h,
9297          qt/src/qgpgmesignjob.cpp,
9298          qt/src/qgpgmesignjob.h,
9299          qt/src/qgpgmesignkeyjob.cpp,
9300          qt/src/qgpgmeverifydetachedjob.cpp,
9301          qt/src/qgpgmeverifydetachedjob.h,
9302          qt/src/qgpgmeverifyopaquejob.cpp,
9303          qt/src/qgpgmeverifyopaquejob.h,
9304          qt/src/signencryptjob.h,
9305          qt/src/signjob.h,
9306          qt/src/threadedjobmixin.h,
9307          qt/src/verifydetachedjob.h,
9308          qt/src/verifyopaquejob.h: Reduce boost usage.
9309
9310         Cpp: Require c++ 11 if cpp binding requested.
9311         + commit c07aaef6eb8a9b5e623479f27d562fd1570bf4bb
9312         * configure.ac: Call ax_cxx_compile_stdcxx
9313         * m4/ax_cxx_compile_stdcxx.m4
9314
9315         Qt: Add static factor methods for protocol.
9316         + commit 0991485170ca4ef90fd566540522027d0fc59a72
9317         * lang/qt/src/qgpgmebackend.cpp (QGpgME::openpgp, QGpgME::smime): New.
9318         * lang/qt/src/qgpgmebackend.h: Declare.
9319         * lang/qt/tests/t-keylist.cpp (KeyListTest::testSingleKeyListSync):
9320           Use new functions.
9321
9322         Qt: Add a unit test for qgpgme.
9323         + commit faf987dd62893955251378a2a715edd2892a540c
9324         * configure.ac: Configure test Makefile.
9325         * m4/qt.m4: Look up Qt5Test flags.
9326         * lang/qt/tests/t-keylist.cpp: New. Simple keylist check.
9327         * lang/qt/tests/Makefile.am: New. General test framework.
9328
9329         Qt: Add missing MOC includes.
9330         + commit b7b9e38399a572cb61a297db552026eac5b2a5e1
9331         * qgpgmeadduseridjob.cpp,
9332          qgpgmechangeexpiryjob.cpp,
9333          qgpgmechangeownertrustjob.cpp,
9334          qgpgmechangepasswdjob.cpp,
9335          qgpgmedecryptjob.cpp,
9336          qgpgmedecryptverifyjob.cpp,
9337          qgpgmedeletejob.cpp,
9338          qgpgmedownloadjob.cpp,
9339          qgpgmeencryptjob.cpp,
9340          qgpgmeexportjob.cpp,
9341          qgpgmeimportfromkeyserverjob.cpp,
9342          qgpgmeimportjob.cpp,
9343          qgpgmekeygenerationjob.cpp,
9344          qgpgmekeylistjob.cpp,
9345          qgpgmelistallkeysjob.cpp,
9346          qgpgmerefreshkeysjob.cpp,
9347          qgpgmesecretkeyexportjob.cpp,
9348          qgpgmesignencryptjob.cpp,
9349          qgpgmesignjob.cpp,
9350          qgpgmesignkeyjob.cpp,
9351          qgpgmeverifydetachedjob.cpp,
9352          qgpgmeverifyopaquejob.cpp: Add missing MOC includes.
9353
9354         Qt: Declare pure virtuals as such.
9355         + commit 0cc9006dbc59d87c6bcda88b36d59dcb69ac35cb
9356         * lang/qt/src/qgpgmebackend.h (Protocol): Make all functions
9357          pure virtual.
9358
9359         Qt: Don't declare showErrorDialog anymore.
9360         + commit 3e38cc6fc67c420dec3e9e8afd072b4c8a157c85
9361         * cpp/qt/src/job.h: Remove showErrorDialog.
9362
9363         Qt: Only use GpgME based config class.
9364         + commit 7071b2a9c00b85d434d01b6166269ebf48b01b81
9365         * lang/qt/src/qgpgmecryptoconfig.cpp,
9366          lang/qt/src/qgpgmecryptoconfig.h: Removed.
9367         * lang/qt/src/qgpgmebackend.cpp: Return newcryptoconfig.
9368
9369 2016-04-02  Andre Heinecke  <aheinecke@intevation.de>
9370
9371         Add additional include path in config files.
9372         + commit 63c115b067400e1b02c7d849c99f54dc9f394d68
9373         * lang/cpp/src/GpgmeppConfig.cmake.in.in
9374          lang/qt/src/QGpgmeConfig.cmake.in.in: Include directory above headers.
9375
9376         Qt: Fix library name in nodist variable.
9377         + commit 576be46f34b42e896a5e3be65560a4b518a758be
9378         * lang/qt/Makefile.am (nodist_qgpgme_SOURCES): Change to real name.
9379
9380         Add missing files to QGpgME.
9381         + commit a440050fc2c11e4867da9d4707616fa23ac52141
9382         * lang/qt/src/gpgme_backend_debug.cpp,
9383          lang/qt/src/gpgme_backend_debug.h,
9384          lang/qt/src/predicates.h,
9385          lang/qt/src/stl_util.h: New.
9386
9387         Add QGpgME code from libkleo.
9388         + commit 226e51052ae73efa8d9f30729b28de68d35231af
9389         * lang/qt/src/Makefile.am,
9390         lang/qt/src/abstractimportjob.h,
9391         lang/qt/src/adduseridjob.h,
9392         lang/qt/src/changeexpiryjob.h,
9393         lang/qt/src/changeownertrustjob.h,
9394         lang/qt/src/changepasswdjob.h,
9395         lang/qt/src/cryptoconfig.h,
9396         lang/qt/src/decryptjob.h,
9397         lang/qt/src/decryptverifyjob.h,
9398         lang/qt/src/deletejob.h,
9399         lang/qt/src/downloadjob.h,
9400         lang/qt/src/encryptjob.h,
9401         lang/qt/src/exportjob.h,
9402         lang/qt/src/hierarchicalkeylistjob.h,
9403         lang/qt/src/importfromkeyserverjob.h,
9404         lang/qt/src/importjob.h,
9405         lang/qt/src/job.cpp,
9406         lang/qt/src/job.h,
9407         lang/qt/src/keygenerationjob.h,
9408         lang/qt/src/keylistjob.h,
9409         lang/qt/src/listallkeysjob.h,
9410         lang/qt/src/multideletejob.h,
9411         lang/qt/src/qgpgmeadduseridjob.cpp,
9412         lang/qt/src/qgpgmeadduseridjob.h,
9413         lang/qt/src/qgpgmebackend.cpp,
9414         lang/qt/src/qgpgmebackend.h,
9415         lang/qt/src/qgpgmechangeexpiryjob.cpp,
9416         lang/qt/src/qgpgmechangeexpiryjob.h,
9417         lang/qt/src/qgpgmechangeownertrustjob.cpp,
9418         lang/qt/src/qgpgmechangeownertrustjob.h,
9419         lang/qt/src/qgpgmechangepasswdjob.cpp,
9420         lang/qt/src/qgpgmechangepasswdjob.h,
9421         lang/qt/src/qgpgmecryptoconfig.cpp,
9422         lang/qt/src/qgpgmecryptoconfig.h,
9423         lang/qt/src/qgpgmedecryptjob.cpp,
9424         lang/qt/src/qgpgmedecryptjob.h,
9425         lang/qt/src/qgpgmedecryptverifyjob.cpp,
9426         lang/qt/src/qgpgmedecryptverifyjob.h,
9427         lang/qt/src/qgpgmedeletejob.cpp,
9428         lang/qt/src/qgpgmedeletejob.h,
9429         lang/qt/src/qgpgmedownloadjob.cpp,
9430         lang/qt/src/qgpgmedownloadjob.h,
9431         lang/qt/src/qgpgmeencryptjob.cpp,
9432         lang/qt/src/qgpgmeencryptjob.h,
9433         lang/qt/src/qgpgmeexportjob.cpp,
9434         lang/qt/src/qgpgmeexportjob.h,
9435         lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
9436         lang/qt/src/qgpgmeimportfromkeyserverjob.h,
9437         lang/qt/src/qgpgmeimportjob.cpp,
9438         lang/qt/src/qgpgmeimportjob.h,
9439         lang/qt/src/qgpgmekeygenerationjob.cpp,
9440         lang/qt/src/qgpgmekeygenerationjob.h,
9441         lang/qt/src/qgpgmekeylistjob.cpp,
9442         lang/qt/src/qgpgmekeylistjob.h,
9443         lang/qt/src/qgpgmelistallkeysjob.cpp,
9444         lang/qt/src/qgpgmelistallkeysjob.h,
9445         lang/qt/src/qgpgmenewcryptoconfig.cpp,
9446         lang/qt/src/qgpgmenewcryptoconfig.h,
9447         lang/qt/src/qgpgmerefreshkeysjob.cpp,
9448         lang/qt/src/qgpgmerefreshkeysjob.h,
9449         lang/qt/src/qgpgmesecretkeyexportjob.cpp,
9450         lang/qt/src/qgpgmesecretkeyexportjob.h,
9451         lang/qt/src/qgpgmesignencryptjob.cpp,
9452         lang/qt/src/qgpgmesignencryptjob.h,
9453         lang/qt/src/qgpgmesignjob.cpp,
9454         lang/qt/src/qgpgmesignjob.h,
9455         lang/qt/src/qgpgmesignkeyjob.cpp,
9456         lang/qt/src/qgpgmesignkeyjob.h,
9457         lang/qt/src/qgpgmeverifydetachedjob.cpp,
9458         lang/qt/src/qgpgmeverifydetachedjob.h,
9459         lang/qt/src/qgpgmeverifyopaquejob.cpp,
9460         lang/qt/src/qgpgmeverifyopaquejob.h,
9461         lang/qt/src/refreshkeysjob.h,
9462         lang/qt/src/signencryptjob.h,
9463         lang/qt/src/signjob.h,
9464         lang/qt/src/signkeyjob.h,
9465         lang/qt/src/specialjob.h,
9466         lang/qt/src/threadedjobmixin.cpp,
9467         lang/qt/src/threadedjobmixin.h,
9468         lang/qt/src/verifydetachedjob.h,
9469         lang/qt/src/verifyopaquejob.h: New.
9470         * lang/qt/src/Makefile.am:
9471
9472 2016-03-08  Andre Heinecke  <aheinecke@intevation.de>
9473
9474         Add qgpgme as qt language binding.
9475         + commit 8347f3d5fc3e476aa767fbbaf09a1310a6154280
9476         * configure.ac: Add version defines. Check for qt if neccessary.
9477         * lang/README: Mention qt
9478         * lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove comment. Find qgpgme.
9479         * lang/qt/src/Makefile.am: New. Build qgpgme.
9480         * lang/qt/README,
9481          lang/qt/src/Makefile.am,
9482          lang/qt/src/QGpgmeConfig.cmake.in.in,
9483          lang/qt/src/QGpgmeConfigVersion.cmake.in,
9484          lang/qt/src/dataprovider.cpp,
9485          lang/qt/src/dataprovider.h,
9486          lang/qt/src/qgpgme_export.h,
9487          m4/qt.m4: New.
9488         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
9489          lang/cpp/src/Makefile.am: Fix generated config file.
9490
9491         Remove obsolete w32-qt code.
9492         + commit 58ed9c17f00f420035ecc6973a6c6ed948757a9a
9493         * configure.ac (w32-qt): Remove option and Qt checks.
9494         * src/Makefile.am: Remove BUILD_W32_QT handling.
9495         * src/kdpipeiodevice.cpp,
9496          src/kdpipeiodevice.h,
9497          src/kdpipeiodevice.moc,
9498          src/w32-qt-io.cpp: Removed.
9499
9500 2016-03-02  Andre Heinecke  <aheinecke@intevation.de>
9501
9502         Add version info for gpgmepp.
9503         + commit a06603d75e80aba58df58f9a41770c56b6a1f0b8
9504         * lang/cpp/src/Makefile.am (libgpgmepp_la_LDFLAGS): Add version info.
9505
9506         Add cmake configuration files.
9507         + commit 77c3fb450c7adf36804a55d76ff49a06a71d22a0
9508         * configure.ac: Add libgpgmepp version. Configure cmake files.
9509         * lang/cpp/src/Makefile.am: Add targets for cmake files.
9510          (EXTRA_DIST): Add cmake files.
9511
9512         Fix export header and windows export macros.
9513         + commit 98e5b672422ca1e38ca38ff0357cee6cc936aee0
9514         * lang/cpp/src/gpgme_export.h: Fix variable name. Add Windows ifdefs.
9515
9516         Add header installation.
9517         + commit c5291a88913ace8f2115021b69c7aeb59b4f79d4
9518         * lang/cpp/src/Makefile.am: Add headers as deps and install them.
9519          (AM_CPPFLAGS): Add BUILDING_GPGMEPP to be used in export macros.
9520
9521         Add enable-languages build option.
9522         + commit a313b3e28cc42785365822519b25d6a87dfdf0c9
9523         * acinclude.m4 (LIST_MEMBER): New macro.
9524         * configure.ac (enable-languages): New option. Add info output.
9525         * lang/Makefile.am: Only add enabled language subdirs.
9526
9527 2016-02-22  Andre Heinecke  <aheinecke@intevation.de>
9528
9529         Add README for gpgmepp.
9530         + commit 7286fc7f3d51d475f82c7c9821d031290f5b0066
9531         * lang/README: Note down cpp.
9532         * cpp/README: Add README based on original repo version.
9533
9534         Add buildsystem for Gpgmepp.
9535         + commit f5fd787b5b45cb14d539b5c26f44066eb9ac0f75
9536         * configure.ac: Configure Makefiles.
9537         * lang/Makefile.am: Add cpp subdir
9538         * lang/cpp/Makefile.am: New. Add src subdir.
9539         * lang/cpp/src/Makefile.am: New. Basic buildsystem.
9540
9541         Remove feature check ifdefs.
9542         + commit 433bb8e84b2d1e50b5c5b9f7f2006b60cd7d7785
9543         * lang/cpp/src/assuanresult.cpp,
9544          lang/cpp/src/callbacks.cpp,
9545          lang/cpp/src/configuration.cpp,
9546          lang/cpp/src/context.cpp,
9547          lang/cpp/src/context_glib.cpp,
9548          lang/cpp/src/context_qt.cpp,
9549          lang/cpp/src/context_vanilla.cpp,
9550          lang/cpp/src/data.cpp,
9551          lang/cpp/src/decryptionresult.cpp,
9552          lang/cpp/src/defaultassuantransaction.cpp,
9553          lang/cpp/src/editinteractor.cpp,
9554          lang/cpp/src/encryptionresult.cpp,
9555          lang/cpp/src/engineinfo.cpp,
9556          lang/cpp/src/eventloopinteractor.cpp,
9557          lang/cpp/src/global.h,
9558          lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
9559          lang/cpp/src/importresult.cpp,
9560          lang/cpp/src/interfaces/assuantransaction.h,
9561          lang/cpp/src/key.cpp,
9562          lang/cpp/src/keygenerationresult.cpp,
9563          lang/cpp/src/keylistresult.cpp,
9564          lang/cpp/src/scdgetinfoassuantransaction.cpp,
9565          lang/cpp/src/signingresult.cpp,
9566          lang/cpp/src/trustitem.cpp,
9567          lang/cpp/src/util.h,
9568          lang/cpp/src/verificationresult.cpp,
9569          lang/cpp/src/vfsmountresult.cpp: Remove feature checks.
9570
9571         Initial checkin of gpgmepp sources.
9572         + commit 0855a1296a1908016f011eb5e6552854ac53e63a
9573         Based on git.kde.org/pim/gpgmepp rev. 0e3ebc02
9574
9575         * lang/cpp/src/assuanresult.cpp,
9576          lang/cpp/src/assuanresult.h,
9577          lang/cpp/src/callbacks.cpp,
9578          lang/cpp/src/callbacks.h,
9579          lang/cpp/src/configuration.cpp,
9580          lang/cpp/src/configuration.h,
9581          lang/cpp/src/context.cpp,
9582          lang/cpp/src/context.h,
9583          lang/cpp/src/context_glib.cpp,
9584          lang/cpp/src/context_p.h,
9585          lang/cpp/src/context_qt.cpp,
9586          lang/cpp/src/context_vanilla.cpp,
9587          lang/cpp/src/data.cpp,
9588          lang/cpp/src/data.h,
9589          lang/cpp/src/data_p.h,
9590          lang/cpp/src/decryptionresult.cpp,
9591          lang/cpp/src/decryptionresult.h,
9592          lang/cpp/src/defaultassuantransaction.cpp,
9593          lang/cpp/src/defaultassuantransaction.h,
9594          lang/cpp/src/editinteractor.cpp,
9595          lang/cpp/src/editinteractor.h,
9596          lang/cpp/src/encryptionresult.cpp,
9597          lang/cpp/src/encryptionresult.h,
9598          lang/cpp/src/engineinfo.cpp,
9599          lang/cpp/src/engineinfo.h,
9600          lang/cpp/src/error.h,
9601          lang/cpp/src/eventloopinteractor.cpp,
9602          lang/cpp/src/eventloopinteractor.h,
9603          lang/cpp/src/exception.cpp,
9604          lang/cpp/src/exception.h,
9605          lang/cpp/src/global.h,
9606          lang/cpp/src/gpgadduserideditinteractor.cpp,
9607          lang/cpp/src/gpgadduserideditinteractor.h,
9608          lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
9609          lang/cpp/src/gpgagentgetinfoassuantransaction.h,
9610          lang/cpp/src/gpgmefw.h,
9611          lang/cpp/src/gpgmepp_export.h,
9612          lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
9613          lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
9614          lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
9615          lang/cpp/src/gpgsetownertrusteditinteractor.h,
9616          lang/cpp/src/gpgsignkeyeditinteractor.cpp,
9617          lang/cpp/src/gpgsignkeyeditinteractor.h,
9618          lang/cpp/src/importresult.cpp,
9619          lang/cpp/src/importresult.h,
9620          lang/cpp/src/key.cpp,
9621          lang/cpp/src/key.h,
9622          lang/cpp/src/keygenerationresult.cpp,
9623          lang/cpp/src/keygenerationresult.h,
9624          lang/cpp/src/keylistresult.cpp,
9625          lang/cpp/src/keylistresult.h,
9626          lang/cpp/src/notation.h,
9627          lang/cpp/src/result.h,
9628          lang/cpp/src/result_p.h,
9629          lang/cpp/src/scdgetinfoassuantransaction.cpp,
9630          lang/cpp/src/scdgetinfoassuantransaction.h,
9631          lang/cpp/src/signingresult.cpp,
9632          lang/cpp/src/signingresult.h,
9633          lang/cpp/src/trustitem.cpp,
9634          lang/cpp/src/trustitem.h,
9635          lang/cpp/src/util.h,
9636          lang/cpp/src/verificationresult.cpp,
9637          lang/cpp/src/verificationresult.h,
9638          lang/cpp/src/vfsmountresult.cpp,
9639          lang/cpp/src/vfsmountresult.h,
9640          lang/cpp/src/interfaces/assuantransaction.h,
9641          lang/cpp/src/interfaces/dataprovider.h,
9642          lang/cpp/src/interfaces/passphraseprovider.h,
9643          lang/cpp/src/interfaces/progressprovider.h: New.
9644
9645 2016-01-15  Werner Koch  <wk@gnupg.org>
9646
9647         Fix possible _SC_OPEN_MAX max problem on AIX.
9648         + commit e79199468ac54ce4fe919603ff7bada97267174f
9649         * src/posix-io.c [HAVE_STDINT_H]: Include stdint.h.
9650         (get_max_fds): Limit returned value for too high values.
9651
9652 2015-12-09  Werner Koch  <wk@gnupg.org>
9653
9654         w32: Avoid conflict with Mingw-w64 version 4.0.4-1.
9655         + commit 83415dffaea53611dbce77b50d8ddfb2a50aed2e
9656         * src/w32-util.c (mkstemp): Rename to my_mkstemp.  Change caller.
9657
9658 2015-12-04  Daiki Ueno  <ueno@gnu.org>
9659
9660         Return on user cancellation of delete operation.
9661         + commit 67d7f7a9383763b01daf877c846bf3e32f647fa5
9662         * src/delete.c (delete_status_handler): Return on ERROR status, if the
9663         error location is set to "delete_key.secret" and the code is either
9664         CANCELED or FULLY_CANCELED, which indicates a situation that the user
9665         selected "No" on the confirmation dialog.
9666
9667         doc: Fix minor errors.
9668         + commit 3b6e9a3d0afcdd3c2f1de19f15924c3404c7140a
9669         * doc/gpgme.texi: Fix errors and typos in the cancellation and
9670         gpgme_import_result_t documentation.
9671
9672 2015-10-29  Ben Kibbey  <bjk@luxsci.net>
9673
9674         Make use of user passphrase handler during passwd.
9675         + commit dfa79f9300b837b0f7f2ea44afa589bfcda1dbd9
9676         * src/passwd.c (passwd_start): set engine passphrase command handler.
9677
9678 2015-10-28  Werner Koch  <wk@gnupg.org>
9679
9680         w32: Add extra diagnostic about possible missing gpgme-w32spawn.exe.
9681         + commit bb2d11c1eebd4bcfb0f2cfce728026a7420dca47
9682         * src/w32-io.c (_gpgme_io_spawn): Add a new diagnostic.
9683
9684         w32: Improve locating gpgconf on 64 bit systems.
9685         + commit a82e9b182f62966207cad0972be6fa284329a5a1
9686         * src/w32-util.c (find_program_at_standard_place): Fallback to
9687         CSIDL_PROGRAM_FILESX86.
9688
9689         w32: Add new global flag "w32-inst-dir".
9690         + commit bb600aa8fd2f9575ee7afc64c978e3e7523b1173
9691         * src/gpgme.c (gpgme_set_global_flag): Add flag "w32-inst-dir";
9692         * src/posix-util.c (_gpgme_set_override_inst_dir): New stub.
9693         * src/w32-util.c (override_inst_dir): New var.
9694         (_gpgme_get_inst_dir): Return this var is set.
9695         (_gpgme_set_override_inst_dir): New.
9696
9697 2015-10-16  NIIBE Yutaka  <gniibe@fsij.org>
9698
9699         cleanup: Fix type mismatch around gpgme_error_t.
9700         + commit 0d9d0a6b5b0c6f474a079bbaef11078c5df5f3b5
9701         * src/data-compat.c (gpgme_error_to_errno): Use gpg_err_code
9702         to get error code from gpgme_error_t.
9703         * src/gpgme.c (gpgme_new): Don't use gpgme_error.
9704
9705 2015-08-31  Werner Koch  <wk@gnupg.org>
9706
9707         gpgme-tool: Switch to argparse.c for option parsing.
9708         + commit f0ccce855bd99fca7cfbbcafe3544e3113fedc67
9709         * src/argparse.c, src/argparse.h: New. Taken from current gnupg.
9710         * src/Makefile.am (gpgme_tool_SOURCES): New.
9711         * src/gpgme-tool.c: Remove all argp.h stuff.
9712         (my_strusage): New.
9713         (main): Change to use argparse.
9714
9715 2015-08-30  Werner Koch  <wk@gnupg.org>
9716
9717         Add gpgme_pubkey_algo_string.
9718         + commit c4b6b35bfa98e478f1d13f4ce3e664771f2604c2
9719         * src/gpgme.h.in (GPGME_PK_EDDSA): New.
9720         (gpgme_pubkey_algo_string): New.
9721         * src/conversion.c (_gpgme_map_pk_algo): Add new algo.
9722         * src/gpgme.c (gpgme_pubkey_algo_string): New.
9723         (gpgme_pubkey_algo_name): Reformat.
9724
9725 2015-08-26  Werner Koch  <wk@gnupg.org>
9726
9727         Release 1.6.0.
9728         + commit 107bff70edb611309f627058dd4777a5da084b1a
9729         * configure.ac: Set LT version to C25/A14/R0.
9730
9731         Make use of GPGRT macros is available.
9732         + commit c4f4b5c0a6fc172f7ceedc1a0021169e7f31b941
9733         * src/gpgme.h.in (_GPGME_INLINE): Define using GPGRT_INLINE if
9734         possible.  Fix problem with -Wundef by adding an extra "defined()".
9735         (_GPGME_GCC_VERSION): Define using GPGRT_ macro if possible.
9736
9737 2015-08-25  Werner Koch  <wk@gnupg.org>
9738
9739         Avoid -Wundef warnings if gpgme.h is used by g++.
9740         + commit 3f53d3d5d9e73a053b1e89073ef8f7cf01bfc8e6
9741         * src/gpgme.h.in (_GPGME_INLINE): Move definition into the
9742         extern-C-scope.
9743
9744         Add configure option --enable-build-timestamp.
9745         + commit ff91e699f7c14ea6cbc27b487cb40e9f6bd58901
9746         * configure.ac (BUILD_TIMESTAMP): Set to "<none>" by default.
9747
9748 2015-08-25  Daiki Ueno  <ueno@gnu.org>
9749
9750         Relax ttyname_r error checks.
9751         + commit 028a0ef3336c5180797fb247448683195376c007
9752         * src/engine-assuan.c (llass_new): Don't treat ttyname_r error as
9753         fatal.
9754         * src/engine-g13.c (g13_new): Likewise.
9755         * src/engine-gpg.c (gpg_new): Likewise.
9756         * src/engine-gpgsm.c (gpgsm_new): Likewise.
9757         * src/engine-uiserver.c (uiserver_new): Likewise.
9758
9759 2015-08-25  Werner Koch  <wk@gnupg.org>
9760
9761         Cleanup layout of gpgme.h.
9762         + commit 97f1f3e883808743da5ee144abab25de062f34ac
9763         * src/gpgme.h.in: Reorder prototypes.  Chnage some comments.
9764
9765         Improve error return by checking the FAILURE status.
9766         + commit 8ddc5801ade02297924447df5745c8877a96e5e3
9767         * src/gpgme.h.in (GPGME_STATUS_FAILURE): New.
9768         * src/status-table.c (FAILURE): New.
9769         * src/op-support.c (_gpgme_parse_failure): New.
9770         * src/passphrase.c (_gpgme_passphrase_status_handler): Forward FAILURE
9771         status line to the status callback.
9772
9773         * src/decrypt.c (op_data_t): Add field failure_code.
9774         (_gpgme_decrypt_status_handler): Parse that code and act upon it on EOF.
9775         * src/encrypt.c (op_data_t): Add field failure_code.
9776         (_gpgme_encrypt_status_handler): Parse that code and act upon it on EOF.
9777         * src/genkey.c (op_data_t): Add field failure_code.
9778         (genkey_status_handler): Parse that code and act upon it on EOF.
9779         * src/passwd.c (op_data_t): Add field failure_code.
9780         (passwd_status_handler): Parse that code and act upon it on EOF.
9781         * src/sign.c (op_data_t): Add field failure_code.
9782         (_gpgme_sign_status_handler): Parse that code and act upon it on EOF.
9783         * src/verify.c (op_data_t): Add field failure_code.
9784         (_gpgme_verify_status_handler): Parse that code and act upon it on EOF.
9785
9786         tests: Allow using run-sign to test loopback pinentry problems.
9787         + commit 491fcd91b84564232d5d061942baa50b99e166c0
9788         * tests/run-sign.c: Add options --status and --loopback.
9789
9790 2015-08-24  Werner Koch  <wk@gnupg.org>
9791
9792         Call status_cb for an ERROR status seen in the passphrase handler.
9793         + commit ad46f4f655e653580343c15f1b0b365b7d307d1b
9794         * src/passphrase.c (_gpgme_passphrase_status_handler): Call status_cb.
9795
9796         w32: Look for gpgconf in the new GnuPG 2.1 install dir.
9797         + commit a7dbab23ea4976d106d649aa515ffb2968a085ed
9798         * src/w32-util.c (_gpgme_get_gpgconf_path): Try another location of
9799         gpgconf.exe.
9800
9801         w32: Expect gpgme-w32spawn.exe only in the gpgme installation dir.
9802         + commit 06d6fd8ca01354c8f7cfc847c4ac1b868268cbaa
9803         * src/w32-util.c (find_program_at_standard_place): Remove.
9804         (_gpgme_get_gpg_path): Make the search order more explicit.
9805         (_gpgme_get_gpgconf_path): Ditto.
9806         (_gpgme_get_w32spawn_path): Search only in the inst_dir.
9807
9808         w32: Print the installation directory in debug mode.
9809         + commit df098d6a437109c57516db75addf3764a6dfda81
9810         * src/debug.c (debug_init) [W32]: Show libgpgme installation dir.
9811
9812         Add an export secret key feature.
9813         + commit 2b632bbb78eee2b94c122f66d171a7c80e9c4fb0
9814         * src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET): New.
9815         (GPGME_EXPORT_MODE_RAW): New.
9816         (GPGME_EXPORT_MODE_PKCS12): New.
9817         * src/export.c (export_start, export_ext_start): Allow new flags.
9818         * src/engine-gpg.c (export_common): Support secret key export.
9819         * src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Ditto.
9820
9821         * src/gpgme-tool.c (cmd_export): Add options --secret, --raw,
9822         and --pkcs12.
9823         * tests/run-export.c (main): Likewise.
9824
9825 2015-08-16  Ben Kibbey  <bjk@luxsci.net>
9826
9827         Parse INQUIRE_MAXLEN in the passphrase callback.
9828         + commit ccbaccbf2e0ba582d181b9ee4d8543d7c1248b2c
9829         * src/passphrase.c (_gpgme_passphrase_status_handler): Parse
9830         GPGME_STATUS_INQUIRE_MAXLEN.
9831         * src/passphrase.c (_gpgme_passphrase_command_handler): Send the
9832         INQUIRE_MAXLEN status message.
9833
9834         Fix gpgme_{get,set}_status_cb to match documentation.
9835         + commit 70b3e5964ea0592bd09d1877d720b2c63f501970
9836         * doc/gpgme.texi: Minor fixes.
9837         * src/gpgme.c (gpgme_get_status_cb): Set return variables to NULL and
9838         check for a valid ctx pointer.
9839
9840         Parse the INQUIRE_MAXLEN status message.
9841         + commit 6dd24c3c6133ec54f75abd056191a8027fe01de0
9842         * src/gpgme.h.in: (gpgme_status_code_t): Add INQUIRE_MAXLEN.
9843         * src/status-table.c (status_table_s): Ditto.
9844         * src/genkey.c (genkey_status_handler): Parse INQUIRE_MAXLEN.
9845         * src/decrypt.c (_gpgme_decrypt_status_handler): Ditto.
9846         * src/sign.c (_gpgme_sign_status_handler): Ditto.
9847
9848         This status message informs the client of the maximum length of an
9849         inquired line. It is sent from gpg and forwarded to the client via
9850         gpgme_status_cb_t.
9851
9852         Add gpgme_set/get_status_cb().
9853         + commit 4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9
9854         * src/gpgme.h.in (gpgme_set_status_cb): New.
9855         (gpgme_get_status_cb): New.
9856         (gpgme_status_cb_t): New.
9857         * src/gpgme.c (gpgme_set_status_cb): New.
9858         (gpgme_get_status_cb): New.
9859         * src/context.h (status_cb): New.
9860         (status_cb_value): New.
9861         * src/gpgme.def: Export new symbols.
9862         * src/libgpgme.vers: Ditto.
9863         * doc/gpgme.texi: Document these new functions.
9864
9865         Make use of user passphrase handler during genkey.
9866         + commit 2b6ae3dadf4432f7a72fd119144b835f7b1adcc4
9867         * src/genkey.c (genkey_start): set engine passphrase command handler.
9868
9869 2015-08-12  Ben Kibbey  <bjk@luxsci.net>
9870
9871         Also check the return code in gpg_sign().
9872         + commit e07d38f5f9f3b94e403f1265ff7fd3d7009dd557
9873         * src/engine-gpg.c (gpg_sign): Check return value from start().
9874
9875 2015-08-11  Ben Kibbey  <bjk@luxsci.net>
9876
9877         Check the return value when starting gpg.
9878         + commit 8f28e3caf95d7bc99e9271bfc2b44080166af31f
9879         * src/engine-gpg.c (gpg_decrypt, gpg_delete, gpg_passwd): Check return
9880         value of start().
9881
9882 2015-08-02  Ben McGinnes  <ben@adversary.org>
9883
9884         More GTK2 removal.
9885         + commit a7fbd5293ed0ba2c179837a4a2b859376d30e35e
9886         * Missed a couple of files, these 2 go for the same reason as the
9887           previous 3.
9888
9889         Removed GUI examples.
9890         + commit 1cd0aef0afb196094d90673002d4c210a04911c9
9891         * GUI examples written with pygtk, which has not been ported to Python
9892           3 and won't be as it is for GTK2 and GNOME is moving to GTK3.
9893         * New GUI examples may be required in future using any of several GUI
9894           frameworks (e.g. wxPython, PyQt, PySide, PyGObject, etc.).
9895
9896 2015-07-31  Andre Heinecke  <aheinecke@intevation.de>
9897
9898         Add offline mode support for CMS keylisting.
9899         + commit 08086dd6901740e155e4361212b4e9cff8a47296
9900         * doc/gpgme.texi: Document offline mode.
9901         * src/context.h (gpgme_context): Add offline.
9902         * src/engine-backend.h (keylist, keylist_ext): Add engine_flags.
9903         * src/engine.c, src/engine.h (_gpgme_engine_op_keylist): Ditto.
9904           (_gpgme_engine_op_keylist_ext): Ditto.
9905         * src/engine.h (GPGME_ENGINE_FLAG_OFFLINE): New.
9906         * src/engine-gpg.c (gpg_keylist, gpg_keylist_ext): Ditto.
9907         * src/engine-gpgsm.c (gpgsm_keylist): Handle engine_flags.
9908           (gpgsm_keylist_ext): Ditto.
9909         * src/gpgme.c (gpgme_set_offline, gpgme_get_offline): New.
9910         * src/gpgme.def (gpgme_set_offline, gpgme_get_offline): New.
9911         * src/gpgme.h.in (gpgme_set_offline, gpgme_get_offline): New.
9912         * src/libgpgme.vers (gpgme_set_offline, gpgme_get_offline): New.
9913         * src/keylist.c (gpgme_op_keylist_start): Set offline flag.
9914           (gpgme_op_keylist_ext_start): Ditto.
9915         * tests/run-keylist.c (show_usage, main): Add offline argument.
9916
9917 2015-07-23  Peter Wu  <peter@lekensteyn.nl>
9918
9919         build: ignore scissor line for the commit-msg hook.
9920         + commit 157c8be183153ff588f98874a3205aa483d0fd23
9921         * build-aux/git-hooks/commit-msg: Stop processing more lines when the
9922           scissor line is encountered.
9923
9924 2015-07-23  Werner Koch  <wk@gnupg.org>
9925
9926         Add option --lib-version to gpgme-tool.
9927         + commit c23f8897105ce2bb6e62d9c44ca0779fcc08a919
9928         * src/gpgme-tool.c (options, parse_options):  Add --lib-version
9929         (CMD_LIBVERSION): New.
9930         (main): Implement.
9931
9932 2015-06-08  Werner Koch  <wk@gnupg.org>
9933
9934         Release 1.5.5.
9935         + commit 052a9e3c5671d1ab69551f7b0abd0bbf859d4aba
9936
9937
9938         Fix regression with gpgsm 2.0 due to "OPTION with-secret".
9939         + commit ddbd54ef881bd2c3481d62b89bef7241667b64ee
9940         * src/engine-gpgsm.c (gpgsm_assuan_simple_command): Do not terminate
9941         on a status lines.
9942
9943         tests: Add option --secret to run-keylist.
9944         + commit 7addffc0826e7f36afcc7f66268e9ee2a37e2042
9945
9946
9947         Fix compiler warnings about unused value in TRACE macros.
9948         + commit 8b9f84828cd04a7dab37e219123edc1905da8e6b
9949         * src/debug.h: Change macros to not have a literal 0 as last
9950         expression of the comma operator.
9951         * src/debug.c (_gpgme_debug_frame_end): Return 0.
9952         (_gpgme_debug): Return 0.
9953
9954         Fix test suite for GnuPG 2.1 which uses pubring.kbx.
9955         + commit a5b040cc57c65b3d105666b90c7eb59ee6ff3882
9956         * tests/gpgsm/final.test: New.
9957         * tests/gpgsm/initial.test: New.
9958         * tests/gpg/start-stop-agent: Move to ../.
9959         * tests/gpgsm/Makefile.am (TESTS_ENVIRONMENT): Export top_srcdir.
9960         (TESTS): Add intial.test and final.test.
9961         (AM_LDFLAGS): Add -no-install.
9962         (clean-local): Use start-stop-agent
9963         (initial.test): Add dependency.
9964         * tests/gpg/Makefile.am (top_srcdir): Export top_srcdir.
9965         (AM_LDFLAGS): Add -no-install.
9966         (check-local): Depend on pubring-stamp instead of pubring.gpg.
9967         (initial.test): Depend on check-local.
9968         (./pubring-gpg): Replace by rule for ./pubring-stamp.
9969
9970 2015-06-05  Matthew Barnes  <mbarnes@redhat.com>
9971
9972         Set GPGME_SIGSUM_KEY_REVOKED also for gpg.
9973         + commit 87d713ff41454bd08a345c63605f6fc7ac854dd4
9974         * src/verify.c (calc_sig_summary): Handle GPG_ERR_CERT_REVOKED.
9975
9976 2015-06-05  Werner Koch  <wk@gnupg.org>
9977
9978         Fix segv for userids with a backslash.
9979         + commit 0d28a696163677d6b34a802b6beddecd805d0fc7
9980         * src/engine-gpg.c (gpg_keylist_preprocess): Increment SRC for a
9981         backslash.
9982
9983 2015-05-16  Ben McGinnes  <ben@adversary.org>
9984
9985         Python 3 port of PyME.
9986         + commit 90405ac84b78ba7e5458ea09986749594a01195a
9987         * Port of PyME 0.9.0 for Python 2 to Python 3 along with most of the
9988           example scripts.
9989         * Intended to be developed in parallel with the original Python 2
9990           version until such time as a rewrite of GPGME leads to developing an
9991           IO API in Python 3 from scratch.
9992         * Python 3 PyME and API maintainer has entered, stage left with current
9993           GPG key ID 0x321E4E2373590E5D, primary fingerprint is "DB47 24E6 FA42
9994           86C9 2B4E  55C4 321E 4E23 7359 0E5D" and signing subkey fingerprint is
9995           "B7F0 FE75 9387 430D D0C5  8BDB 7FF2 D371 35C7 553C" for future
9996           reference with git commit signatures.
9997
9998         Explaining why not all scripts work.
9999         + commit 29887c9b28c0db14bf75e227a8082d23a2c151d2
10000         * Some of them cannot be properly tested on OS X, especially with GTK in
10001           the mix (it works on OS X, but is unlikely to be as easily accessible
10002           as Cocoa or Qt).
10003         * Most major functions are showcased and do work, albeit sometimes with
10004           false positives of error messages, at least on OS X.
10005
10006         Byte encoding.
10007         + commit c39cea7a07cec9ab34cd2026f47b6fba80fea3c8
10008         * More string updates.
10009         * verifydetails.py still fails, but as Bernhard is still contactable, it
10010           might be worth him checking on it instead.
10011
10012         No change, note added to explain why.
10013         + commit 0e6e6689ef1aea36c1cb3cb47e94f1f2ebbd97cb
10014
10015
10016         Strings vs. Bytes.
10017         + commit 40290507bcdc63ab9023393d071167d455d70737
10018         * CLI input must be byte encoded.
10019
10020         More byte changes and passphrase changes.
10021         + commit 325b0ca341ae3ac8c3232f557ea2c381b4843969
10022         * exportimport works, but will still segfault for an as yet unknown
10023           reason.
10024         * genkey produces a traceback error, but does create the key as
10025           intended.
10026         * matched passphrase in signverify.
10027
10028         More bytes good.
10029         + commit ba3c9f2617955dc828309a4800e4f5b3f1c3a949
10030         * Another string to byte change.
10031
10032         Updated encrypt-to-all.
10033         + commit 1c87ecb86ae364b18f69bca726021271fefaa1c1
10034         * Changed plaintext string to byte literal.
10035         * Nested key selection in a try/except statement in case of
10036           UnicodeEncodeError instances.
10037         * Tested successfully on over 9,000 keys.
10038
10039         Passphrase update.
10040         + commit 24c738f5bb5c253a17962c62867d6c847250b41e
10041         * Changed example passphrase to something that meets the current minimum
10042           requirements.
10043
10044         example email.
10045         + commit 8345bf6f43c4f671124eaa1b713a7f5ac5780cbd
10046         * changed joe@foo.bar to joe@example.org as it is only a matter of time
10047           before ICANN actually creates bar as a gTLD, if they haven't already.
10048
10049         Updated string and key data.
10050         + commit 4fc123981514c7087114e08ee8ca63de1a1db59f
10051         * Text changed to byte literals.
10052         * Changed key type to RSA/RSA.
10053         * Changed expiry to the future (2020).
10054
10055 2015-05-08  Ben McGinnes  <ben@adversary.org>
10056
10057         String type.
10058         + commit 90079786c5cde4dd8ceb2e0fcda7605b08ccd021
10059         * the plain text string must be bytes and not unicode.
10060         * Expect most of the example code to have similar issues at present.
10061
10062 2015-05-05  Ben McGinnes  <ben@adversary.org>
10063
10064         Python 3 port of PyME.
10065         + commit ebd8734ad705afa4edc409787a00d4968d25e018
10066         * The entirety of the Python 3 port of PyME up to commit
10067           2145348ec54c6027f2ea20f695de0277e2871405
10068         * The old commit log has been saved as
10069           lang/py3-pyme/docs/old-commits.log
10070         * Can be viewed as a normal (separate) git repository at
10071           https://github.com/adversary-org/pyme3
10072         * Utilising the submodule feature of git was deliberately skipped on
10073           humanitarian grounds (in order to prevent pain and suffering on the
10074           part of anyone having to manage this repository).
10075
10076 2015-04-13  Werner Koch  <wk@gnupg.org>
10077
10078         Release 1.5.4.
10079         + commit d2712d9f6f086911184453219a096c61f6829d3b
10080
10081
10082         w32: Use -static-libgcc to avoid linking to libgcc_s_sjlj-1.dll.
10083         + commit 524dacfbb6bb131f05a4ecab3d7bcd91c1b43d33
10084         * src/Makefile.am (extra_ltoptions): New.
10085         (libgpgme_la_LDFLAGS): Use it.
10086         (libgpgme_pthread_la_LDFLAGS): Ditto.
10087         (libgpgme_glib_la_LDFLAGS): Ditto.
10088
10089 2015-03-16  Werner Koch  <wk@gnupg.org>
10090
10091         Fix potential crash in trace macro.
10092         + commit 8cfcdfe5564f87362e5ec1bfdca5c14aed9c45f0
10093         * src/signers.c (gpgme_signers_add): Avoid deref of a NULL KEY in the
10094         trace macro.
10095         * src/engine-spawn.c (engspawn_release): Remove always true condition.
10096         * src/engine-gpg.c (gpg_release): Ditto.
10097
10098         Fix one byte too short malloc.
10099         + commit 119f27032b822ace8c012b96f9e41bcf23251a54
10100         * src/engine-spawn.c (add_data): Fix malloc
10101
10102 2015-01-30  Werner Koch  <wk@gnupg.org>
10103
10104         Switch to automake 1.14 and update  build-aux files.
10105         + commit 428ea7696585bc24d127b903840554ca659069b6
10106
10107
10108 2014-12-11  Werner Koch  <wk@gnupg.org>
10109
10110         Release 1.5.3.
10111         + commit 37d927a9706fff6d8ef8d45073984ea2f92afb31
10112         * configure.ac: Set LT version to C24/A13/R2.
10113
10114 2014-12-08  Werner Koch  <wk@gnupg.org>
10115
10116         Return an error for some export key operations.
10117         + commit 05258d427513a933f01d4df13aca834d797f91e7
10118         * src/context.h (OPDATA_EXPORT): New.
10119         * src/export.c (op_data_t): New.
10120         (release_op_data): New.
10121         (parse_error): New.
10122         (export_status_handler): New.
10123         (export_start, export_ext_start): Prepare op_data.
10124         (gpgme_op_export_ext, gpgme_op_export_keys): Return an error from the
10125         status handler.
10126
10127 2014-11-21  Werner Koch  <wk@gnupg.org>
10128
10129         Release 1.5.2.
10130         + commit c62ce32b9c01ee9ceb1d69e7344fb79a9162d232
10131         * configure.ac: Set LT version to C24/A13/R1.
10132
10133         Update the previous commit.
10134         + commit 81ce87111f5a3f966188629abb07a4d0702e6db0
10135         * src/sign.c (gpgme_op_sign_result): Reformat and take care of failed
10136         malloc.
10137
10138 2014-11-21  Ben Kibbey  <bjk@luxsci.net>
10139
10140         Fix returning new signatures when there are none.
10141         + commit 5942b0c7e0593b82b4c4a142c214d7a2649de104
10142         * src/sign.c (gpgme_op_sign_result): Test that invalid and valid
10143         signatures add up to gpgme_signers_count().
10144
10145 2014-11-06  Werner Koch  <wk@gnupg.org>
10146
10147         Improve the debug output a bit.
10148         + commit 8031341283f4fcb1f226aa6f66bc5a6042586815
10149         * src/debug.h (TRACE_ERR): Include the line number in the output.
10150
10151 2014-10-02  Werner Koch  <wk@gnupg.org>
10152
10153         build: Implement SYSROOT feature.
10154         + commit 4027a0a89724df3aeef8a964c529548d724b6a5a
10155         * configure.ac: Document SYSROOT.
10156         * m4/gpg-error.m4: Update from libgpg-error master.
10157         * src/gpgme.m4: Implement SYSROOT stuff.
10158
10159 2014-09-24  Werner Koch  <wk@gnupg.org>
10160
10161         tests: Delay some test file extraction until "make check".
10162         + commit 2e8ecc24cf74f918c303c315da3bb18636a5e288
10163         * tests/gpg/Makefile.am (all-local): Change to check-local.
10164         * tests/gpgsm/Makefile.am (all-local): Ditto.
10165
10166 2014-09-24  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
10167
10168         Clean up gpgme's tests/gpg when gpg2.1 is available.
10169         + commit 36997e0f746ce2d38de997055141542583cc0f52
10170         * tests/gpg/Makefile.am: Clean up .gpg-v21-migrated
10171
10172 2014-08-12  Werner Koch  <wk@gnupg.org>
10173
10174         gpgme-tool: Print fingerprint and keyid with keyservers.
10175         + commit 4160ef90a1b1b778c735f31f98a6966ba3b3ea90
10176         * src/gpgme-tool.c (cmd_keylist): Print keyid.  Print FPR only if
10177         available.
10178
10179         Handle modern keyserver output which may emit the fingerprint.
10180         + commit 3450bff52baef2c14118958cf79ead46940d58f0
10181         * src/engine-gpg.c (read_colon_line): Split preprocessed lines.
10182         (gpg_keylist_preprocess): Limit keyid field and print fingerprint.
10183
10184         gpgme-tool: Install gpgme-tool.
10185         + commit 488e44cdb531035fa8813b95b212f9728abc7e62
10186         * src/Makefile.am (bin_PROGRAMS): New.  Add gpgme-tools.
10187         (noinst_PROGRAMS): Remove.
10188
10189         gpgme-tool: Fix segv for external key listing.
10190         + commit e5ab11607281b9838da2728268a8f9f0daa2b04d
10191         * src/gpgme-tool.c (result_xml_escape): Allow for DATA being NULL.
10192
10193 2014-07-30  Werner Koch  <wk@gnupg.org>
10194
10195         Release 1.5.1.
10196         + commit 16835c3b5d1cea18512b2c93e884d8ca513a2ee7
10197         * configure.ac: Change LT version to C24/A13/R0.
10198
10199         Fix possible realloc overflow for gpgsm and uiserver engines.
10200         + commit 2cbd76f7911fc215845e89b50d6af5ff4a83dd77
10201         * src/engine-gpgsm.c (status_handler):
10202         * src/engine-uiserver.c (status_handler):
10203
10204 2014-06-26  Werner Koch  <wk@gnupg.org>
10205
10206         w32: Get IOSPAWN flag back in sync with spawn helper.
10207         + commit 68116fa5f67238a60bb8be375cc959262fa021d3
10208         * src/gpgme-w32spawn.c: Include priv-io.h.
10209
10210 2014-06-10  Werner Koch  <wk@gnupg.org>
10211
10212         Add new reason codes to the INV_RECP status code.
10213         + commit 86260b47c9e306e325103d1af767842357647e60
10214         * src/op-support.c (_gpgme_parse_inv_recp): Add codes 13 and 14.
10215
10216 2014-06-04  Werner Koch  <wk@gnupg.org>
10217
10218         Add new keylist mode GPGME_KEYLIST_MODE_WITH_SECRET.
10219         + commit 4dc9af24156b4fd52c7b76e7522b9b7a64e5386a
10220         * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_SECRET): New.
10221         * src/engine-gpg.c (gpg_keylist_build_options): Handle new mode.
10222         * src/engine-gpgsm.c (gpgsm_keylist, gpgsm_keylist_ext): Ditto.
10223         * src/keylist.c (parse_sec_field15): Add arg key and take care of
10224         --with-secret output.
10225
10226         * src/gpgme-tool.c (gt_get_keylist_mode, cmd_keylist_mode): Add
10227         "with_secret".  Print card info and and secret flag for subkeys.
10228
10229 2014-05-21  Werner Koch  <wk@gnupg.org>
10230
10231         Release 1.5.0.
10232         + commit 0eca21113c1d1ab2aea58e1ea21075f472f99c23
10233         * configure.ac: Change LT version to C22/A11/R0.
10234
10235 2014-05-13  Werner Koch  <wk@gnupg.org>
10236
10237         Add 6 new GPGME_STATUS_ codes.
10238         + commit de6caeed6d6432101c673c35717f152d5facf823
10239         * src/status-table.c: Also add missing DECRYPTION_INFO entry.
10240
10241 2014-05-08  Werner Koch  <wk@gnupg.org>
10242
10243         Add field CURVE to the key info.
10244         + commit 88f15336ec0eadde68ff2618349efb9006b8e801
10245         * src/gpgme.h.in (struct _gpgme_subkey): Add field CURVE.
10246         * src/key.c (gpgme_key_unref): Free CURVE.
10247         * src/keylist.c (keylist_colon_handler): Set CURVE.
10248
10249         * src/gpgme.c (gpgme_release): For failsafe reasons reset engine and
10250         engine info after freeing.
10251
10252         Fix a memory access and a double slash bug.
10253         + commit de4a1ea684e1591975feb801e7651309e1ee2c49
10254         * src/engine-spawn.c (engspawn_start): Allocate space for list
10255         terminator.
10256         * src/posix-util.c (walk_path): Fix trailing slash detection.
10257
10258         Map public key algos returned by gpg to gpgme values.
10259         + commit d5fb92cdaed21eea2f1a921e4f11df72635a8462
10260         * src/conversion.c (_gpgme_map_pk_algo): New.
10261         * src/decrypt.c (parse_enc_to): Add arg PROTOCOL and map pubkey algo.
10262         (_gpgme_decrypt_status_handler): Map pubkey algo.
10263         * src/keylist.c (keylist_colon_handler): Map pubkey algo.
10264         * src/sign.c (parse_sig_created): Add arg PROTOCOL and map pubkey
10265         algo.
10266         * src/verify.c (parse_new_sig): Ditto.
10267         (parse_valid_sig): Ditto.
10268
10269         * src/gpgme.h.in (GPGME_PK_ECC): New.
10270         (GPGME_MD_SHA224): New.
10271         * src/gpgme.c (gpgme_pubkey_algo_name): Add GPGME_PK_ECC case.
10272         (gpgme_hash_algo_name): Add GPGME_MD_SHA224.
10273
10274         Add GPGME_ENCRYPT_NO_COMPRESS flag.
10275         + commit 991cde9e79fec70aad093ded383c5574d30f9388
10276         * src/gpgme.h.in (GPGME_ENCRYPT_NO_COMPRESS): New.
10277         * src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign): Implement it.
10278         * src/gpgme-tool.c (_cmd_sign_encrypt): Add option --no-compress.
10279
10280 2014-04-16  Werner Koch  <wk@gnupg.org>
10281
10282         w32: Fix another memleak on error.
10283         + commit 62711e5614e44e65a7c7bb7d21493d09d3081271
10284         * src/w32-io.c (create_reader): free CTX.
10285
10286 2014-04-15  Werner Koch  <wk@gnupg.org>
10287
10288         w32: Fix memleak in an error code paths.
10289         + commit 85a07ca7e3dffdefc8ae74beebb59e47a6e6bd1b
10290         * src/w32-io.c (create_writer): Free CTX in cased of bad FD.
10291         * src/w32-util.c (_gpgme_mkstemp): Free TMPNAME in case of a failed
10292         mkstemp.
10293
10294         Fix possible zombie processes.
10295         + commit 2bb26185e3b9a048033c559517d6ba7d2eb47066
10296         * src/posix-io.c (_gpgme_io_waitpid): Protect waitpid agains EINTR.
10297         (_gpgme_io_dup): Likewise.
10298         (_gpgme_io_connect): Likewise.
10299
10300 2014-04-10  Werner Koch  <wk@gnupg.org>
10301
10302         Actually implement flags for gpgme_op_spawn.
10303         + commit d3bd8fff863f62b6d0e228aea754efbbde861e9a
10304         * src/spawn.c (gpgme_op_spawn_start, gpgme_op_spawn): Pass FLAGS dow
10305         to spawn_start and add FLAGS args along the call path.
10306         * src/engine-spawn.c (engspawn_start): Hack to automagically provide
10307         argv[0].
10308
10309         Add GPGME_PROTOCOL_SPAWN and gpgme_op_spawn.
10310         + commit 4f2d652e60700e03809307a10015ff9003ac3579
10311         * src/gpgme.h.in (GPGME_PROTOCOL_SPAWN): New.
10312         (GPGME_SPAWN_DETACHED, GPGME_SPAWN_ALLOW_SET_FG): New.
10313         * src/gpgme.c (gpgme_set_protocol): Add new protocol.
10314         (gpgme_get_protocol_name): Ditto.
10315         * src/spawn.c: New.
10316         * src/libgpgme.vers, src/gpgme.def: Add new public functions.
10317         * src/engine-spawn.c: New.
10318         * src/Makefile.am: Add new files.
10319         * src/engine-backend.h (struct engine_ops): Add OPSPAWN.
10320         * src/engine.c (engine_ops): Add _gpgme_engine_ops_spawn.
10321         (gpgme_get_engine_info): Add Spawn to the list of protocols.
10322         (_gpgme_engine_op_spawn): New.
10323
10324         * src/gpgme-tool.c (gt_protocol_from_name): Add new protocol.
10325         (gt_spawn, cmd_spawn): New.
10326
10327         Add gpgme_get_dirinfo.
10328         + commit 77931a9a1468b0cfbaafd4153867d90764a6d258
10329         * src/dirinfo.c (gpgme_get_dirinfo): New.
10330         * tests/t-engine-info.c (main): Print results from that function.
10331
10332         Make use of internal iospawn flags more flexible.
10333         + commit 443f6b76a964b77e2e61c03592a83ffa0a6da4b1
10334         * src/priv-io.h (IOSPAWN_FLAG_DETACHED): New. Renumber the others.
10335         * src/w32-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS process only if
10336         IOSPAWN_FLAG_DETACHED is given.
10337         * src/w32-qt-io.cpp (_gpgme_io_spawn): Ditto.
10338         * src/w32-glib-io.c (_gpgme_io_spawn): Ditto.
10339         * src/assuan-support.c (my_spawn): Pass IOSPAWN_FLAG_DETACHED flags.
10340         * src/dirinfo.c (read_gpgconf_dirs): Ditto.
10341         * src/engine-gpg.c (start): Ditto.
10342         * src/engine-gpgconf.c (gpgconf_read, gpgconf_write): Ditto.
10343         * src/version.c (_gpgme_get_program_version): Ditto.
10344
10345         Make sure a spawned process has all standard fds connected.
10346         + commit 617d3be629229cbebfdc2d26a4e854bc4fe38a68
10347         * src/posix-io.c (_gpgme_io_spawn): dup /dev/null also to unsued
10348         stdout.
10349
10350 2014-03-13  Werner Koch  <wk@gnupg.org>
10351
10352         Add configure option --enable-fixed-path.
10353         + commit 766355b5d4f63261c428531fdbdafb8b67de9369
10354         * configure.ac: Add option --enable-fixed-path.
10355         (FIXED_SEARCH_PATH): New ac_define.
10356         * src/posix-util.c (walk_path): Make use of the option.  Remove
10357         current directory from fallback PATH.
10358
10359 2014-03-11  Werner Koch  <wk@gnupg.org>
10360
10361         Avoid pointer arithmetic on void pointer.
10362         + commit dd9c8c56719db093b8daa23aa40b2be71bbd1526
10363         * src/gpgme.c (gpgme_io_writen): Use new var buffer.
10364
10365         Change implementation return type to match the definition.
10366         + commit 75a6255935f450d56f3637cbb2b6c8161ace57ab
10367         * src/gpgme.c (gpgme_get_sub_protocol): Change return type to
10368         gpgme_protocol_t.
10369
10370 2014-03-05  Daiki Ueno  <ueno@gnu.org>
10371
10372         doc: Fix documentation of struct data types.
10373         + commit 40938feb3f3393b0cdc6ec61ca2e77ff0b82c69a
10374         * gpgme.texi (Key Management): Document is_cardkey and card_number
10375         members of gpgme_subkey_t.
10376         (Decrypt): Remove description of the non-existent wrong_key_usage
10377         member of gpgme_recipient_t.
10378         (Verify): Document pka_address member of gpgme_signature_t.
10379         (Creating a Signature): Add missing member names in
10380         gpgme_new_signature_t.
10381         (Registering I/O Callbacks): Fix reference of gpgme_io_cbs struct.
10382
10383 2014-02-21  Werner Koch  <wk@gnupg.org>
10384
10385         Always pass correct name to argv[0].  Ignore GPG_AGENT_INFO for gpg2.
10386         + commit 651d9e1c6bc1cab248024c3850ef64698247588f
10387         * src/dirinfo.c (WANT_GPG_ONE_MODE): New.
10388         (struct dirinfo): Add field "gpg_one_mode".
10389         (get_gpgconf_item): Set that field and return it if requested.
10390         (_gpgme_in_gpg_one_mode): New.
10391         * src/engine-gpg.c (build_argv): Check GPG_AGENT_INFO only in gpg-1
10392         mode.
10393
10394         * src/dirinfo.c (_gpgme_get_basename): New.
10395         * src/engine-g13.c (g13_new): Take argv[0] from the pgmname.
10396         * src/engine-gpgsm.c (gpgsm_new): Ditto.
10397         * src/engine-gpg.c (build_argv): Ditto. Add arg PGMNAME.
10398         (start): Pass PGMNAME to buildargv.
10399
10400 2014-02-12  Werner Koch  <wk@gnupg.org>
10401
10402         Fix type inconsistency between gpgme.h and gpgme.c.
10403         + commit f916ab753b7d17210cd455666870038949f72851
10404         * src/gpgme.c (gpgme_set_pinentry_mode): Fix type of MODE.
10405
10406 2014-01-10  Werner Koch  <wk@gnupg.org>
10407
10408         Use the generic autogen.sh script.
10409         + commit 1a504aab384947c1a6e949affd14bc696297fc8d
10410         * autogen.rc: New.
10411         * Makefile.am (EXTRA_DIST): Add it.
10412         * autogen.sh: Update from GnuPG.
10413
10414         * configure.ac (AM_SILENT_RULES): New.
10415
10416 2014-01-07  Werner Koch  <wk@gnupg.org>
10417
10418         Make gpgconf engine work again - fixes 02ba35c1.
10419         + commit ab6e718327451e418782990c5a0a4e72588e3f0b
10420         * src/gpgconf.c: Remove ENABLE_GPGCONF and move prototypes to ...
10421         * src/engine-backend.h: ... here.
10422
10423         Make gpgme_new return a proper error if no engines are installed.
10424         + commit 121efcc5618374a1b4450b1d6a18bb3c35edb1fd
10425         * src/engine.c (gpgme_get_engine_info): Improve error handling.
10426         (_gpgme_engine_info_copy): Ditto.
10427         * src/gpgme.c (gpgme_new): Return error GPG_ERR_NO_ENGINE.
10428
10429         Print the full PATH in the log if gpg was not found.
10430         + commit d63058b852b83515e7715103c04a684ecf59838a
10431         * src/posix-util.c (walk_path): Keep a copy of PATH.
10432
10433 2014-01-06  Werner Koch  <wk@gnupg.org>
10434
10435         Add global flags disable-gpgconf, gpgconf-name, and gpg-name.
10436         + commit 6564e5e78e8c6e5a120675a5699b5b75248cfbc7
10437         * src/gpgme.c (gpgme_set_global_flag): Add names "disable-gpgconf",
10438         "gpgconf-name", and "gpg-name".
10439         * src/dirinfo.c (_gpgme_dirinfo_disable_gpgconf): New.
10440         (get_gpgconf_item): Minor debug info change.
10441         * src/posix-util.c (default_gpg_name, default_gpgconf_name): Add vars.
10442         (_gpgme_set_default_gpg_name): New.
10443         (_gpgme_set_default_gpgconf_name): New.
10444         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
10445         (walk_path): Add debug output on failure.
10446         * src/w32-util.c (default_gpg_name, default_gpgconf_name): Add vars.
10447         (replace_slashes): New.
10448         (get_basename): New.
10449         (_gpgme_set_default_gpg_name): New.
10450         (_gpgme_set_default_gpgconf_name): New.
10451         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
10452
10453         * tests/t-engine-info.c (main): Add --verbose and --set-global-flag
10454         options.
10455
10456 2013-12-27  Werner Koch  <wk@gnupg.org>
10457
10458         Locate engine names only at runtime and prefer GnuPG-2.
10459         + commit 02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b
10460         * configure.ac (NEED_GPG_VERSION, NEED_GPGSM_VERSION)
10461         (NEED_G13_VERSION, NEED_GPGCONF_VERSION): Remove vars and all related
10462         checks.  Do not check for any engine version.
10463         (HAVE_ASSUAN): Remove AM conditional.
10464         * src/Makefile.am: Remove separate component vars and always build all
10465         engines but uiserver.
10466         * src/dirinfo.c (WANT_GPGCONF_NAME): New.
10467         (struct dirinfo): Add field gpgconf_name.
10468         (_gpgme_get_default_gpgconf_name): Use WANT_GPGCONF_NAME.
10469         (get_gpgconf_item): Set gpgconf name and adjust for _gpgme_get_*_path
10470         now returning a malloced string.
10471         * src/engine.c (engine_ops): Always init all engines except for
10472         uiserver.
10473         * src/posix-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path):
10474         Remove unused functions.
10475         (walk_path): New.
10476         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path ): Re-implement using
10477         walk_path.
10478         * src/w32-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path): Remove
10479         unused functions.
10480         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Return a malloced
10481         string.
10482         * src/engine-g13.c (g13_get_req_version): Use a hardwired string with
10483         the required version.  This info belongs into this file.
10484         * src/engine-gpg.c (gpg_get_req_version): Ditto.
10485         * src/engine-gpgconf.c (gpgconf_get_req_version): Ditto.
10486         * src/engine-gpgsm.c (gpgsm_get_req_version): Ditto.
10487         * tests/t-engine-info.c: Replace now useless test by an info output.
10488         * tests/gpg/Makefile.am (GPG, GPG_AGENT): Hardwire gpg and gpg-agent.
10489         * tests/gpgsm/Makefile.am (GPGSM): Hardwire gpgsm.
10490
10491 2013-08-19  Werner Koch  <wk@gnupg.org>
10492
10493         Document API change for GPGME_EVENT_DONE from 2009.
10494         + commit b0aaa3f9aef36634b5c391812362f016114f02ba
10495         * doc/gpgme.texi (I/O Callback Interface): Fix description for the
10496         event arg.
10497
10498         Fix possible segv in the gpgme_op_card_edit.
10499         + commit 372bd439834c69d502668007c8c683233d676bd5
10500         * src/edit.c (gpgme_op_edit_start, gpgme_op_card_edit_start): Do not
10501         deref a NULL KEY in TRACE_BEG.
10502
10503         tests: Fix NULL ptr deref in gpgsm/t-verify.
10504         + commit eae9c32bd9c80ca4a4ecf794808211808f2ebbdd
10505         * tests/gpgsm/t-verify.c (check_result): Do not dereference a sig or
10506         sig->fpr if NULL.
10507
10508 2013-08-12  Werner Koch  <wk@gnupg.org>
10509
10510         Release 1.4.3.
10511         + commit d788c35e19df9eade8eb0b880ca1dc47ae7928ad
10512         * configure.ac: Change LT version to C22/A11/R0.
10513
10514         Make test suite workable with GnuPG 2.1.
10515         + commit 3ca7e96e384d5872c71ceb3b2e2a05b0c1b7e1a0
10516         * tests/gpg/start-stop-agent: New.
10517         * tests/gpg/initial.test: New.
10518         * tests/gpg/final.test: New.
10519         * tests/gpg/Makefile.am (c_tests): New.
10520         (TESTS): Move all to c_tests.  Add initial.test, final.test, and
10521         c_tests.
10522         (TESTS_ENVIRONMENT): Add C_ALL=C
10523         (private_keys): New.
10524         (EXTRA_DIST): Add new files.
10525         (./private-keys-v1.d/gpg-sample.stamp): Copy private keys.
10526         (all-local): Depend on gpg-sample.stamp.
10527         * tests/gpg/13CBE3758AFE42B5E5E2AE4CED27AFA455E3F87F: New.
10528         * tests/gpg/13CD0F3BDF24BE53FE192D62F18737256FF6E4FD: New.
10529         * tests/gpg/76F7E2B35832976B50A27A282D9B87E44577EB66: New.
10530         * tests/gpg/7A030357C0F253A5BBCD282FFC4E521B37558F5C: New.
10531         * tests/gpg/A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD: New.
10532
10533         Improve detection of default gpg by configure.
10534         + commit 069ac580373923f5635b7172ecff79eb189f6944
10535         * configure.ac: Move test for gpgconf before test for gpg.
10536         (GPG, GPGSM, G13): Use gpgconf instead of AC_PATH_PROG if possible.
10537
10538 2013-08-09  Werner Koch  <wk@gnupg.org>
10539
10540         Add function gpgme_data_identify.
10541         + commit 8579091c4f6a36e6bb06fcfbd147a776166fd3ea
10542         * src/gpgme.h.in (gpgme_data_type_t): New.
10543         (gpgme_data_identify): New prototype.
10544         * src/data-identify.c: New.
10545         * src/parsetlv.c, src/parsetlv.h: New.  Take from gpa.
10546         * src/libgpgme.vers, src/gpgme.def: Add gpgme_data_identify.
10547         * src/gpgme-tool.c (status): Add STATUS_IDENTIFY_RESULT.
10548         (gt_identify): New.
10549         (cmd_identify): New.
10550
10551         (hlp_passwd): Move close to cmd_passwd.
10552
10553 2013-08-02  Werner Koch  <wk@gnupg.org>
10554
10555         Prefer GnuPG-2 engines over GnuPG-1.
10556         + commit a4c80126ae4754c8478c69a8a24a6ffd975485fc
10557         * src/util.h: Move some prototypes to ...
10558         * src/sys-util.h: New.
10559         * src/Makefile.am (main_sources): Add sys-util.h.
10560         * configure.ac (AH_VERBATIM): Add DIRSEP_C and DIRSEP_S.
10561         * src/dirinfo.c: Include sys-util.h.
10562         (WANT_GPG_NAME, WANT_GPGSM_NAME, WANT_G13_NAME)
10563         (WANT_UISRV_SOCKET): New.
10564         (dirinfo): Add corresponding fields.
10565         (parse_output): Add arg COMPONENTS and set new fields.
10566         (read_gpgconf_dirs): Add arg components and act upon it.
10567         (get_gpgconf_item): Call read_gpgconf_dirs two times.  Add debug
10568         output.
10569         (_gpgme_get_default_gpg_name): New.
10570         (_gpgme_get_default_gpgsm_name): New.
10571         (_gpgme_get_default_g13_name): New.
10572         (_gpgme_get_default_gpgconf_name): New.
10573         (_gpgme_get_default_uisrv_socket): New.
10574         * src/engine-gpg.c, src/engine-g13.c, src/engine-gpgconf.c
10575         * src/engine-gpgsm.c, src/engine-uiserver.c: Change to use
10576         _gpgme_get_default_ instead of those from sys-util.h.
10577         * src/posix-util.c (_gpgme_get_gpg_path): Include sys-util.h.
10578         (_gpgme_get_uiserver_socket_path): Remove.
10579         * src/w32-util.c (_gpgme_get_gpg_path): Include sys-util.h.
10580         (_gpgme_get_uiserver_socket_path): Remove.
10581
10582         w32: Try to locate gpg in the gpgme installation dir.
10583         + commit 3881ea4e83d1533ef497b7332398fc1850e29205
10584         * src/w32-util.c (my_hmodule): New.
10585         (wchar_to_utf8): New.
10586         (DllMain): New.
10587         (_gpgme_get_inst_dir): New.
10588         (find_program_in_dir): New.
10589         (find_program_in_inst_dir): Add arg INST_DIR.
10590         (_gpgme_get_gpg_path): Get inst_dir before acquiring the lock.
10591         (_gpgme_get_gpgconf_path): Ditto.
10592         (_gpgme_get_g13_path): Ditto.
10593         (_gpgme_get_w32spawn_path): Ditto.
10594
10595 2013-07-31  Werner Koch  <wk@gnupg.org>
10596
10597         doc: Add --binary option for the OUTPUT command of an uiserver.
10598         + commit 393a9471f2f3ac0a5b14f3534a5bfc7ffe948567
10599
10600
10601 2013-06-18  Werner Koch  <wk@gnupg.org>
10602
10603         Add function gpgme_signers_count.
10604         + commit f2eeccbdfaf855a81abb92abe5ab4c702712bac7
10605         * src/signers.c (gpgme_signers_count): New.
10606         * src/libgpgme.vers, src/gpgme.def: Add as external symbol.
10607         * src/gpgme.h.in: Add prototype.
10608
10609 2013-05-28  Werner Koch  <wk@gnupg.org>
10610
10611         Release 1.4.2.
10612         + commit 009e26a989f8a251563303f155c51fe012af52a4
10613         * configure.ac: Set LT version to C21/A10/R0.
10614
10615         Add convenience macro GPGME_PROTOCOL_OPENPGP.
10616         + commit 2e8feb6016dede400053f76fc3a418e1dd567bef
10617         * src/gpgme.h.in (GPGME_PROTOCOL_OPENPGP): New.
10618
10619 2013-05-23  Werner Koch  <wk@gnupg.org>
10620
10621         w32: Fix installing of .def file.
10622         + commit c29dad2315406bed75b9547103650bef642e6aa7
10623         * src/Makefile.am (install-def-file): Create libdir first.
10624
10625         Fix libtool 2.4.2 to correctly detect .def files.
10626         + commit d739d4d8cf9c873b0f3bb7836aaf3d0ba31a7b7f
10627         * build-aux/ltmain.sh (sed_uncomment_deffile): New.
10628         (orig_export_symbols): Uncomment def file before testing for EXPORTS.
10629         * m4/libtool.m4: Do the same for the generated code.
10630
10631 2013-05-22  Werner Koch  <wk@gnupg.org>
10632
10633         Support --no-encrypt-to also with gpgme_op_encrypt_sign.
10634         + commit d4371ed30da2e8b3d9f440613af299a952bde2b1
10635         * src/engine-gpg.c (gpg_encrypt_sign): Support the
10636         GPGME_ENCRYPT_NO_ENCRYPT_TO flag.
10637
10638 2013-05-22  Werner Koch  <wk@gnupg.org>
10639             Kyle L. Huff  <g10bts@curetheitch.com>
10640
10641         Allow symmetric encryption with gpgme_op_encrypt_sign.
10642         + commit 567e6481d767af60390d649897b897a8b0e7e9a5
10643         * src/encrypt-sign.c (encrypt_sym_status_handler): New.
10644         (encrypt_sign_start): Handle recp == NULL case.
10645         * src/engine-gpg.c (gpg_encrypt_sign): Implement symmetric encryption.
10646         * tests/gpg/t-encrypt-sign.c (main): Add a test case for this.
10647
10648 2013-05-22  Werner Koch  <wk@gnupg.org>
10649
10650         gpgme-tool: Allow for symmetric encryption.
10651         + commit 0c1de7abd57b677998792e6cd5df5ddfb6e451b7
10652         * src/gpgme-tool.c (gt_sign_encrypt): Pass NULL for recp if no
10653         recipients are given.
10654
10655         tests: Print auditlog in plain text format.
10656         + commit 18254f88f82da7542a986dca60917fb48d5bccd3
10657         * tests/gpgsm/t-verify.c (show_auditlog): Use plain text format.
10658
10659 2013-05-18  Werner Koch  <wk@gnupg.org>
10660
10661         Improve C++ compatibility of previous patch.
10662         + commit e99356306d7bda61802530ebeb07d9ba73c4dec0
10663         * src/gpgme.h.in: Move gpgme_sssize_t and gpgme_off_t typedefs into
10664         the extern "C" scope.
10665
10666 2013-05-16  Werner Koch  <wk@gnupg.org>
10667
10668         Make definition of off_t robust against misbehaving w32 toolchains.
10669         + commit 6d0d8e7ba0bb989c251545fa8af35b97d1a703ba
10670         * configure.ac (NEED__FILE_OFFSET_BITS): Change to define gpgme_off_t
10671         and gpgme_ssize_t.
10672         (API__OFF_T, API__SSIZE_T): New ac_subst.
10673         * src/gpgme.h.in: Replace all ssize_t and off_t by ac_subst macros.
10674         * src/assuan-support.c, src/ath-pthread.c, src/ath.c, src/ath.h
10675         * src/data-compat.c, src/data-fd.c, src/data-mem.c, src/data-stream.c
10676         * src/data-user.c, src/data.c, src/data.h, src/engine-gpgsm.c
10677         * src/engine-uiserver.c, src/gpgme-tool.c, src/gpgme.c: Replace off_t
10678         by gpgme_off_t and sszie_t by gpgme_ssize_t.
10679         * src/ath-pthread.c, src/ath.h: Include gpgme.h.
10680
10681 2013-05-11  Werner Koch  <wk@gnupg.org>
10682
10683         w32: Change the way the I/O threads are cleaned up.
10684         + commit 9e7df9aa6d81f0abbabb03a2346d80eb5d375f81
10685         * src/w32-io.c (reader_context_s, create_reader)
10686         (writer_context_s, create_writer): Rename STOPPED to CLOSE_EV.
10687         (reader, writer): Remove setting of STOPPED.  Wait for CLOSE_EV and
10688         then release the context.
10689         (destroy_reader, destroy_writer): Do not wait but set the CLOSE_EV.
10690         (kill_reader, kill_writer): Remove.
10691         (_gpgme_io_close): Add code from kill_reader and kill_writer.
10692
10693 2013-05-08  Werner Koch  <wk@gnupg.org>
10694
10695         Fix hang in socket closing.
10696         + commit 9f330be8210d2498fe93d4166b6f6c02fca76475
10697         * src/w32-io.c (destroy_reader): Call shutdown.
10698         (reader): Do not print an error in the shutdown case.
10699
10700         Improve debug output of the I/O reader and writer.
10701         + commit 2118f497010a9a41c29d062a7605ff2e136f8f4e
10702         * src/w32-io.c (reader, writer): Also print file_sock.
10703
10704 2013-05-06  Werner Koch  <wk@gnupg.org>
10705
10706         Simplify a debug code function.
10707         + commit a7e5f1096f02af7bfb678b0bea8da6ccfc28cc79
10708         * src/debug.c (_gpgme_debug): Remove static space string.
10709
10710 2013-05-01  Werner Koch  <wk@gnupg.org>
10711
10712         Release 1.4.1.
10713         + commit 5075c0da7c464af2a45cd36db134ed7e88f155af
10714         * configure.ac: Bump LT version to C20/A9/R1.
10715
10716         Disable fd-passing for Apple.
10717         + commit ef5b4ae37d13142e89a051908dc080cda3d24baa
10718         * configure.ac: Disable fd-passing by default for Apple.
10719
10720 2013-04-30  Werner Koch  <wk@gnupg.org>
10721
10722         Allow reading of long gpgconf output lines.
10723         + commit f623a6b94c527795d0b6f7e66a3966e5d9e1c454
10724         * src/engine-gpgconf.c (gpgconf_read): Rewrite to allow for line
10725         lengths up to 64k.
10726
10727 2013-04-29  Werner Koch  <wk@gnupg.org>
10728
10729         Fix for i686-w64-mingw32.
10730         + commit 867b950b9306904a0ff522d0ef4a43789393cfc4
10731         * configure.ac (NEED__FILE_OFFSET_BITS): Do not define under Windows.
10732
10733 2013-02-26  Werner Koch  <wk@gnupg.org>
10734
10735         Release 1.4.0.
10736         + commit ef5cd38123dfbef7843f374ee697b0b5e8730c46
10737         * configure.ac: Bump LT version to C20/A9/R0.
10738
10739         Enable FD passing and thus building of the UI-server.
10740         + commit 5090f6f246bfad2eb80f3cc222963f73996d8028
10741         * configure.ac: Make --enable-fd-passing the default.
10742         * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Syntax fix.
10743
10744         w32: Hacks for building with 32 bit mingw64.
10745         + commit cdae524b282ef0ea67c3880b3e0f852c84c351ce
10746         * configure.ac (INSERT__TYPEDEFS_FOR_GPGME_H): Add hacks for 32 bit
10747         mingw64.
10748         * src/util.h [W32]: Include winsock2.h before windows to make mingw64
10749         happy.
10750         * src/w32-util.c (_WIN32_IE): Need to use 5.1 for mingw64.
10751
10752         Improve missing libgpg-error reporting in configure.
10753         + commit 787b5f14b933e5cee2624f79a23a60947f8134c8
10754         * configure.ac (NEED_GPG_ERROR_VERSION): New.  Improve reporting for
10755         missing libgpg-error.
10756
10757         Change the various version numbers to the new scheme.
10758         + commit d8b46c919f45666af0d541e00dcedf57e6c4b66f
10759         * configure.ac: Rename my_foo variables to mym4_foo variables to make
10760         clear that they are processed by m4.
10761         (VERSION_NUMBER): New ac_subst.
10762         (AH_BOTTOM): Add CRIGHTBLURB macro.
10763         (BUILD_REVISION, BUILD_FILEVERSION, BUILD_TIMESTAMP): Change them to
10764         work similar to libgpg-error et al.
10765         * src/versioninfo.rc.in: Remove use of BUILD_NUMBER and get it in line
10766         with gpg-error et al.
10767         * src/version.c (cright_blurb): New.
10768         (gpgme_check_version_internal): Add magic to display the above
10769         information.
10770         * tests/t-version.c (main): Add option --verbose.
10771
10772         Update GnuPG related m4 files.
10773         + commit 863c0f2a3eaf2a5d46c5518e5ac3486cc1a49bd3
10774         * m4/gpg-error.m4: Update from libgpg-error.
10775         * m4/libassuan.m4: Update from libassuan.
10776
10777         Update helper scripts.
10778         + commit fdcd5736e610cd64e47da73dcafe8bc4a6a67666
10779         * configure.ac: Use AC_CONFIG_AUX_DIR.  Remove args from
10780         AM_INIT_AUTOMAKE.  Replace AM_CONFIG_HEADER by AC_CONFIG_HEADER.
10781         * compile, config.guess, config.sub, depcomp, install-sh, ltmain.sh
10782         * mkinstalldirs, texinfo.texi: Move to build-aux/ and update from
10783         gnulib (c042abf).
10784         * build-aux/mdate-sh, build-aux/missing: Install via automake -a -c.
10785         Update autogen.sh for changed config dir.
10786         * autogen.sh: Adjust for scripts dir change.  Update W32 toolprefix
10787         list.
10788
10789 2013-02-25  Werner Koch  <wk@gnupg.org>
10790
10791         Remove included gitlog-to-changelog.
10792         + commit 967e043ac42330ee692f23d05ce3a0dd457f2119
10793         * build-aux/gitlog-to-changelog: Remove.
10794         * configure.ac (GITLOG_TO_CHANGELOG): Default to just
10795         gitlog-to-changelog.
10796
10797 2013-02-12  Werner Koch  <wk@gnupg.org>
10798
10799         Add macro GPGME_VERSION_NUMBER.
10800         + commit f48f75b1e812d33b76e439412efffa8277ab9abe
10801         * src/gpgme.h.in (GPGME_VERSION_NUMBER): New.
10802         * configure.ac (my_version_major, my_version_minor)
10803         (my_version_micro): New m4 macros.
10804         (my_version): Build from new m4 macros.
10805         (VERSION_NUMBER): New ac_subst.
10806
10807         Add public function gpgme_get_pinentry_mode.
10808         + commit 4f381554411ef019d79492f1751543f145604bcf
10809         * src/gpgme.c (gpgme_get_pinentry_mode): New.
10810
10811 2013-02-07  Werner Koch  <wk@gnupg.org>
10812
10813         gpgme_tool: Support GPG's new pinentry-mode.
10814         + commit 02a2cf0ccb4d01700adf6d18316d7705d519a048
10815         * src/gpgme-tool.c (log_error): Do not always print the error source.
10816         (gt_set_pinentry_mode): New.
10817         (server_passphrase_cb): New.
10818         (cmd_pinentry_mode): New.
10819         (register_commands): Add cmd_pinentry_mode.
10820         (options): Add option --gpg-binary.
10821         (struct args): Add field gpg-binary.
10822         (parse_options, main): Implement that option.
10823
10824         Add public function gpgme_set_pinentry_mode.
10825         + commit 61a0d92b679f248505f1bf16386bc41a5bf2ba1d
10826         * src/gpgme.c (gpgme_set_pinentry_mode): New.
10827         * src/gpgme.h.in (gpgme_pinentry_t): New.
10828         (gpgme_set_pinentry_mode): New.
10829         * src/context.h (struct gpgme_context): Add field pinentry_mode.
10830         * src/engine-backend.h (struct engine_ops): Add field
10831         set_pinentry_mode.
10832         * src/engine-gpg.c (struct engine_gpg): Add field pinentry_mode.
10833         (build_argv): Implement pinentry_mode.
10834         (gpg_set_pinentry_mode): New.
10835         (_gpgme_engine_ops_gpg): Register gpg_set_pinentry_mode.
10836
10837         Add public function gpgme_io_writen.
10838         + commit 29eced50687dd8a39dafe704102ae09ea8e8533a
10839         * src/gpgme.c (gpgme_io_read): New.
10840
10841 2012-11-16  Werner Koch  <wk@gnupg.org>
10842
10843         Improve parsing of the GIT revision number.
10844         + commit 322552a88db47896881e55c00ca301137cd160c6
10845         * configure.ac (git_revision): Use git rev-parse.
10846
10847         Fix non-portable use of chmod in autogen.sh.
10848         + commit cd6de92f42cb6e5b85bc376d5544496cb4d6a88a
10849         * autogen.sh: Remove option -c from chmod.
10850
10851 2012-11-15  Werner Koch  <wk@gnupg.org>
10852
10853         Make _gpgme_encode_percent_string work for memory buffers.
10854         + commit 1a17acd8e9b7c0ef924f98bfb1502fe12e83c363
10855         * src/conversion.c (D_gpgme_encode_percent_string): Remove stray
10856         semicolon.  Reported by Xi Wang.
10857
10858 2012-10-24  Werner Koch  <wk@gnupg.org>
10859
10860         Make local variables configure hack more robust.
10861         + commit c97d067f27899d890a99036fcbed9263f4f68875
10862         * configure.ac (emacs_local_vars_begin): Use extra m4 quoting so that
10863         newer Emscasen won't take it up as Local Variables for this file.
10864
10865         Fix ttyname problem on Android.
10866         + commit 12a0c93433a0b1d7e8019fc35a63476db39327fa
10867         * configure.ac: Define macro and conditional HAVE_ANDROID_SYSTEM.
10868         * m4/gnupg-ttyname.m4: Force use of replacement on Android.
10869         * src/ttyname_r.c: Ditto.
10870
10871         tests: Adhere to the docs and call gpgme_check_version.
10872         + commit cc59b75b21516198b39a56950afbcec140d8ba48
10873         * tests/t-engine-info.c: Call gpgme_check_version.
10874
10875 2012-10-19  Werner Koch  <wk@gnupg.org>
10876
10877         Trace the use of GPG_ERR_INV_ENGINE.
10878         + commit bd24feaa86f8154e550107990392ac9ac05e60d4
10879         * src/debug.h: Include "gpgme.h"
10880         (_gpgme_trace_gpgme_error): New.
10881         (trace_gpg_error): New macro.  Use it in all files where we return
10882         GPG_ERR_INV_ENGINE; also "include debug.h" as needed.
10883
10884         Avoid warning about initialized but not used variable.
10885         + commit 14a8fd4eec126cad282a85c5aa336a6b55229b52
10886         * src/engine-gpgsm.c (gpgsm_set_fd): Do not set DIR if not needed.
10887
10888 2012-10-11  Werner Koch  <wk@gnupg.org>
10889
10890         gpgme-tool: Use membuf functions to build up strings.
10891         + commit e11e7fc5586613525035c3358e15ae24accb96ea
10892         * src/gpgme-tool.c (clear_membuf, init_membuf, put_membuf)
10893         (put_membuf_str, get_membuf, peek_membuf): Add membuf functions.
10894         Take from GnuPG master's common/membuf.[ch] and patch for our use.
10895         (result_xml_escape): Rewrite using new functions.
10896
10897         gpgme-tool: Change license from LPGLv2+ to GPLv3+
10898         + commit aa30b47aa010bf46876f2335e288f8bd8718e396
10899         * src/gpgme-tool.c: Change license notice.
10900
10901 2012-10-11  W. Trevor King  <wking@tremily.us>
10902
10903         gpgme-tool: escape special characters in output XML data (<, >, and &).
10904         + commit 3f1329e1c9b99b1632cc4c4eec2e4399676fd93d
10905
10906         src/gpgme-tool.c (result_xml_escape_replacement, result_xml_escape):
10907         New.
10908         (result_xml_tag_data): Use result_xml_escape() to escape data.
10909         (result_add_error): Use unescaped < and >.
10910
10911         gpgme-tool: Fix chain_id -> chain-id in KEYLIST XML.
10912         + commit c28ebca9f2e21344d68e9fdcec60553f225c2e54
10913
10914         src/gpgme-tool.c (cmd_keylist): Use <chain-id> instead of <chain_id>.
10915
10916 2012-09-28  W. Trevor King  <wking@tremily.us>
10917
10918         gpgme-tool: Return more detailed XML from KEYLIST.
10919         + commit 3d69b51f7f083193db28f364da4590c33b5e44e6
10920         src/gpgme-tool.c (cmd_keylist): Convert output from a list of
10921         to more detailed XML.
10922         (xml_preamble1, xml_preamble2, xml_end): Make global.
10923         (result_add_protocol, result_add_validity): New functions for
10924         generating XML from GPGME types.
10925         (result_add_string): Treat NULL strings as "".
10926         (result_xml_tag_data): Make 'data' a 'const char' so we can use the
10927         value returned by gpgme_get_protocol_name directly.
10928
10929         gpgme-tool: Initialize input_fd and output_fd.
10930         + commit dda3702a9024a08da7bb949e15b63a47d23d59f5
10931         * src/gpgme-tool.c (gpgme_server): Initialize input_fd and output_fd.
10932
10933 2012-09-26  Werner Koch  <wk@gnupg.org>
10934
10935         gpgme-tool: Fix handling of file descriptors.
10936         + commit 193eb62538b9413e0dfbd04c075f871d5aa9130b
10937         * src/gpgme-tool.c (server_reset_fds): Use close/CloseHandle instead
10938         of the assuan close functions.
10939         (_cmd_decrypt_verify, _cmd_sign_encrypt, cmd_verify, cmd_import)
10940         (cmd_export, cmd_genkey, cmd_getauditlog): Use SERVER object instead
10941         of assuan_get_*_fd functions.
10942
10943 2012-09-25  Werner Koch  <wk@gnupg.org>
10944
10945         Document contribution rules.
10946         + commit db33945ab3b8c173a3fc2dd1a0d22d7fc15d8730
10947         * doc/HACKING (License policy): New.
10948         * doc/DCO: New.
10949         * AUTHORS: Change maintainer address.
10950
10951         Add gpgme_set_global_flag to help debugging.
10952         + commit c62b79a1d6e576d94e08cb81c2f5dbcb42ecf8cf
10953         * src/gpgme.c (gpgme_set_global_flag): New.
10954         * src/gpgme.h.in (gpgme_set_global_flag): New.
10955         * src/gpgme.def, src/libgpgme.vers: Add new public function.
10956         * src/debug.c (envvar_override): New.:
10957         (_gpgme_debug_set_debug_envvar): New.
10958         (debug_init): Take ENVVAR_OVERRIDE in account.
10959
10960 2012-07-28  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
10961
10962         Add two recent contributors.
10963         + commit 83e74202cd7c4c975d149c49e2507fdb0e60ef32
10964
10965
10966         Fix sign error in position calculation for mem_seek.
10967         + commit 8384ccbd1a51447dccbd608fc5df3c24cb8999b1
10968         * data-mem.c (mem_seek): Fix sign error in position calculation.
10969
10970         Allow null context on gpgme_set_locale.
10971         + commit 434735f71e6969248651ac01c6bd6f6789a6305d
10972         * gpgme.c (gpgme_set_locale): Allow CTX to be a null pointer.
10973
10974 2012-07-13  Werner Koch  <wk@gnupg.org>
10975
10976         Do not include the removed file status-table.h.
10977         + commit e7aeaebb01395b170c91f290bf3ff5021023420f
10978         * src/engine-uiserver.c: Remove status-table.h which is not anymore
10979         built.  Fixes bug#1412.
10980
10981         Make handling of new conf values more robust (bug#1413).
10982         + commit 9f081da7356288a96e8ea4d81a74ff706c00b0cd
10983         * src/engine-gpgconf.c (arg_to_data): Allow for NULL as value.string.
10984
10985 2012-05-02  Werner Koch  <wk@gnupg.org>
10986
10987         Release 1.3.2.
10988         + commit 9c8608f702ec0f44ae55cd7f33bd8df0a2d48508
10989         * configure.ac: Bump LT version to C19/A8/R1.
10990
10991         * configure.ac (GITLOG_TO_CHANGELOG): Define.
10992         * Makefile.am (gen-ChangeLog): Use it.
10993
10994         Remove unused pth stuff from gpgme-config.
10995         + commit 295dd3f238fa656493d34e8a718958d62226b56c
10996         * src/gpgme-config.in: Remove unused pth stuff.
10997
10998         Update signature summary for the case of missing X.509 keys.
10999         + commit d6402b888fd00b883bbfc00c91a2aa9706e4377e
11000         * src/verify.c (gpgme_op_verify_result): Update summary field.
11001
11002 2012-04-30  Werner Koch  <wk@gnupg.org>
11003
11004         Fix timestamp parsing for y2038 hack.
11005         + commit 1a21574b48ee91eedbf95251ee600648b377d1e7
11006         * src/conversion.c (_gpgme_parse_timestamp): Set ENDP before year 2038
11007         check.
11008
11009 2012-04-20  W. Trevor King  <wking@drexel.edu>
11010
11011         .gitignore: flesh out rules and add subdirectory-.gitignores.
11012         + commit 4cb408d33efe80e7d102049dea244d22907d8395
11013
11014
11015 2012-04-13  W. Trevor King  <wking@drexel.edu>
11016
11017         status-table.c: include string.h for strcmp.
11018         + commit 62bbe58280737d73badbe518f140e40480205176
11019         * status-table.c: include string.h to avoid `warning: implicit
11020         declaration of function 'strcmp'`.
11021
11022 2012-04-03  W. Trevor King  <wking@drexel.edu>
11023
11024         gpgme-tool: add help messages for a number of commands.
11025         + commit c318e69d8fa5f9e92d4aac3dd44fae5adcaade72
11026         * src/gpgme-tool.c (hlp_engine, hlp_sub_protocol, hlp_armor, hlp_textmode,
11027         hlp_include_certs, hlp_keylist_mode, hlp_input, hlp_output, hlp_message,
11028         hlp_recipient, hlp_signer, hlp_signers_clear, hlp_decrypt, hlp_decrypt_verify,
11029         hlp_encrypt, hlp_sign_encrypt, hlp_sign, hlp_verify, hlp_import): New strings.
11030         (hlp_protocol): Fix typo.
11031         (register_commands): Add documentation strings.
11032         (doc): Mention Assuan.
11033
11034         uiserver.texi: fix decryption -> encryption typo in PREP_ENCRYPT discussion.
11035         + commit bb62104adf78e8416b3c56b8b2621edd723b56cd
11036         * doc/uiserver.texi (PREP_ENCRYPT): Fix documentation.
11037
11038         Update Werner Koch's distribution signing key in the README.
11039         + commit 6ec9e21dd1ea2f8509700bce018aef6ad7e9a927
11040         * README: Update signing key.
11041
11042 2012-03-12  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
11043
11044         Do not rely on glibc name of syscall.
11045         + commit ff0a640a18e7b7457e6c2edfdc8307bf44628b60
11046         * src/ath.c (ath_self): Use __NR_gettid, not SYS_gettid.
11047
11048         Update config.guess and config.sub to latest version.
11049         + commit ced1ad01aed32d1e4c5000f3b901db018ef7bf1e
11050         * config.guess, config.sub: Update to latest version.
11051
11052 2012-02-14  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
11053
11054         Rework status table to be less dynamically generated.
11055         + commit 885243e05467e79e2375b3febe7904053ab45dfc
11056         * src/Makefile.am (EXTRA_DIST): Remove mkstatus.
11057         (BUILT_SOURCE, MOSTLYCLEANFILES): Remove.
11058         (main_sources): Remove status-table.h, extra-stati.h.
11059         Add status-table.c.
11060         (status-table.h): Remove rules for built source.
11061         * src/decrypt.c: Don't include extra-stati.h.
11062         * src/engine-gpg.c: Don't include status-table.h.
11063         (status_cmp): Remove function.
11064         (read_status): Use _gpgme_parse_status.
11065         * src/engine-gpgsm.c: Don't include status-table.h.
11066         (status_cmp, parse_status): Remove function.
11067         (gpgsm_assuan_simple_command, status_handler): Use _gpgme_parse_status.
11068         * src/engine-uiserver.c: Don't include status-table.h.
11069         (status_cmp, parse_status): Remove function.
11070         (uiserver_assuan_simple_command, status_handler): Use
11071         _gpgme_parse_status.
11072         * src/gpgme.h.in (gpgme_status_code_t): Add
11073         GPGME_STATUS_DECRYPTION_INFO.
11074         * src/util.h (_gpgme_status_init,_gpgme_parse_status): New declaration.
11075         * src/status-table.c: New file.
11076         * src/extra-stati.h, src/mkstatus: Files removed.
11077         * version.c (do_subsystem_inits): Call _gpgme_status_init.
11078
11079 2012-02-08  Marcus Brinkmann  <mb@g10code.com>
11080
11081         Use gpgme interface for error handling to avoid linking with gpg-error.
11082         + commit dae3073aaa8b7feb1c844fdaf711f79141b9cc65
11083         * tests/t-data.c, tests/run-export.c, tests/run-keylist.c,
11084         tests/run-support.h, tests/run-verify.c, tests/gpg/t-decrypt-verify.c,
11085         tests/gpg/t-edit.c, tests/gpg/t-eventloop.c, tests/gpg/t-keylist-sig.c,
11086         tests/gpg/t-keylist.c, tests/gpg/t-support.h, tests/gpg/t-trustlist.c,
11087         tests/gpg/t-verify.c, tests/gpg/t-wait.c, tests/gpgsm/cms-decrypt.c,
11088         tests/gpgsm/cms-keylist.c, tests/gpgsm/t-keylist.c,
11089         tests/gpgsm/t-support.h, tests/gpgsm/t-verify.c,
11090         tests/opassuan/t-command.c: Use gpgme interface for gpg-error functions.
11091
11092         Link the thread test to pthread.
11093         + commit 0052a72f89c6830818e354358fdd84702d3494c8
11094         * tests/gpg/Makefile.am (t_thread1_LDADD): Add -lpthread.
11095
11096         Link gpgme-tool directly to libassuan, as it uses its interface.
11097         + commit 3f03897cbd223d4a75eb62c3b7bdfeb800661641
11098         * src/Makefile.am (gpgme_tool_LDADD): Add @LIBASSUAN_LIBS@.
11099
11100 2012-01-19  Werner Koch  <wk@gnupg.org>
11101
11102         Support the mingw-w64 toolchain.
11103         + commit 24a10a4af948ebb1c767b69a92fa5bbe933a417c
11104         * autogen.sh (build-w32): Add i686-w64-mingw32 to the toolprefix.
11105
11106         Fix Solaris problems with ttyname_r.
11107         + commit 2f304957f5122a5d9da643dc9951ee67ece06eaf
11108         * m4/gnupg-ttyname.m4: New.  Based on ttyname_r from gnulib.
11109         * src/ttyname_r.c (_gpgme_ttyname_r): Rename from ttyname_r.
11110         Implement hacks required for Solaris and possible other non-fully
11111         Posix systems.
11112         * src/util.h: Include unistd.h.  Redefine ttyname_r depending on
11113         REPLACE_TTYNAME_R and put it into the gpgme name space.
11114
11115         Try to make configure.ac a bit smaller.
11116         + commit c96778297f5477448a676fcf0c61044bdbccc86d
11117         * configure.ac: Move header checks.
11118
11119         For W32 use a build number instead of abbreviated commit id.
11120         + commit 574b087e84f5652cf9d8eba8aa16b8d6bb988035
11121         We would need to use a shortened commit id so that it fits into an 16
11122         bit Windows variable.  Further it is a random number and not something
11123         increasing.  Thus a build number made up from the day of the year and
11124         the hour is much more useful to describe a build number for a specific
11125         revision.
11126         * configure.ac [W32]: Replace BUILD_REVISION by BUILD_NUMBER.
11127         * src/versioninfo.rc.in: Ditto.
11128
11129         Adjust configure.ac for modern autoconf.
11130         + commit a0149630ce6d3e17a7475e20e8b2e31ed5ba57fd
11131         * configure.ac: Minor cleanups.
11132
11133         Update to libtool 2.4.2.
11134         + commit 4cfddadcd0a569f0b204dccea3c975ce0bdfb232
11135         * ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4,
11136         * m4/lt~obsolete.m4: Update.
11137
11138         Add ttyname_r check macro from gnulib.
11139         + commit 3ef528b63679df912551d5d21fc36e465cf50c40
11140         * m4/gnupg-ttyname.m4: New. Taken from current gnulib.
11141
11142 2011-12-02  Werner Koch  <wk@gnupg.org>
11143
11144         Generate the ChangeLog from commit logs.
11145         + commit a4c4ee1aaea4359432bdf60dd572f549ef8dee83
11146         * build-aux/gitlog-to-changelog: New script.  Taken from gnulib.
11147         * build-aux/git-log-fix: New file.
11148         * build-aux/git-log-footer: New file.
11149         * build-aux/git-hook/commit-msg: New script.
11150         * doc/HACKING: New file.
11151         * ChangeLog: New file.
11152         * Makefile.am (EXTRA_DIST): Add new files.
11153         (gen-ChangeLog): New.
11154         (dist-hook): Run gen-ChangeLog.
11155         * autogen.sh: Install commit-msg hook for git.
11156
11157         Rename all ChangeLog files to ChangeLog-2011.
11158
11159 2011-12-02  Werner Koch  <wk@gnupg.org>
11160
11161         NB: Changes done before December 1st, 2011 are described in
11162         per directory files named ChangeLog-2011.  See doc/HACKING for
11163         details.
11164
11165         -----
11166         Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
11167                       2010, 2011, 2012, 2013 g10 Code GmbH
11168
11169         Copying and distribution of this file and/or the original GIT
11170         commit log messages, with or without modification, are
11171         permitted provided the copyright notice and this notice are
11172         preserved.