Imported Upstream version 1.10.0
[platform/upstream/gpgme.git] / ChangeLog
1 2017-12-12  Werner Koch  <wk@gnupg.org>
2
3         Release 1.10.0.
4         + commit 6a42eb5f3809d5eb3767667c190b395d028886e7
5
6
7         Require libgpg-error 1.24 and libassuan 2.4.2.
8         + commit d4d04d6c0432b032f6ea23c8517fd6a5f623bb67
9         * src/util.h (GPG_ERR_FALSE): Remove due to newer libgpg-error.
10
11 2017-12-11  Andre Heinecke  <aheinecke@intevation.de>
12
13         qt: Don't use QDateTime::toSecsSinceEpoch.
14         + commit b61d0fbb74f04408dfe8637c719b97217e061a3c
15         * lang/qt/src/qgpgmequickjob.cpp (addSubkeyWorker)
16         (createWorker): Use toMSecsSinceEpoch instead toSecsSinceEpoch.
17
18 2017-12-11  Werner Koch  <wk@gnupg.org>
19
20         core,w32: Fix popping up of console windows due to gpgconf.
21         + commit 0a567a94d94cd93c5d88f5db802925c95f0974d0
22         * src/gpgme-w32spawn.c (my_spawn): Create w/o DETACHED_PROCESS.
23
24 2017-12-07  Andre Heinecke  <aheinecke@intevation.de>
25
26         cpp: Fix handling of lsig promotion.
27         + commit 1458adaea4acdcf7ebbead6668476fce92db5af8
28         * src/gpgsignkeyeditinteractor.cpp (SignKeyState): Add second
29         CONFIRM state.
30         (makeTable): Properly handle local_promote_okay.
31         (action): Handle CONFIRM2.
32
33         tests: Print userid signatures in run-keylist.
34         + commit 5ba1cbdf39efd90c7987bfc2bc030b6504e70076
35         * tests/run-keylist.c (main): Print UID signatures if there
36         are any.
37
38 2017-12-04  Werner Koch  <wk@gnupg.org>
39
40         core: Also check for a failed selftest in gpgm_data_new.
41         + commit 0c1244a2b7e30ab0610ae70166e1b5d0219782c3
42         * src/data.c (_gpgme_data_new): Check for failed selftest.
43         * tests/run-support.h (make_filename): Print a message on mallooc
44         failure.
45         (init_gpgme_basic): New.
46         * tests/run-identify.c (main): Call init_gpgme_basic becuase we do not
47         need to setup a protocol.
48         * tests/t-data.c: Define PGM and include run-support.h.
49         (make_filename): Remove.
50         (main): Call init_gpgme_basic.
51
52 2017-12-04  Tobias Mueller  <muelli@cryptobitch.de>
53
54         python: Default whence argument for Data() to SEEK_SET.
55         + commit 3cf9aedc92b6c65d2cb34037e52b9a299637d03b
56         * lang/python/gpgme.i: copied signature from gpgme.h and defaulted the
57         value to SEEK_SET.
58         * lang/python/tests/t-data.py: Added a test for no second argument
59
60 2017-12-01  Andre Heinecke  <aheinecke@intevation.de>
61
62         qt: Add job for quick commands.
63         + commit 7d1ac5d61de3c55bf7ff14997b4b111a0f90c177
64         * lang/qt/src/qgpgmequickjob.cpp,
65         lang/qt/src/qgpgmequickjob.h,
66         lang/qt/src/quickjob.h: New.
67         * lang/qt/src/Makefile.am,
68         lang/qt/src/protocol.h,
69         lang/qt/src/protocol_p.h,
70         lang/qt/src/job.cpp: Update accordingly.
71
72         cpp: Wrap create_key and create_subkey.
73         + commit 8e2d6c28a5e923f829b5a26d19d9d897949aa1fe
74         * lang/cpp/src/context.cpp,
75         lang/cpp/src/context.h (Context::startCreateKey)
76         (Context::createKey, Context::createSubkey)
77         (Context::startCreateSubkey): New.
78
79         Fix uid parsing for ldap keyserver.
80         + commit 651b3d8207cc7d85699f89fc4c21cb1243453aa8
81         * src/engine-gpg.c (gpg_keylist_preprocess): Check field count
82         for uid and add fallback.
83
84 2017-11-30  Werner Koch  <wk@gnupg.org>
85
86         tests: Add missing variable to gpgsm tests Makefile.
87         + commit f43016500774ab82f222249202bda6c463aaf63f
88         * tests/gpgsm/Makefile.am (GPG_AGENT): Set var.  It is used later.
89
90 2017-11-21  NIIBE Yutaka  <gniibe@fsij.org>
91
92         tests: Make portability fix.
93         + commit c441fb73130f4c117094d7da4de9fe56f886e65d
94         * lang/python/tests/Makefile.am: Distinguish target and path.
95         * tests/gpg/Makefile.am: Ditto.
96         * tests/gpgsm/Makefile.am: Ditto.
97
98 2017-11-14  Andre Heinecke  <aheinecke@intevation.de>
99
100         qt: Fix IODeviceDataProvider with Process.
101         + commit 56b27b21d5f8dd95b9d6415c5e98b821774f3093
102         * lang/qt/src/dataprovider.cpp (blocking_read): Keep
103         reading if process is not atEnd.
104
105 2017-10-12  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
106
107         core: use getdents64 syscall on linux instead of getdents.
108         + commit 00daac15530eabed5e61d841b2df939c2242667c
109         * src/posix-io.c (get_max_fds): use getdents64 instead of getdents.
110
111 2017-10-04  Werner Koch  <wk@gnupg.org>
112
113         core: Allow disabling the use of SYS_getdents for Linux.
114         + commit 4632adf403611b50be2b4e852a4607070935d0e5
115         * configure.ac (USE_LINUX_GETDENTS): New ac_define.  Add option
116         --disable-linux-getdents.
117         * src/posix-io.c: Make use of USE_LINUX_GETDENTS.
118
119 2017-10-04  Colin Watson  <cjwatson@debian.org>
120
121         core: Restore get_max_fds optimization on Linux.
122         + commit b5b996b1a142abb90296f5feadf0b5b19c59f738
123         * src/posix-io.c (get_max_fds): Restore Linux optimization, this time
124         using open/getdents/close rather than opendir/readdir/closedir.
125
126 2017-09-04  Andre Heinecke  <aheinecke@intevation.de>
127
128         qt: Add test for version info.
129         + commit bd5d470cef513b2f459316869b81267cde7a9f13
130         * lang/qt/tests/t-various.cpp (TestVarious::testVersion): New.
131
132         cpp: Fix version info comparison.
133         + commit 58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0
134         * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator<):
135         Fix logic.
136         * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator>):
137         New.
138         * NEWS: Mention added API
139
140 2017-08-24  Werner Koch  <wk@gnupg.org>
141
142         core: New context flag "auto-key-retrieve"
143         + commit 47f61df0704485b8165c9cf2a27ad57bcd864239
144         * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag
145         "auto-key-retrieve".
146         * src/context.h (gpgme_context): New field auto_key_retrieve.
147         * src/engine-backend.h (struct engine_ops): Add arg auto_key_retrieve
148         to field 'decrypt'.
149         * src/engine-gpg.c (gpg_decrypt): Add arg auto_key_retrieve and pass
150         option --auto-key-retrieve to gpg.  Adjust all callers.
151         (gpg_verify): Ditto.
152         * src/engine-gpgsm.c (gpgsm_decrypt): Add dummy arg auto_key_retrieve.
153         * src/engine-uiserver.c (uiserver_decrypt): Ditto.
154         * tests/run-verify.c (main): Add option --auto-key-retrieve.
155
156         core: New public enum gpgme_keyorg_t.
157         + commit 9bde9144f0c2d0087799511e9b041dc945a4cfa8
158         * src/gpgme.h.in (gpgme_keyorg_t): New.
159         * src/keylist.c (parse_keyorg): New.
160         (keylist_colon_handler): Set key->ORIGIN.
161
162 2017-08-24  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
163
164         gpgconf: Add more comments.
165         + commit 91e47d71652bd0f83b51089c343c3c4836bdfa8a
166         * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir):
167         Add comments.
168
169 2017-08-23  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
170
171         Fix a couple of bugs pointed out by clang compiler warnings.
172         + commit bfb3a01a0c55aa327dcab061fa808672362cb09d
173         * src/engine-gpgconf.c (gpgconf_config_dir_cb): Fix cast.
174         * src/key.c (_gpgme_key_add_sig): Fix pointer reference.
175
176 2017-08-21  Alon Bar-Lev  <alon.barlev@gmail.com>
177
178         python: Support parallel build in tests.
179         + commit 57c12593082e4ad302041269f1c35f2fe7d2fb1a
180         * lang/python/tests/Makefile.am: Depend xcheck with all which was lost
181         due to the check hack.
182
183 2017-08-21  Justus Winter  <justus@g10code.com>
184
185         python: Improve keylist test.
186         + commit 70c8be9efe8de40bec0f0673589f3c9be7136674
187         * lang/python/tests/t-keylist.py: Check a keylist matching no keys.
188
189 2017-08-16  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
190
191         doc: Add version information.
192         + commit b9b08e46934eea9083afb2eaf4bffa23d6c27801
193         * doc/gpgme.texi (since): New macro.  Use it to add version
194         information to those APIs that are mentioned in the NEWS file.
195
196         doc: Clarify import keys operation further.
197         + commit 0ee7f4f178284dae153a59be710bc994820369e5
198         * doc/gpgme.texi (gpgme_op_import_keys): Further clarifications.
199
200         gpgconf: Fix some warnings.
201         + commit 3244d4daff892d5d3c39e78f4eb0934379beda2c
202         * tests/gpg/t-gpgconf.c (main): Fix warnings.
203         * src/engine-gpgconf.c (struct gpgconf_config_dir_s): New struct.
204         (gpgconf_config_dir_cb, gpgconf_conf_dir) Use it to fix warning.
205
206         gpgconf: Fix symbol export.
207         + commit 97a1abe72e73f85bbf922fa588d002a226db5459
208         * gpgme.def: Fix last change.
209         (gpgme_op_conf_save): Replace duplicate from c&p ...
210         (gpgme_op_conf_dir): ... with this.
211
212 2017-08-15  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
213
214         NEWS: Add missing entry.
215         + commit fa3918598de35fef0bf626035d59ea36c53832b9
216
217
218         gpgconf: Add access to --list-dirs for non-default engine.
219         + commit 9f24e6c9010e171fd11c5cdac797cb8ce2e501dd
220         * src/engine-assuan.c (_gpgme_engine_ops_assuan): Add conf_dir.
221         * src/engine-g13.c (_gpgme_engine_ops_g13): Likewise.
222         * src/engine-gpg.c (_gpgme_engine_ops_gpg): Likewise.
223         * src/engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Likewise.
224         * src/engine-spawn.c (_gpgme_engine_ops_spawn): Likewise.
225         * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Likewise.
226         * src/engine-backend.h (struct engine_ops): Likewise.
227         * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir):
228         New functions.
229         (struct engine_ops): Add gpgconf_conf_dir.
230         * src/engine.c (_gpgme_engine_op_conf_dir): New function.
231         * src/engine.h (_gpgme_engine_op_conf_dir): New prototype.
232         * src/gpgconf.c (gpgme_op_conf_dir): New function.
233         * src/gpgme.def (gpgme_op_conf_save): New symbol.
234         * src/gpgme.h.in (gpgme_op_conf_dir): New prototype.
235         * src/libgpgme.vers (gpgme_op_conf_dir): New symbol.
236         * tests/gpg/t-gpgconf.c (main): Test gpgme_op_conf_dir.
237
238 2017-08-11  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
239
240         g10: Add new delete operations that allow more flags.
241         + commit a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf
242         * NEWS: Document new interfaces.
243         * doc/gpgme.texi: Document new interfaces.
244         * src/gpgme.h.in (GPGME_DELETE_ALLOW_SECRET, GPGME_DELETE_FORCE,
245         gpgme_op_delete_ext_start, gpgme_op_delete_ext): New.
246         * src/delete.c (delete_start): Change allow_secret argument to flags.
247         (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New functions.
248         * src/engine-backend.h (delete): Change allow_secret argument to flags.
249         * src/engine.c (_gpgme_engine_op_delete): Likewise.
250         * src/engine.h (_gpgme_engine_op_delete): Likewise (for prototype).
251         * src/engine-gpgsm.c (gpgsm_delete): Likewise.
252         * src/engine-gpg.c (gpg_delete): Likewise.  Implement GPGME_DELETE_FORCE.
253         * src/gpgme.def (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
254         * src/libgpgme.vers (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
255
256 2017-08-10  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
257
258         doc: Clarify import keys operation.
259         + commit dfb3ca85680534b3885ab04d3fba4752c5a6f998
260         * doc/gpgme.texi (gpgme_op_import_start): Fix grammar.
261         (gpgme_op_import_keys): Clarify some wording and fix result.
262         * src/import.c (gpgme_op_import_keys): Clarify comment.
263
264         doc: Add more tofu documentation.
265         + commit 274609baceda3378b21f84c3ae6a44806dad2dba
266         * doc/gpgme.texi (gpgme_tofu_info_t): Document structure.
267         (gpgme_sigsum_t): Document GPGME_SIGSUM_TOFU_CONFLICT.
268
269 2017-07-27  Andre Heinecke  <aheinecke@intevation.de>
270
271         core: Fix status parsing for decrypt + verify.
272         + commit d3796e4504a2b4f422de17d78f3acfe8dd199c9c
273         * src/decrypt.c (parse_status_error): Don't modify args.
274
275 2017-07-26  Andre Heinecke  <aheinecke@intevation.de>
276
277         cpp: Fix Key::isDeVs for subkeys.
278         + commit c7be41a5f850addceb2a95444bad2a31cdcd1ce5
279         * lang/cpp/src/key.cpp (Key::isDeVs): Check all subkeys.
280
281 2017-07-13  Justus Winter  <justus@g10code.com>
282
283         tests: Fix distcheck.
284         + commit 7fde780cc1773c6d3902d4f49a8d4aadbf3223d4
285         * tests/start-stop-agent: Remove backup file.
286
287         tests: Make agent spawning more robust.
288         + commit 9cd2b58dfb2c21cce64520cf4c726859b583d14e
289         * tests/gpgsm/Makefile.am (gpgsm.conf): Add agent-program directive.
290         * tests/start-stop-agent: Update agent-program directive.
291
292 2017-07-12  Werner Koch  <wk@gnupg.org>
293
294         tests: Fix printf compiler warning for an error case.
295         + commit 46d2e48105e0929ec38dd4106004dd60d941df9a
296         * tests/gpg/t-keylist.c (main): Cast DIM to int.
297
298         core: Return NO_SECKEY error code on decryption.
299         + commit ad0c5ab4cd8d3a1b11b37dc137b75a67aa26da37
300         * src/decrypt.c (op_data_t): Add flag any_no_seckey.
301         (_gpgme_decrypt_status_handler): Consult that flag.
302         (_gpgme_decrypt_status_handler): Set that flag.
303
304         core: Return CANCELED and BAD_PASSPHRASE error code on decryption.
305         + commit d37bc7e025cdc6228da45b2b527e9f3bfef71c71
306         * src/decrypt.c (op_data_t): Add field pkdecrypt_failed.
307         (_gpgme_decrypt_status_handler): Consult new field.
308         (parse_status_error): Handle some error codes.
309
310         core: Simplify parsing of STATUS_ERROR in decrypt.c.
311         + commit 87703dbb86ac8fd8abd23170f8038ea6e3dbde28
312         * src/decrypt.c (_gpgme_decrypt_status_handler): Factor some code out
313         to ...
314         (parse_status_error): new.  Modernize parsing.
315
316 2017-07-11  Justus Winter  <justus@g10code.com>
317
318         python: Improve error handling.
319         + commit 1e68f93dc547ae75b921e43db35e3599de92e2cb
320         * NEWS: Update.
321         * lang/python/src/core.py (Context.__read__): New helper function.
322         (Context.encrypt): Attach partial results to exceptions.
323         (Context.decrypt): Likewise.
324         (Context.sign): Likewise.
325         (Context.verify): Likewise.
326         * lang/python/src/errors.py (GpgError): Move the core of GPGMEError to
327         this class, add a nicer interface for it.  This makes the errors
328         thrown by this library more uniform, and allows us to track the
329         underlying error in synthesized high-level errors.
330         (GPGMEError): Simplify.
331         (...): Make sure to call the parent classes' constructor in all other
332         classes.
333
334 2017-07-10  Andre Heinecke  <aheinecke@intevation.de>
335
336         Add isDeVs to ostream operator.
337         + commit fe79eb8de3dc780eafb38a0a0a016748e764ff04
338         * lang/cpp/src/decryptionresult.cpp,
339         lang/cpp/src/verificationresult.cpp: Extend ostream operator
340         to include isDeVs.
341
342 2017-06-12  Andre Heinecke  <aheinecke@intevation.de>
343
344         cpp: Fix CMake config library name for GPGME.
345         + commit 5c53c702605b8d4458a14e6303cdc13f3b106efa
346         * lang/cpp/src/GpgmeppConfig.cmake.in.in: The link library
347         is of course also dynamic.
348
349 2017-06-01  Justus Winter  <justus@g10code.com>
350
351         Add flag 'is_de_vs' to decryption results and signatures.
352         + commit 05fa2a9c7764b28fdac35eb72631439df948ca0e
353         * NEWS: Update.
354         * lang/cpp/src/decryptionresult.cpp (DecryptionResult::isDeVs): New
355         function.
356         * lang/cpp/src/decryptionresult.h (DecryptionResult::isDeVs): New
357         prototype.
358         * lang/cpp/src/verificationresult.cpp (Signature::isDeVs): New
359         function.
360         * lang/cpp/src/verificationresult.h (Signature::isDeVs): New
361         prototype.
362         * lang/python/src/results.py (DecryptResult): Turn field 'is_de_vs'
363         into a boolean.
364         (Signature): Likewise.
365         * src/decrypt.c (_gpgme_decrypt_status_handler): Handle the new
366         compliance status line.
367         * src/verify.c (_gpgme_verify_status_handler): Likewise.
368         * src/gpgme.h.in (gpgme_status_code_t): Add new status codes for the
369         new status lines.
370         * src/keylist.c (parse_pub_field18): Move function to 'util.h'.
371         (keylist_colon_handler): Adapt callsites.
372         * src/status-table.c (status_table): Add new status lines.
373         * src/util.h (PARSE_COMPLIANCE_FLAGS): New macro.  This used to be
374         'parse_pub_field18', but turned into a macro to make it polymorphic.
375
376 2017-05-18  Justus Winter  <justus@g10code.com>
377
378         python: Fix build in certain cases.
379         + commit 84a203e60b9935bd8536cd2832fbc55d7f011341
380         * lang/python/setup.py.in: Prepend the Python build dir to the list of
381         include directories so that it takes precedence over any other include
382         directory.
383
384 2017-05-10  Justus Winter  <justus@g10code.com>
385
386         tests: Remove remnants of 'check-local'.
387         + commit a9b4c0ad0d1085ff76742e44cf0cf926e89d1f4c
388         * tests/gpgsm/Makefile.am (check-local): Drop rule and the dependency
389         on it.
390
391         python: Fix test environment creation.
392         + commit 6b4dd3b929ac23271bfa96edb9dbb142eca0a30f
393         * lang/python/tests/Makefile.am (pubring-stamp): Do not depend on the
394         configuration files, this can trigger superfluous rebuilds.
395
396         tests: Make sure to kill all previously running daemons.
397         + commit a226eca84670ef4e171c3a54e7caefb3a89254a4
398         * lang/python/tests/Makefile.am: Kill all previously running daemons
399         before creating the private key store.
400         * lang/qt/tests/Makefile.am: Likewise.
401         * tests/gpg/Makefile.am: Likewise.
402         * tests/gpgsm/Makefile.am: Likewise.
403
404         tests: Harmonize test suites.
405         + commit 15adff073bb89dc032d8342cfbbdad2850943f52
406         * lang/python/tests/Makefile.am: Create test environment as part of
407         'make all'.
408         * tests/gpg/Makefile.am: Make sure the private keystore is created
409         first.
410         * tests/gpgsm/Makefile.am: Create test environment as part of
411         'make all'.  Make sure the private keystore is created
412         first.
413
414         qt: Stop agent on clean.
415         + commit 093b5497b7231590ce91ccf73ba64ebc0757f9e9
416         * lang/qt/tests/Makefile.am (clean-local): Stop agent.
417
418 2017-05-10  Andre Heinecke  <aheinecke@intevation.de>
419
420         qt: Add a missing include <functional>
421         + commit 5e27bf98b4c48cf6a239bcc94b7b67515ff339e7
422         * lang/qt/src/qgpgmenewcryptoconfig.cpp: Include functional.
423
424         qt: Undeprecate API that I find useful.
425         + commit cc2ef3d07c0d261bb9e8e8c0f2706e1a08e4ec53
426         * lang/qt/src/decryptjob.h,
427         lang/qt/src/decryptverifyjob.h,
428         lang/qt/src/signencryptjob.h,
429         lang/qt/src/verifydetachedjob.h,
430         lang/qt/src/verifyopaquejob.h: Undeprecate ByteArray based API.
431
432         qt, tests: Don't use internal API.
433         + commit b56f398eff4e3e70dea714c3174a5512dd9bcf33
434         * lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp:
435         Only use exported API.
436
437 2017-05-03  Andre Heinecke  <aheinecke@intevation.de>
438
439         core: Don't split gpgconf strings on comma.
440         + commit df4eb611e33dcab7bebf07b13734c7db7ccf40da
441         * src/engine-gpgconf.c (gpgconf_parse_option): Don't split
442         strings on comma.
443
444 2017-04-25  Andre Heinecke  <aheinecke@intevation.de>
445
446         qt, cpp: Add additional copyright BSI notes.
447         + commit 28734240e2a2ce67b64df55364f35e1648376311
448         * lang/cpp/Makefile.am,
449         lang/cpp/src/Makefile.am,
450         lang/cpp/src/callbacks.cpp,
451         lang/cpp/src/callbacks.h,
452         lang/cpp/src/configuration.cpp,
453         lang/cpp/src/configuration.h,
454         lang/cpp/src/context_glib.cpp,
455         lang/cpp/src/context_p.h,
456         lang/cpp/src/context_qt.cpp,
457         lang/cpp/src/context_vanilla.cpp,
458         lang/cpp/src/data_p.h,
459         lang/cpp/src/decryptionresult.cpp,
460         lang/cpp/src/decryptionresult.h,
461         lang/cpp/src/defaultassuantransaction.cpp,
462         lang/cpp/src/defaultassuantransaction.h,
463         lang/cpp/src/editinteractor.cpp,
464         lang/cpp/src/editinteractor.h,
465         lang/cpp/src/encryptionresult.cpp,
466         lang/cpp/src/encryptionresult.h,
467         lang/cpp/src/engineinfo.cpp,
468         lang/cpp/src/engineinfo.h,
469         lang/cpp/src/error.h,
470         lang/cpp/src/eventloopinteractor.cpp,
471         lang/cpp/src/eventloopinteractor.h,
472         lang/cpp/src/exception.cpp,
473         lang/cpp/src/exception.h,
474         lang/cpp/src/global.h,
475         lang/cpp/src/gpgadduserideditinteractor.cpp,
476         lang/cpp/src/gpgadduserideditinteractor.h,
477         lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
478         lang/cpp/src/gpgagentgetinfoassuantransaction.h,
479         lang/cpp/src/gpgmefw.h,
480         lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
481         lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
482         lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
483         lang/cpp/src/gpgsetownertrusteditinteractor.h,
484         lang/cpp/src/gpgsignkeyeditinteractor.cpp,
485         lang/cpp/src/gpgsignkeyeditinteractor.h,
486         lang/cpp/src/importresult.cpp,
487         lang/cpp/src/importresult.h,
488         lang/cpp/src/interfaces/assuantransaction.h,
489         lang/cpp/src/interfaces/dataprovider.h,
490         lang/cpp/src/interfaces/passphraseprovider.h,
491         lang/cpp/src/interfaces/progressprovider.h,
492         lang/cpp/src/keygenerationresult.cpp,
493         lang/cpp/src/keygenerationresult.h,
494         lang/cpp/src/keylistresult.cpp,
495         lang/cpp/src/keylistresult.h,
496         lang/cpp/src/notation.h,
497         lang/cpp/src/result.h,
498         lang/cpp/src/result_p.h,
499         lang/cpp/src/scdgetinfoassuantransaction.cpp,
500         lang/cpp/src/scdgetinfoassuantransaction.h,
501         lang/cpp/src/signingresult.cpp,
502         lang/cpp/src/signingresult.h,
503         lang/cpp/src/trustitem.cpp,
504         lang/cpp/src/trustitem.h,
505         lang/cpp/src/util.h,
506         lang/cpp/src/verificationresult.cpp,
507         lang/cpp/src/verificationresult.h,
508         lang/cpp/src/vfsmountresult.cpp,
509         lang/qt/Makefile.am,
510         lang/qt/doc/Makefile.am,
511         lang/qt/src/Makefile.am,
512         lang/qt/src/defaultkeygenerationjob.h,
513         lang/qt/tests/Makefile.am: Add missing copyright.
514
515         Change copyright from Intevation to BSI.
516         + commit 70035834326d0d04a5904ae01bc3757e577facf4
517         * lang/cpp/src/gpggencardkeyinteractor.cpp,
518         lang/cpp/src/gpggencardkeyinteractor.h,
519         lang/cpp/src/gpgmepp_export.h,
520         lang/cpp/src/swdbresult.cpp,
521         lang/cpp/src/swdbresult.h,
522         lang/cpp/src/tofuinfo.cpp,
523         lang/cpp/src/tofuinfo.h,
524         lang/qt/src/abstractimportjob.h,
525         lang/qt/src/adduseridjob.h,
526         lang/qt/src/changeexpiryjob.h,
527         lang/qt/src/changeownertrustjob.h,
528         lang/qt/src/changepasswdjob.h,
529         lang/qt/src/cryptoconfig.cpp,
530         lang/qt/src/cryptoconfig.h,
531         lang/qt/src/dataprovider.cpp,
532         lang/qt/src/dataprovider.h,
533         lang/qt/src/decryptjob.h,
534         lang/qt/src/decryptverifyjob.h,
535         lang/qt/src/deletejob.h,
536         lang/qt/src/dn.cpp,
537         lang/qt/src/dn.h,
538         lang/qt/src/downloadjob.h,
539         lang/qt/src/encryptjob.h,
540         lang/qt/src/exportjob.h,
541         lang/qt/src/hierarchicalkeylistjob.h,
542         lang/qt/src/importfromkeyserverjob.h,
543         lang/qt/src/importjob.h,
544         lang/qt/src/job.cpp,
545         lang/qt/src/job.h,
546         lang/qt/src/keyformailboxjob.h,
547         lang/qt/src/keygenerationjob.h,
548         lang/qt/src/keylistjob.h,
549         lang/qt/src/listallkeysjob.h,
550         lang/qt/src/multideletejob.h,
551         lang/qt/src/protocol.h,
552         lang/qt/src/protocol_p.h,
553         lang/qt/src/qgpgme_export.h,
554         lang/qt/src/qgpgmeadduseridjob.cpp,
555         lang/qt/src/qgpgmeadduseridjob.h,
556         lang/qt/src/qgpgmebackend.cpp,
557         lang/qt/src/qgpgmebackend.h,
558         lang/qt/src/qgpgmechangeexpiryjob.cpp,
559         lang/qt/src/qgpgmechangeexpiryjob.h,
560         lang/qt/src/qgpgmechangeownertrustjob.cpp,
561         lang/qt/src/qgpgmechangeownertrustjob.h,
562         lang/qt/src/qgpgmechangepasswdjob.cpp,
563         lang/qt/src/qgpgmechangepasswdjob.h,
564         lang/qt/src/qgpgmedecryptjob.cpp,
565         lang/qt/src/qgpgmedecryptjob.h,
566         lang/qt/src/qgpgmedecryptverifyjob.cpp,
567         lang/qt/src/qgpgmedecryptverifyjob.h,
568         lang/qt/src/qgpgmedeletejob.cpp,
569         lang/qt/src/qgpgmedeletejob.h,
570         lang/qt/src/qgpgmedownloadjob.cpp,
571         lang/qt/src/qgpgmedownloadjob.h,
572         lang/qt/src/qgpgmeencryptjob.cpp,
573         lang/qt/src/qgpgmeencryptjob.h,
574         lang/qt/src/qgpgmeexportjob.cpp,
575         lang/qt/src/qgpgmeexportjob.h,
576         lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
577         lang/qt/src/qgpgmeimportfromkeyserverjob.h,
578         lang/qt/src/qgpgmeimportjob.cpp,
579         lang/qt/src/qgpgmeimportjob.h,
580         lang/qt/src/qgpgmekeyformailboxjob.cpp,
581         lang/qt/src/qgpgmekeyformailboxjob.h,
582         lang/qt/src/qgpgmekeygenerationjob.cpp,
583         lang/qt/src/qgpgmekeygenerationjob.h,
584         lang/qt/src/qgpgmekeylistjob.cpp,
585         lang/qt/src/qgpgmekeylistjob.h,
586         lang/qt/src/qgpgmelistallkeysjob.cpp,
587         lang/qt/src/qgpgmelistallkeysjob.h,
588         lang/qt/src/qgpgmenewcryptoconfig.cpp,
589         lang/qt/src/qgpgmenewcryptoconfig.h,
590         lang/qt/src/qgpgmerefreshkeysjob.cpp,
591         lang/qt/src/qgpgmerefreshkeysjob.h,
592         lang/qt/src/qgpgmesecretkeyexportjob.cpp,
593         lang/qt/src/qgpgmesecretkeyexportjob.h,
594         lang/qt/src/qgpgmesignencryptjob.cpp,
595         lang/qt/src/qgpgmesignencryptjob.h,
596         lang/qt/src/qgpgmesignjob.cpp,
597         lang/qt/src/qgpgmesignjob.h,
598         lang/qt/src/qgpgmesignkeyjob.cpp,
599         lang/qt/src/qgpgmesignkeyjob.h,
600         lang/qt/src/qgpgmetofupolicyjob.cpp,
601         lang/qt/src/qgpgmetofupolicyjob.h,
602         lang/qt/src/qgpgmeverifydetachedjob.cpp,
603         lang/qt/src/qgpgmeverifydetachedjob.h,
604         lang/qt/src/qgpgmeverifyopaquejob.cpp,
605         lang/qt/src/qgpgmeverifyopaquejob.h,
606         lang/qt/src/qgpgmewkspublishjob.cpp,
607         lang/qt/src/qgpgmewkspublishjob.h,
608         lang/qt/src/refreshkeysjob.h,
609         lang/qt/src/signencryptjob.h,
610         lang/qt/src/signjob.h,
611         lang/qt/src/signkeyjob.h,
612         lang/qt/src/specialjob.h,
613         lang/qt/src/threadedjobmixin.cpp,
614         lang/qt/src/threadedjobmixin.h,
615         lang/qt/src/tofupolicyjob.h,
616         lang/qt/src/verifydetachedjob.h,
617         lang/qt/src/verifyopaquejob.h,
618         lang/qt/src/wkspublishjob.h,
619         lang/qt/tests/run-keyformailboxjob.cpp,
620         lang/qt/tests/t-config.cpp,
621         lang/qt/tests/t-encrypt.cpp,
622         lang/qt/tests/t-keylist.cpp,
623         lang/qt/tests/t-keylocate.cpp,
624         lang/qt/tests/t-ownertrust.cpp,
625         lang/qt/tests/t-support.cpp,
626         lang/qt/tests/t-support.h,
627         lang/qt/tests/t-tofuinfo.cpp,
628         lang/qt/tests/t-various.cpp,
629         lang/qt/tests/t-verify.cpp,
630         lang/qt/tests/t-wkspublish.cpp,
631         tests/gpg/t-encrypt-mixed.c,
632         tests/gpg/t-thread-keylist-verify.c,
633         tests/gpg/t-thread-keylist.c,
634         tests/run-decrypt.c: Change Intevation GmbH copyright to BSI.
635
636 2017-04-24  Andre Heinecke  <aheinecke@intevation.de>
637
638         doc: Improve doc on passphrase_cb / pinentry mode.
639         + commit 8d61aba1fe0379ba14494f8ae2011ba531554ef4
640         * doc/gpgme.texi (Passphrase Callback): Mention pinentry_mode and
641         restrictions.
642         (Pinentry Mode): Fix wording and clarify versions that need
643         loopback mode for passphrase_cb to work.
644
645 2017-04-24  Justus Winter  <justus@g10code.com>
646
647         tests: Update encrypted sample files.
648         + commit ac28e66f46132ae4a854d04b2f17acd4d55e4296
649         * tests/gpg/cipher-1.asc: Update file.
650         * tests/gpg/cipher-2.asc: Likewise.
651
652 2017-04-11  Justus Winter  <justus@g10code.com>
653
654         python: Skip TOFU test if not supported by GnuPG.
655         + commit 979d48e823357af9999a2adb34d75adaade8dec2
656         * lang/python/tests/support.py (have_tofu_support): New function.
657         * lang/python/tests/t-quick-key-manipulation.py: Skip TOFU test if not
658         supported by GnuPG.
659
660 2017-04-11  Alon Bar-Lev  <alon.barlev@gmail.com>
661
662         python: use autoconf pre-processor when building via autoconf.
663         + commit a827382cafe7f1425455dcc8bf5ef049172eb493
664         * configure.ac: Add AC_PROG_CPP.
665         * lang/python/Makefile.am: Set CPP environment for setup.py to use.
666
667         python: fix run-tests missing python_libdir.
668         + commit d785c053a982bddefd7014dc6856d1af345fe9fb
669         * lang/python/tests/run-tests.py: Set python_libdir if --python-libdir
670         is set.
671
672 2017-04-10  Justus Winter  <justus@g10code.com>
673
674         python: Fix distcheck.
675         + commit db476e923415f8e458720aaafde7234b802a33ab
676         * lang/python/Makefile.am (uninstall-local): Explicitly request the
677         scheme 'posix_prefix'.  On Python2.7 the default scheme is
678         'posix_local', breaking distcheck.
679
680 2017-04-10  Alon Bar-Lev  <alon.barlev@gmail.com>
681
682         python: Support alternatate libdir for tests.
683         + commit 3cc90b67fa970e716c8672ec5c5f591fa11ab216
684         * lang/python/tests/run-tests.py: Add --python-libdir optional
685         parameter.
686
687         python: Read gpg-error.h using the pre-processor.
688         + commit 7309ce6f5f7c86570953a141965d4f54cd9ad9a0
689         * lang/python/setup.py.in: Read gpg-error.h using the pre-processor.
690
691         python: Remove unneeded stats copy.
692         + commit df8433bffa9e669897243f08edf7845762250e4a
693         * lang/python/setup.py.in: errors.i, gpgme.h are generated and always
694         newer than the original.
695
696         python: Remove usage of PYTHON_VERSIONS.
697         + commit 25e6444b3f4601c7821beab06bc4520deacb007b
698         * configure.ac: Remove PYTHON_VERSIONS subst.
699         * lang/python/Makefile.am: Use basename of python as builddir prefix.
700         * lang/python/tests/run-tests.py: Likewise.
701
702         tests: Do not use check-local magic as dependency.
703         + commit ebefc6cbf937d14ced65f7ded79c4ba901507d23
704         * tests/gpg/Makefile.am: Use BUILT_SOURCES instead of check-local
705         and initial.test.
706         * lang/qt/tests/Makefile.am: Ditto.
707
708         python: support .pydistutils.cfg mode.
709         + commit 365c649ad073f2697438dc014160943ae31a1447
710         * lang/python/setup.py.in: Do not parse arguments.
711
712 2017-04-07  Alon Bar-Lev  <alon.barlev@gmail.com>
713
714         python: simplify build, some fixups.
715         + commit 49195c487e6c923f7137f092b982e7d833d98de6
716         * lang/python/gpg/version.py.in: Rename to lang/python/version.py.in.
717         configure.ac: Generate version.py.in in lang/python.
718         * lang/python/MANIFEST.in: Include version.py explicitly.
719         * lang/python/gpg: Rename to 'src'.
720         * lang/python/Makefile.am: Do not copy source files, do not use absolute
721         directories, support lib64 in uninstall, clean also dist directory, use
722         symlink for gpg src.
723         * lang/python/setup.py.in: Use builddir, copy sources into builddir,
724         copy version.py into module.
725
726 2017-04-05  Justus Winter  <justus@g10code.com>
727
728         python: Fix vpath builds, fix distcheck.
729         + commit e7d9c0c3d773f826dbd2ed417d04e25c410f3374
730         * lang/python/gpgme-h-clean.py: Delete file.
731         * lang/python/MANIFEST.in: Adapt accordingly.
732         * lang/python/Makefile.am (EXTRA_DIST): Likewise.
733         (COPY_FILES_GPG): Bring variable back.
734         (copystamp): Copy files.
735         (clean-local): Delete copied files.
736         (install-exec-local): Do not create and install list of installed
737         files.
738         (uninstall-local): Instead, create some explicit rules to uninstall
739         the extension.
740         * lang/python/setup.py.in: Parse arguments.  Locate files either in
741         the source directory, or in the build base directory.  Inline the code
742         from 'gpgme-h-clean.py'.  Copy 'helpers.c', add source directory as
743         include directory.
744
745 2017-04-05  Alon Bar-Lev  <alon.barlev@gmail.com>
746
747         python: Generate files into build directory.
748         + commit 801d7d8c5dd530d26ad6c4bcc94d986e6e022da4
749         * lang/python/setup.py.in: Generate files within BuildExtFirstHack
750         adjust build flags at this point instead of global.
751         * lang/python/Makefile.am: Remove logic of separate source directory per
752         python version in favor of build directory.
753         * lang/python/tests/run-tests.py: Adjust build directory location.
754
755 2017-04-03  Pietro Cerutti  <gahr@gahr.ch>
756
757         FreeBSD's closefrom(2) does not return errors.
758         + commit 50565982cdd502c3852fcc6f598932bd32b5cdc3
759
760
761 2017-04-03  Igor Gnatenko  <ignatenkobrain@fedoraproject.org>
762
763         qt: pass fmt to gpgrt_asprintf()
764         + commit 5d4f977dac542340c877fdd4b1304fa8f6e058e6
765         * lang/qt/src/dn.cpp (parse_dn_part): Add fmt argument instead of
766         using name directly.
767
768         GnuPG-Bug-Id: 3023
769
770 2017-03-30  Andre Heinecke  <aheinecke@intevation.de>
771
772         python: Don't treat skipped tests as error.
773         + commit f8a9ecc6290ebd73fa36647cdfca285fe4d94a62
774         * lang/python/tests/run-tests.py (failed): Don't count skipped tests
775         for the return code.
776
777 2017-03-30  Justus Winter  <justus@g10code.com>
778
779         python: Fix skipping tests if running with GnuPG < 2.1.12.
780         + commit 159505a28864399cc5405d9f85f35ab011a3259e
781         * final.py: Import 'support.py' for the side-effect of checking the
782         GnuPG version.
783         * t-data.py: Likewise.
784         * t-protocol-assuan.py: Likewise.
785         * t-wrapper.py: Likewise.
786         * t-callbacks.py: Avoid warning about 'support' being unused.
787         * t-edit.py: Likewise.
788         * t-encrypt-sym.py: Likewise.
789         * t-file-name.py: Likewise.
790         * t-idiomatic.py: Likewise.
791         * t-sig-notation.py: Likewise.
792         * t-trustlist.py: Likewise.
793         * t-verify.py: Likewise.
794         * t-wait.py: Likewise.
795         * t-keylist-from-data.py: Trim unused imports.
796
797 2017-03-30  Andre Heinecke  <aheinecke@intevation.de>
798
799         qt: Handle if gpg does not support tofu in test.
800         + commit 2c063a8d60418ee59ae80da221420c6f3fa19abb
801         * lang/qt/src/t-tofuinfo.cpp (TestTofuInfo::testSupported): Treat
802         it as unsupported if secret keylisting already fails.
803
804 2017-03-29  Alon Bar-Lev  <alon.barlev@gmail.com>
805
806         python,build: Reinstate prepare target.
807         + commit 9786e3a96e6772166f3523e74a748b9db20fae7c
808         * lang/python/Makefile.am: Fix 'prepare' target.
809         * lang/python/setup.py.in: Use 'abs_top_builddir' instead of guessing
810         the path.
811
812 2017-03-28  Justus Winter  <justus@g10code.com>
813
814         tests: Run the threading tests only on UNIX.
815         + commit 7e9f7752c992f957ccfde3b274865c633096e3bb
816         * tests/gpg/Makefile.am (tests_unix): Add 't-thread-keylist' and
817         't-thread-keylist-verify'.
818         (c_tests): Drop them here.
819
820         tests: Make error message more helpful.
821         + commit a13e4abe9463579ef23d1acea39a093abfc6528d
822         * tests/gpg/t-keylist.c (main): Print number of returned and expected
823         keys.
824
825 2017-03-28  Werner Koch  <wk@gnupg.org>
826
827         Release 1.9.0.
828         + commit aa0390ec3b910bbbc323a15ec3c3351e77785a9a
829         * configure.ac <c>: Bump LT version to C29/A18/R0.
830         <cpp>: Bump LT version to C10/A4/R0.
831         <qt>: Bump LT version to C9/A2/R0.
832
833 2017-03-28  Andre Heinecke  <aheinecke@intevation.de>
834
835         Revert "qt: Disable testEncryptDecryptNowrap"
836         + commit a2ccb3172896a90bc27c95964ef94bd7c0924802
837         This reverts commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414.
838
839 2017-03-28  Werner Koch  <wk@gnupg.org>
840
841         core: Prepare for new key listing data send by gpg.
842         + commit 813ae5fa2d712aa9679b791c67c9c1c43d36ffe4
843         * src/gpgme.h.in (gpgme_user_id_t): New fields 'origin' and
844         'last_update'.
845         (gpgme_key_t): New fields 'origin' and 'last_update'.
846         * src/conversion.c (_gpgme_parse_timestamp_ul): New.
847         * src/keylist.c (keylist_colon_handler): Parse fields 19 and 20.
848
849         * tests/run-keylist.c (main): Print new fields.
850
851 2017-03-27  Andre Heinecke  <aheinecke@intevation.de>
852
853         qt: Disable testEncryptDecryptNowrap.
854         + commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414
855         * lang/qt/tests/t-encrypt.cpp (EncryptTest::testEncryptDecryptNowrap):
856         Disable test.
857
858 2017-03-27  Justus Winter  <justus@g10code.com>
859
860         python: Skip tests if running with GnuPG < 2.1.12.
861         + commit 348da58fe0c3656e6177c98fef6b4c4331326c8e
862         * lang/python/tests/support.py (assert_gpg_version): Fix error
863         message.  Skip all tests when we use GnuPG older than 2.1.12.
864
865 2017-03-24  Andre Heinecke  <aheinecke@intevation.de>
866
867         cpp: Respect decrypt flags in new functions.
868         + commit 18b7906078cf08962c54c1e711cf2d91a24fd4e5
869         * lang/cpp/src/context.cpp: Respect directly provided flags
870         in the new decrypt functions.
871
872         qt: Add unittest for decrypt unwrap.
873         + commit 5493164f8665fabf795f3b34a7084770a38ae940
874         * lang/qt/tests/t-encrypt.cpp
875         (EncryptTest::testEncryptDecryptNowrap): New.
876
877         cpp: Use gpgme_op_decrypt_ex and add new flags.
878         + commit 8ad37ecc297f208d0a63783c1ffae33ad4c3c81a
879         * lang/cpp/src/context.cpp: New decrypt and decryptVerify functions
880         that take flags as arguments. Use new variants in old functions.
881         (Context::setDecryptionFlags): New helper.
882         (Context::Private::Private): Initialize new member.
883         * lang/cpp/src/context_p.h (Context::Private::decryptFlags): New.
884         * lang/cpp/src/context.h (Context::DecryptFlags): New enum.
885         (Context::EncryptionFlags): Extend for EncryptWrap.
886
887 2017-03-24  Werner Koch  <wk@gnupg.org>
888
889         core: New flags GPGME_DECRYPT_UNWRAP and GPGME_ENCRYPT_WRAP.
890         + commit 6ac1f2cdedb085b4ac9372c1e591497e2e618de4
891         * src/gpgme.h.in (GPGME_ENCRYPT_WRAP): New const.
892         (gpgme_decrypt_flags_t): New enum.
893         (GPGME_DECRYPT_VERIFY): New const
894         (GPGME_DECRYPT_UNWRAP): New const
895         (gpgme_op_decrypt_ext_start): New func.
896         (gpgme_op_decrypt_ext): New func.
897         * src/decrypt-verify.c (gpgme_op_decrypt_ext_start): New.
898         (gpgme_op_decrypt_ext): New.
899         (decrypt_verify_start): Add arg FLAGS.  Replace call to
900         engine_op_decrypt_verify by the plain decrypt with the flag set.
901         (gpgme_op_decrypt_verify_start): Pass the flag.
902         (gpgme_op_decrypt_verify): Pass the flag.
903         * src/decrypt.c (decrypt_start): Rename to ...
904         (_gpgme_decrypt_start): this.  Add arg FLAGS.  Pass FLAGS to
905         engine_op_decrypt.
906         (gpgme_op_decrypt_start): Adjust for chnage pass 0 for FLAG.
907         (gpgme_op_decrypt_start): Ditto.
908         * src/engine.c (_gpgme_engine_op_decrypt_verify): Remove.
909         (_gpgme_engine_op_decrypt): Add arg FLAGS.
910         * src/gpgme.def, src/libgpgme.vers: Add new functions.
911         * src/engine-backend.h (struct engine_ops): Remove member
912         'decrypt_verify'.  Add FLAGS to 'decrypt'.  Adjust all initialization.
913         * src/engine-uiserver.c (uiserver_decrypt): Remove.
914         (uiserver_decrypt_verify): Remove.
915         (_uiserver_decrypt): Rename to ...
916         (uiserver_decrypt): this.  Replace arg VERIFY by new arg FLAGS.
917         * src/engine-gpg.c (gpg_decrypt): Support GPGME_DECRYPT_UNWRAP.
918         (gpg_encrypt): Support GPGME_ENCRYPT_WRAP.
919
920         * tests/run-decrypt.c (main): New option --unwrap.
921         * tests/run-encrypt.c (main): New option --wrap.
922
923 2017-03-22  Andre Heinecke  <aheinecke@intevation.de>
924
925         qt: Add test for Data::toKeys.
926         + commit 66c334650bd64fdb72c4bd5975e25b8659d320ec
927         * lang/qt/tests/t-various.cpp (TestVarious::testKeyFromFile): New.
928
929         cpp: Wrap keylist_from_data.
930         + commit 8ddb42ada46f00d8393f6c2df7d6b79a4a5878f0
931         * lang/cpp/data.h, lang/cpp/data.cpp (GpgME::Data::toKeys): New.
932
933         qt: Initialize library first in tests.
934         + commit 121873b821636052c10d9e0bd885eb9013c52096
935         * lang/qt/tests/t-support.cpp (QGpgMETest::initTestCase): Initialize
936         library.
937
938 2017-03-22  Justus Winter  <justus@g10code.com>
939
940         python: Improve Python detection.
941         + commit 104635eb503ec764146731888a6975b4329660fd
942         * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Prefer the generic
943         'pythonX' over 'pythonX.Y'.  This way we select the users preferred
944         version for both flavors.  Prefer 'python' over 'python3' but not over
945         'python2' so that the algorithm still finds a 'python2' even if
946         'python' is a Python3.
947
948 2017-03-21  Werner Koch  <wk@gnupg.org>
949
950         core: New API gpgme_op_set_uid_flag.
951         + commit 421ddd1e6706046c5062417fd69a87e10c9fc0a9
952         * src/gpgme.h.in (gpgme_op_set_uid_flag_start): New.
953         (gpgme_op_set_uid_flag_start): New.
954         * src/gpgme.def, src/libgpgme.vers: Add them.
955         * src/genkey.c (addrevuid_start): Change arg revoke to a flag.
956         (gpgme_op_revuid_start): Pass GENKEY_EXTRAFLAG_REVOKE for the fomer
957         revoke parameter.
958         (gpgme_op_revuid): Ditto.
959         (set_uid_flag): New.
960         (gpgme_op_set_uid_flag_start): New.
961         (gpgme_op_set_uid_flag): New.
962         * src/engine.h (GENKEY_EXTRAFLAG_SETPRIMARY): new.
963         * src/engine-gpg.c (gpg_adduid): Implement that flag.
964
965         * tests/run-genkey.c (main): New command --set-primary.
966
967 2017-03-21  Justus Winter  <justus@g10code.com>
968
969         python: Wrap 'gpgme_op_keylist_from_data_start'.
970         + commit f3e8d8a4518de2768692e0b392262d0da6d0fd84
971         * NEWS: Update.
972         * lang/python/gpg/core.py (Context.keylist): New keyword argument
973         'source'.  If given, list keys from 'source'.
974         * lang/python/gpgme.i: Wrap the argument to
975         'gpgme_op_keylist_from_data_start'.
976         * lang/python/tests/Makefile.am (py_tests): Add new test.
977         * lang/python/tests/support.py (EphemeralContext): Do not throw an
978         error if no agent has been started in the context.
979         * lang/python/tests/t-keylist-from-data.py: New file.
980
981 2017-03-21  Werner Koch  <wk@gnupg.org>
982
983         core: Extend gpgme_get_dirinfo to return the gpg-wks-client name.
984         + commit 55ac5eed9f59081283d34098a9e0ada753d61d59
985         * src/dirinfo.c (WANT_GPG_WKS_CLIENT_NAME): New const.
986         (struct dirinfo): New field 'gpg_wks_client_name'.
987         (get_gpgconf_item): Build it on demand.
988         (gpgme_get_dirinfo): New value "gpg-wks-client-name" for WHAT.
989
990         core: New encryption flag GPGME_ENCRYPT_THROW_KEYIDS.
991         + commit fab8b1a166fff7265d8a7a7acbbf5f30d26cc93c
992         * src/gpgme.h.in (GPGME_ENCRYPT_THROW_KEYIDS): New flag.
993         * src/engine-gpg.c (gpg_encrypt): Implement flag
994         (gpg_encrypt_sign): Implement flag.
995
996         * tests/run-encrypt.c (main): New option --throw-keyids.
997
998 2017-03-21  Andre Heinecke  <aheinecke@intevation.de>
999             Werner Koch  <wk@gnupg.org>
1000
1001         core: New public API gpgme_op_keylist_from_data_start.
1002         + commit 35023f313622fb1b34108dd934e84831c58b81aa
1003         * src/gpgme.h.in: New API gpgme_op_keylist_from_data_start.
1004         * src/libgpgme.vers, src/gpgme.def: Add it.
1005         * src/keylist.c (gpgme_op_keylist_from_data_start): New.
1006         * src/engine-backend.h (engine_ops): Add field 'keylist_data'.  Change
1007         all engines to pass NULL for it.
1008         * src/engine.c (_gpgme_engine_op_keylist_data): New.
1009         * src/engine-gpg.c (gpg_keylist_data): New.
1010         (_gpgme_engine_ops_gpg): Register gpg_keylist_data.
1011
1012         * tests/run-keylist.c (main): New option --from-file.
1013
1014 2017-03-20  Werner Koch  <wk@gnupg.org>
1015
1016         core,cpp: New key flag 'is_de_vs'.
1017         + commit ea9686ec71a2dd2225ce2b6d6d4038821d36205f
1018         * src/gpgme.h.in (_gpgme_subkey): New flag is_de_vs.
1019         * tests/run-keylist.c (main): Print that flag.
1020         * src/keylist.c (parse_pub_field18): New.
1021         (keylist_colon_handler): Parse compliance flags.
1022         * lang/cpp/src/key.cpp (Key::isDeVs): New.
1023         (Subkey::isDeVs): New.
1024
1025         * lang/cpp/src/key.h (class Key): New method isDeVs.
1026         (class Subkey): New method isDeVs.
1027
1028 2017-03-20  Justus Winter  <justus@g10code.com>
1029
1030         tests: Fix distcheck.
1031         + commit 392e51dd1181d035c19918222da65d08fdb2ee6d
1032         * tests/start-stop-agent: Do not create 'gpg-agent.conf' if it does
1033         not exist.
1034
1035         python: Fix version check.
1036         + commit 57e64d019d993fdeb4323def5352f8ecc98c6fd9
1037         * lang/python/tests/support.py (assert_gpg_version): Cope with
1038         non-released versions.
1039
1040         tests: Use 'gpg-agent --allow-loopback-pinentry' if applicable.
1041         + commit 16b202d9999591b71fb8bb49f6db10ef96d4cbe8
1042         * lang/python/tests/Makefile.am (gpg-agent.conf): Do not hard-code the
1043         option.  This breaks gpg-agent from GnuPG 2.0.
1044         * tests/start-stop-agent: Rather, check if the option is supported and
1045         add it to the configuration if it is.
1046
1047         python: Skip tests if GnuPG is too old.
1048         + commit e1cf8bab319ba1dea41ba5d711dbb66ffd8e6fd6
1049         * lang/python/tests/support.py (assert_gpg_version): New function.
1050         * lang/python/tests/t-callbacks.py: Use the new function to skip the
1051         test if GnuPG is too old.
1052         * lang/python/tests/t-edit.py: Likewise.
1053         * lang/python/tests/t-encrypt-sym.py: Likewise.
1054         * lang/python/tests/t-quick-key-creation.py: Likewise.
1055         * lang/python/tests/t-quick-key-manipulation.py: Likewise.
1056         * lang/python/tests/t-quick-key-signing.py: Likewise.
1057
1058         python: Remove superfluous initialization.
1059         + commit 4572e8d2ac1d3b45e75ce71265c99e591fbf0e28
1060         * lang/python/tests/support.py (init_gpgme): Remove.  This is an
1061         remnant from the c tests.  Nowadays, the Python bindings initialize
1062         GPGME automagically.
1063         * lang/python/tests/initial.py: Remove call to 'support.init_gpgme'.
1064         * lang/python/tests/t-callbacks.py: Likewise.
1065         * lang/python/tests/t-decrypt-verify.py: Likewise.
1066         * lang/python/tests/t-decrypt.py: Likewise.
1067         * lang/python/tests/t-edit.py: Likewise.
1068         * lang/python/tests/t-encrypt-large.py: Likewise.
1069         * lang/python/tests/t-encrypt-sign.py: Likewise.
1070         * lang/python/tests/t-encrypt-sym.py: Likewise.
1071         * lang/python/tests/t-encrypt.py: Likewise.
1072         * lang/python/tests/t-export.py: Likewise.
1073         * lang/python/tests/t-file-name.py: Likewise.
1074         * lang/python/tests/t-idiomatic.py: Likewise.
1075         * lang/python/tests/t-import.py: Likewise.
1076         * lang/python/tests/t-keylist.py: Likewise.
1077         * lang/python/tests/t-sig-notation.py: Likewise.
1078         * lang/python/tests/t-sign.py: Likewise.
1079         * lang/python/tests/t-signers.py: Likewise.
1080         * lang/python/tests/t-trustlist.py: Likewise.
1081         * lang/python/tests/t-verify.py: Likewise.
1082         * lang/python/tests/t-wait.py: Likewise.
1083
1084 2017-03-14  Justus Winter  <justus@g10code.com>
1085
1086         python: Make error message more helpful.
1087         + commit 9d6825be092f1590f28b5bab462eeb944d9b800c
1088         * lang/python/tests/run-tests.py: Make the error message shown when we
1089         cannot locate the python module in the build tree more helpful.
1090
1091         python: Make tests more robust.
1092         + commit ac4849953860547b06a167ca9612c4de369d02b6
1093         * lang/python/tests/support.py (TemporaryDirectory): Always use our
1094         own version even if 'tempfile.TemporaryDirectory' is provided, because
1095         we need to use 'shutil.rmtree(..., ignore_errors=True)' to avoid it
1096         tripping over gpg-agent deleting its own sockets.
1097
1098         python: Improve build system integration.
1099         + commit a4201035fdc050f337a6b9f520c8ddbb569e2eb4
1100         * lang/python/Makefile.am: Use 'set -e' when chaining shell commands
1101         together in rules.
1102
1103         build: Improve Python detection.
1104         + commit 6a371663886a7ba6073f385a3ab5f5a03de8e008
1105         * configure.ac: Do not error out too early if we don't find a matching
1106         Python version.  We handle this case later.
1107
1108         build: Tune M4 macros for our needs.
1109         + commit 5189c08af9468cdeb6f16a6ecd0fee53e1e3aa0e
1110         * m4/ax_python_devel.m4: Do not emit 'HAVE_PYTHON'.
1111         * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add newer Python
1112         versions, drop older ones.  Also, sort the list with older versions at
1113         the front, newer and generic versions towards the end.  This makes the
1114         algorithm pick the lowest version that meets the version requirement.
1115
1116         build: Add M4 macros for python.
1117         + commit 067da472f919e78c95a0a01b68e79a8b7dff173b
1118         * m4/python.m4: New file.
1119
1120 2017-03-13  Andre Heinecke  <aheinecke@intevation.de>
1121
1122         qt: Add test for DN parser.
1123         + commit 43aa3eed15dcc4f848915ceabeff35c29c1c57e4
1124         * qt/tests/t-various.cpp (testDN): New.
1125
1126         qt: Use gpgrt_asprintf instead of qstrdup.
1127         + commit 9d5048d47446450a34cae4f27eb81c02ea5d4afc
1128         * lang/qt/src/dn.cpp (parse_dn_part): Use gpgrt_asprintf instead
1129         of qstrdup.
1130
1131 2017-03-09  Werner Koch  <wk@gnupg.org>
1132
1133         core: Fix status error return for gpgsm.
1134         + commit d2240a2a1819874929bdab820bcbd3bee7f94407
1135         * src/engine-gpgsm.c (gpgsm_assuan_simple_command): Make sure CB_ERR
1136         is returned.
1137         * src/import.c (parse_import_res): Do not return an error for the last
1138         field.
1139         (import_status_handler): Actually return the error from
1140         parse_import_res.
1141
1142 2017-03-02  Justus Winter  <justus@g10code.com>
1143
1144         python: Print path of the Python module used during tests.
1145         + commit 41398779abbcb1ec2d7491e141469a752fc706ff
1146         * lang/python/tests/initial.py: Print path of the Python module used
1147         during tests.  Useful to detect if by any mistake the wrong module is
1148         picked up.
1149
1150 2017-03-02  Werner Koch  <wk@gnupg.org>
1151
1152         core: Fix minor code style thing.
1153         + commit ef035f079fb067f207e5477d5ed6c5a68fb41f59
1154         * src/engine-gpg.c (gpg_add_algo_usage_expire): Use double parenthesis
1155         for bit tests.
1156
1157 2017-03-02  Andre Heinecke  <aheinecke@intevation.de>
1158
1159         cpp: Add subkey keygrip to API.
1160         + commit 8071a6b2ca33c2a46ed1d50ae7283241daaafcd3
1161         * lang/cpp/src/key.cpp (Subkey::keyGrip): New.
1162         * lang/cpp/src/key.h: Update accordingly.
1163
1164 2017-03-01  Andre Heinecke  <aheinecke@intevation.de>
1165
1166         cpp: Add interactor to generate keys on smartcard.
1167         + commit d63258066d008de113ed1170f1b0e787a5bdaba1
1168         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
1169         Handle new states.
1170         * lang/cpp/src/gpggencardkeyinteractor.cpp,
1171         lang/cpp/src/gpggencardkeyinteractor.h: New.
1172         * lang/cpp/src/Makefile.am: Update accordingly.
1173
1174         qt: Allow creation of default keys without name.
1175         + commit fbafb5474d8898ba1b267f4b4dfbefe39f04e72f
1176         * lang/qt/src/defaultkeygenerationjob.cpp
1177         (DefaultKeyGenerationJob::start): Handle empty name and email.
1178
1179 2017-02-26  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1180
1181         doc: Correct documentation for recp arg of gpgme_op_encrypt_sign_start.
1182         + commit 5b49095b89b07591c69827df3973ffabfb3e97b8
1183         * doc/gpgme.texi (gpgme_op_encrypt_sign_start): recp is an array of
1184         gpgme_key_t, not a single element.
1185
1186 2017-02-20  Justus Winter  <justus@g10code.com>
1187
1188         python: Fix test.
1189         + commit a7c6353edab57b67180aa127ec77d9353c2366fb
1190         * lang/python/tests/t-quick-key-manipulation.py: Modify the
1191         configuration file in the ephemeral home directory, not the one used
1192         by all the tests.
1193
1194 2017-02-17  Justus Winter  <justus@g10code.com>
1195
1196         python: Support manipulating the TOFU policy.
1197         + commit 15fbac9e72a4d1bff9a3b9e9822f9175b09fbcd5
1198         * NEWS: Update.
1199         * doc/gpgme.texi: Fix typos.
1200         * lang/python/gpg/constants/__init__.py: Import new files.
1201         * lang/python/gpg/constants/tofu/__init__.py: New file.
1202         * lang/python/gpg/constants/tofu/policy.py: New file.
1203         * lang/python/gpg/core.py (Context.key_tofu_policy): New function.
1204         * lang/python/gpgme.i: Nice reprs for gpgme_tofu_info_t.
1205         * lang/python/setup.py.in: Install new package.
1206         * lang/python/tests/t-quick-key-manipulation.py: Extend test.
1207
1208         python: Support quick key signing.
1209         + commit 48634e651fcd02431c0518d42ada1f3b402feb2c
1210         * NEWS: Update.
1211         * doc/gpgme.texi (gpgme_op_keysign): Fix the description of the
1212         'expire' argument.
1213         * lang/python/gpg/constants/__init__.py: Import new file.
1214         * lang/python/gpg/constants/keysign.py: New file.
1215         * lang/python/gpg/core.py (Context.key_sign): New function.
1216         * lang/python/tests/Makefile.am (py_tests): Add new test.
1217         * lang/python/tests/t-quick-key-signing.py: New test.
1218
1219         python: Fix teardown of ephemeral contexts.
1220         + commit de8494b16bc50c60a8438f2cae1f8c88e8949f7a
1221         * lang/python/tests/support.py (EphemeralContext): New function.
1222         * lang/python/tests/t-quick-key-creation.py: Use the new function to
1223         manage ephemeral contexts.
1224         * lang/python/tests/t-quick-key-manipulation.py: Likewise.
1225         * lang/python/tests/t-quick-subkey-creation.py: Likewise.
1226
1227         python: Fix using strings as commands in the assuan protocol.
1228         + commit 9350168a1eed3f055040d7cc8a9bf4cdf745b23a
1229         * lang/python/gpg/core.py (Context.assuan_transact): Fix testing
1230         whether the command is a string on Python2.
1231         * lang/python/tests/t-protocol-assuan.py: Improve the test to detect
1232         this problem.
1233
1234 2017-02-16  Justus Winter  <justus@g10code.com>
1235
1236         python: Support adding and revoking UIDs.
1237         + commit 7641b7b5f2c9d5b38c60cd9326bcb4810c37dae5
1238         * NEWS: Update.
1239         * lang/python/gpg/core.py (Context.key_add_uid): New function.
1240         (Context.key_revoke_uid): Likewise.
1241         * lang/python/tests/Makefile.am (XTESTS): Add new test.
1242         * lang/python/tests/t-quick-key-manipulation.py: New file.
1243
1244         python: Support quick subkey creation.
1245         + commit 13bace25e3d8422f93fd24919994be36042fd220
1246         * NEWS: Update.
1247         * lang/python/gpg/core.py (Context.create_subkey): New function.
1248         * lang/python/tests/Makefile.am (XTESTS): Add new test.
1249         * lang/python/tests/t-quick-subkey-creation.py: New file.
1250
1251         python: Support quick key creation.
1252         + commit 476b97822b169c30cc246c1de2ff94cf89084706
1253         * NEWS: Update.
1254         * lang/python/gpg/constants/__init__.py: Import new file.
1255         * lang/python/gpg/constants/create.py: New file.
1256         * lang/python/gpg/core.py (Context.create_key): New function.
1257         * lang/python/tests/Makefile.am (XTESTS): Add new test.
1258         * lang/python/tests/support.py (TemporaryDirectory): New class.
1259         * lang/python/tests/t-quick-key-creation.py: New file.
1260
1261         python: Fix passphrase callback wrapping.
1262         + commit 3bdce4aa3ddd4a3f55b24678faf978d61daa8909
1263         * lang/python/helpers.c (pyPassphraseCb): Cope with 'passphrase_info'
1264         being NULL.
1265
1266         python: Fix error handling.
1267         + commit 048c5f74b61d5e4fa7617ce7c9111c6754bd4409
1268         * lang/python/gpgme.i (typemap gpgme_key_t[]): Set an error if a
1269         non-key element is discovered.
1270
1271 2017-02-15  Justus Winter  <justus@g10code.com>
1272
1273         core: Fix expiration time handling when creating keys.
1274         + commit de708e5934cda380dbc3ae51f587c09041de7562
1275         * NEWS: Update.
1276         * doc/gpgme.texi (gpgme_op_createkey): Clarify the meaning of the
1277         'expire' parameter.
1278         (GPGME_CREATE_NOEXPIRE): Document new flag.
1279         (gpgme_op_createsubkey): Clarify the meaning of the 'expire'
1280         parameter.
1281         * src/engine-gpg.c (gpg_add_algo_usage_expire): Fix handling of the
1282         expiration time.
1283         * src/gpgme.h.in (GPGME_CREATE_NOEXPIRE): New macro.
1284
1285         python: Fix build system integration.
1286         + commit 27544d0a74267ab6057dc816ea3311bc9149a200
1287         * lang/python/Makefile.am (copystamp): Also copy the setup script, and
1288         link the header files.
1289         (all-local): Use local setup script.
1290         (sdist): Fix Python source distribution creation.
1291         (CLEANFILES): Remove now obsolete files.
1292         (install-exec-local): Use local setup script.
1293         * lang/python/setup.py.in: Adjust relative paths to in-tree files.
1294
1295         python: Update lists of functions returning gpgme_error_t.
1296         + commit 25f0435a0022a70af77660d72d33f17bec2d4e51
1297         * lang/python/gpg/core.py (Context._errorcheck): Add instructions how
1298         to update the list.  Update list.
1299         (Data._errorcheck): Likewise.
1300         (Context.set_engine_info): Simplify.
1301
1302         core: Fix error types.
1303         + commit 6df6e01ed5a581765d245bf7303cda4497d0eb22
1304         * NEWS: Update.
1305         * src/data.c (gpgme_data_set_flag): Return a 'gpgme_error_t'.
1306         * src/error.c (gpgme_strerror_r): Fix type of first argument.
1307         * src/gpgme.h.in (gpgme_strerror_r): Adapt.
1308         (gpgme_data_set_flag): Likewise.
1309
1310 2017-02-14  Justus Winter  <justus@g10code.com>
1311
1312         python: Wrap utility functions.
1313         + commit 92adc9bbf640eb5d9177d3ba0189e0f6cee4e995
1314         * NEWS: Update.
1315         * lang/python/gpg/core.py (pubkey_algo_string): New function.
1316         (pubkey_algo_name): Add docstring.
1317         (hash_algo_name): Likewise.
1318         (get_protocol_name): Likewise.
1319         (addrspec_from_uid): New function.
1320         * lang/python/gpgme.i (gpgme_pubkey_algo_string): Result must be
1321         freed.
1322         (gpgme_addrspec_from_uid): Likewise.
1323
1324         python: Use the correct function to free buffers.
1325         + commit 9fc9533c2835ec53c4fd4f822b09e9fec14626d0
1326         * lang/python/gpgme.i (char *): Free using 'gpgme_free'.
1327
1328         python: Add keylist mode parameter.
1329         + commit fdc4e33dc3f6c84fe9d7bf9795c603ae3cf5f28d
1330         * NEWS: Update.
1331         * lang/python/gpg/core.py (Context.keylist): Add 'mode' parameter.
1332
1333         python: Nicer repr for user ids.
1334         + commit e17ab84129045512cf60c221ee43aa877507662f
1335         * lang/python/gpgme.i (_gpgme_user_id): Provide a nicer repr() for
1336         user ids.
1337
1338         python: Add convenience functions for the home directory.
1339         + commit 99b7f4f34dd595579181a696ae976a678fe00d49
1340         * NEWS: Update.
1341         * lang/python/gpg/core.py (Context.__init__): Add 'home_dir' argument.
1342         (__repr__): Include 'home_dir'.
1343         (Context.home_dir): New property.
1344
1345         qt: Make sure to remove the tofu.db on clean.
1346         + commit 30a603580e0f196c721fa4bd44d24077d9bc06c3
1347         * lang/qt/tests/Makefile.am (CLEANFILES): Add 'tofu.db'.
1348
1349 2017-02-14  Tobias Mueller  <muelli@cryptobitch.de>
1350
1351         python: Extend SWIG gpgme_{sub,}key with a __repr__ method.
1352         + commit 01d5c17587578c729bbbb60f8a65635975e35592
1353         * lang/python/gpgme.i: Added a genericrepr macro and use it for
1354         gpgme_key, gpgme_subkey, and gpgme_key_sig.
1355
1356         python: Remove the -builtin flag for SWIG.
1357         + commit aa49be1ab80c200ab6b62d33bf5d0f5aa334fc56
1358         * lang/python/setup.py.in: Call SWIG without the builtin flag.
1359
1360         python: Call SWIG_NewPointerObj rather than SWIG_Python_NewPointerObj.
1361         + commit d35651917097ae2eee7d52396d53d010bc34df19
1362         * lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Provide a "self"
1363         variable for SWIG_NewPointerObj and call SWIG_NewPointerObj rather than
1364         SWIG_Python_NewPointerObj.
1365
1366         python: Conditionally provide py3 argument to SWIG.
1367         + commit d184dbbba8987d9f387feb25791ed891e108dabc
1368         * lang/python/setup.py.in: Only call with -py3 when we run under python3
1369         or higher.
1370
1371 2017-02-13  Justus Winter  <justus@g10code.com>
1372
1373         python: Use one copy of the source tree per Python version.
1374         + commit fe65a26ab584bd70fad45c7c4d44330e30a748a4
1375         * lang/python/Makefile.am (copystamp): Create one copy per Python
1376         version.
1377         (all-local): Adapt.
1378         (clean-local): Likewise.
1379         (install-exec-local): Likewise.
1380         * lang/python/tests/run-tests.py: Likewise.
1381
1382         build: Use macOS' compatibility macros to enable all features.
1383         + commit 60273e8b2c11d42215a5707bc55e3e0d8f350e07
1384         * configure.ac: On macOS, use the compatibility macros to expose every
1385         feature of the libc.  This is the equivalent of _GNU_SOURCE on GNU
1386         libc.
1387
1388         Revert "Disable fd-passing for Apple."
1389         + commit f8db658f8b4c3c7941d0029273fb23fbe1ba74ad
1390         The actual bug has been located, so this can be reverted.
1391
1392         This reverts commit ef5b4ae37d13142e89a051908dc080cda3d24baa.
1393
1394 2017-02-13  Igor Gnatenko  <ignatenkobrain@fedoraproject.org>
1395
1396         qt: Add missing #include <functional>
1397         + commit 60064c665ec98a2a994fc6c8ad701e60b963ce7e
1398         * lang/qt/src/qgpgmenewcryptoconfig.cpp,
1399         lang/qt/src/threadedjobmixin.h: Include functional.
1400
1401 2017-02-07  Andre Heinecke  <aheinecke@intevation.de>
1402
1403         qt: Don't rely on implicit include in t-verify.
1404         + commit 903bf16a416b1bf608b1e647937c9b06864b0141
1405         * lang/qt/tests/t-various.cpp: Include QTemporaryDir
1406
1407 2017-02-06  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1408
1409         doc: Document that gpgme_op_genkey() parms parameter is not XML.
1410         + commit ad22bee5387b1e9a40e8c822a081db3228bb9def
1411         * doc/gpgme.texi (GnupgKeyParms): document that input format is not
1412         true XML.
1413
1414 2017-02-03  Werner Koch  <wk@gnupg.org>
1415
1416         core: Optimize fork/exec for *BSD and Solaris.
1417         + commit 51bd69f216a9e2930eeba4b5f6c20e952a381720
1418         * configure.ac (closefrom): Add to ac_check_funcs.
1419         * src/posix-io.c (_gpgme_io_spawn): Use closefrom.
1420
1421         core: Fix possible deadlock due to get_max_fds.
1422         + commit 93a59070c699d569d1eac7ba22355fe3f5d10882
1423         * src/posix-io.c (get_max_fds): Do not use the Linux optimization.
1424
1425         core: Minor cleanup of commit 195c735.
1426         + commit afc308598d1ddaf20d54b4eab30b959066a4e5e6
1427         * src/verify.c (parse_tofu_user): For cleanness use gpg_error ...
1428         (_gpgme_verify_status_handler): ... and gpg_err_code.
1429
1430 2017-02-02  Andre Heinecke  <aheinecke@intevation.de>
1431
1432         qt: Add test for tofu conflict.
1433         + commit 43160a39f27f6c3507447620666c85af00b3499c
1434         * lang/qt/tests/t-tofuinfo.cpp (TofuInfoTest::testTofuConflict): New.
1435
1436         core: Handle multiple TOFU_USER lines in verify.
1437         + commit 195c73589232160f45d00f4901c9bb2b0162f0e5
1438         * src/verify.c (op_data_t): Add conflict_user_seen.
1439         (parse_tofu_user): Return ERR_DUP_VALUE for mutltiple TOFU_USERS.
1440         (_gpgme_verify_status_handler): Handle ERR_DUP_VALUE from
1441         parse_tofu_user to ignore the next TOFU_STATS.
1442
1443 2017-02-02  Werner Koch  <wk@gnupg.org>
1444
1445         core: Replace all calls to *sprintf by gpgrt_*sprintf.
1446         + commit 15050ce5fce4ed815503db7c029abb38d08970d6
1447         * configure.ac (vasprintf): Remove check.
1448         * src/vasprintf.c: Remove file.
1449         * src/util.h (vasprintf, asprintf): Remove prototypes.  Replace all
1450         calls to vasprintf and asprintf by gpgrt_vasprintf or gpgrt_asprintf.
1451         Also take care to use gpgrt_free on the returned value.
1452         * src/w32-util.c (_gpgme_get_gpgconf_path): Replace a gpgrt_asprintf
1453         by _gpgme_strconcat.
1454         (snprintf): New macro to use gpgrt_snprintf instead of the system's
1455         standard snprintf.
1456
1457         core: Remove unused check for funopen/fopencookie.
1458         + commit 563420a88f8a4f561a2faea4d2b4a1c58b375fd8
1459         * configure.ac (funopen): Remove check.
1460         * src/funopen.c: Remove file.
1461
1462         core: Un-deprecate gpgme_data_rewind.
1463         + commit d19bea52afe6efb66a46af6aa4d09928c5d05ee5
1464         * src/gpgme.h.in (gpgme_data_rewind): Un-deprecate.
1465         * src/data-compat.c (gpgme_data_rewind): Move to ...
1466         * src/data.c (gpgme_data_rewind): here.
1467
1468         core: Move all deprecated stuff to the end of gpgme.h.
1469         + commit 9b7d81998b734fabeb4fbc697f08fc7795eaa90a
1470
1471
1472 2017-02-01  Andre Heinecke  <aheinecke@intevation.de>
1473
1474         core: Cleanup gpgme_key_unref frees.
1475         + commit 8ede86795a1d419c01b4910ec2fd1fb18b629452
1476         * src/key.c (gpgme_key_unref): Nowadays we assume free(NULL) is ok.
1477
1478         core: Fix leakage of address for mail only uids.
1479         + commit b5075030bec9b21bf4e515bc1686df3fa43eced2
1480         * src/key.c (gpgme_key_unref): Always free address if set.
1481         (_gpgme_key_append_name): Remove memory optimization for address.
1482
1483         core: Improve mailbox only uid handling.
1484         + commit a28d31fdb623f2ee30e8094d09f1a0d1ae446a9b
1485         * src/key.c (_gpgme_key_append_name): Set email and remove name
1486         for uid only keys.
1487
1488 2017-01-31  Justus Winter  <justus@g10code.com>
1489
1490         qt: Increase timeout when waiting for signals.
1491         + commit ba594d85e35e63301755977234d3af88a167a215
1492         * lang/qt/tests/t-support.h (QSIGNALSPY_TIMEOUT): New macro.
1493         * lang/qt/tests/t-encrypt.cpp: Use the new macro as timeout when
1494         waiting for signals.
1495         * lang/qt/tests/t-keylist.cpp: Likewise.
1496         * lang/qt/tests/t-keylocate.cpp: Likewise.
1497         * lang/qt/tests/t-ownertrust.cpp: Likewise.
1498         * lang/qt/tests/t-wkspublish.cpp: Likewise.
1499
1500 2017-01-31  Werner Koch  <wk@gnupg.org>
1501
1502         core: Add new context flag "redraw".
1503         + commit 752d3597ef02a95efd693373132bf1e246f0edb0
1504         * src/context.h (struct gpgme_context): New field 'redraw_suggested'.
1505         * src/op-support.c (_gpgme_op_reset): Clear REDRAW_SUGGESTED.
1506         * src/progress.c (_gpgme_progress_status_handler): Set REDRAW_SUGGESTED.
1507         * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "redraw".
1508         * tests/run-sign.c (main): Use it.
1509
1510 2017-01-30  Andre Heinecke  <aheinecke@intevation.de>
1511
1512         tests: Reduce iterations / threads.
1513         + commit 7bd6ab4a91d43d7cbf5d347c0c12e0e4f9f7e3bf
1514         * tests/gpg/t-gpgconf.c (main): Reduce iterations to 10.
1515         * tests/gpg/t-thread-keylist-verify.c,
1516         tests/gpg/t-thread-keylist.c (THREAD_COUNT): Reduce to 10.
1517
1518 2017-01-26  Andre Heinecke  <aheinecke@intevation.de>
1519
1520         python: Ensure quick-random is used if gpg is gpg2.
1521         + commit f3ca2c9ce9fd4a03e293065f10b92589a7e642d6
1522         * lang/python/tests/Makefile.am (gpg.conf): Configure
1523         agent-program accordingly.
1524
1525 2017-01-25  Tobias Mueller  <muelli@cryptobitch.de>
1526
1527         python: default op_keylist_start parameters.
1528         + commit 9291ebaa4151a1f6c8c0601095ec45809b963383
1529         * lang/python/gpgme.i: Added gpgme_op_keylist_start with defaults
1530         * lang/python/tests/t-keylist.py: Added tests for default parameters
1531
1532 2017-01-25  Andre Heinecke  <aheinecke@intevation.de>
1533
1534         tests: Use --debug-quick-random for tests.
1535         + commit a98951a30a6ae603ffac4ec8c5168aa6d1019933
1536         * tests/start-stop-agent: Don't autostart agent on --stop and
1537         running check. Use --debug-quick-random when starting.
1538
1539 2017-01-23  Justus Winter  <justus@g10code.com>
1540
1541         w32: Fix closing file descriptors.
1542         + commit 6f02133bb07726afa6950e5b4685e75621276e60
1543         * src/w32-io.c (writer): Only stop once the buffer is drained.
1544         (destroy_writer): Wait for the writers buffer to be drained.  This
1545         aligns '_gpgme_io_close's behavior with close(2) and fclose(3).
1546
1547 2017-01-17  Andre Heinecke  <aheinecke@intevation.de>
1548
1549         tests: Add safeguards against nullptr deref.
1550         + commit ca69df8c8d3f044340aee2a118cc20d33cd600a1
1551         * t-gpgconf.c (main): Test some values before dereferencing them.
1552
1553 2017-01-16  Andre Heinecke  <aheinecke@intevation.de>
1554
1555         qt: Use QVERIFY instead of Q_ASSERT in conf test.
1556         + commit abfd241d1a1ae8e30e18b7c5e0658b8c54d89544
1557         * lang/qt/tests/t-config.cpp: Use QVERIFY instead of Q_ASSERT.
1558
1559         qt: Add test for CryptoConfig.
1560         + commit 8aba08d1d0871f439fb7193adc4a2f43a81ee216
1561         * lang/qt/tests/t-config.cpp: New.
1562         * lang/qt/tests/Makefile.am: Update accordingly.
1563
1564 2017-01-16  Justus Winter  <justus@g10code.com>
1565
1566         tests: Fix distcheck.
1567         + commit 92543da94cbf8e807b1b33070d273f995cdd5c62
1568         * tests/gpg/Makefile.am (CLEANFILES): Remove gpgconf backups.
1569
1570         Fix changing options with gpgconf.
1571         + commit 0e242278dfaa64ce31a45b72f5fa0806a3dba898
1572         * src/engine-gpgconf.c (gpgconf_write): Connect a pipe to the child's
1573         stderr, and wait for it to be closed as an indication that gpgconf has
1574         exited.  Also improve error handling.
1575
1576 2017-01-12  Justus Winter  <justus@g10code.com>
1577
1578         tests: Improve the gpgconf test.
1579         + commit 186dcd3494eda7383de57a530fd15776410531a5
1580         * tests/gpg/t-gpgconf.c: Include support functions.
1581         (fail_if_err): Remove macro.
1582         (init_gpgme): Remove function.
1583         (lookup): New function.
1584         (main): Update some values and verify that the changes are applied.
1585         * tests/gpg/t-support.h (test): New assert-like macro.
1586
1587 2017-01-12  Andre Heinecke  <aheinecke@intevation.de>
1588
1589         qt: Add support for stringValueList in CryptoConf.
1590         + commit 9640dc58e498966b482dcded6990cf4b47c556ac
1591         * lang/qt/src/Makefile.am (qgpgme_sources): Add cryptoconfig.cpp
1592         * lang/qt/src/cryptoconfig.cpp: New.
1593         * lang/qt/src/cryptoconfig.h (CryptoConfigEntry::stringValueList):
1594         New.
1595         * lang/qt/src/qgpgmenewcryptoconfig.cpp
1596         (QGpgMENewCryptoConfigEntry::stringValueList): New.
1597         * lang/qt/src/qgpgmenewcryptoconfig.h: Update accordingly.
1598
1599         qt: Don't use qstrdup in test passphrase cb.
1600         + commit a09ed3f26a1fab54079c37c49df5c440cc792f78
1601         * lang/qt/tests/t-support.h (TestPassphraseProvider::getPassphrase):
1602         Use gpgrt_asprintf instead of strdup.
1603
1604 2017-01-11  Andre Heinecke  <aheinecke@intevation.de>
1605
1606         qt: Clean up test dirs on failure.
1607         + commit 56926c9b5012e8135541a933af1d69c5a81f02b3
1608         * t-encrypt.cpp,
1609         t-keylist.cpp,
1610         t-keylocate.cpp,
1611         t-ownertrust.cpp,
1612         t-tofuinfo.cpp,
1613         t-various.cpp,
1614         t-verify.cpp,
1615         t-wkspublish.cpp: Use QVERIFY instead of Q_ASSERT
1616
1617         qt: Add test for uid functions.
1618         + commit 9e643ab67168dfbd189ccc0bfed8fb59253ee79c
1619         * lang/qt/tests/t-various.cpp: New.
1620         * lang/qt/tests/Makefile.am: Update accordingly.
1621
1622         cpp: Add revuid and adduid support.
1623         + commit e416f9961837039f259558edf41fccbc181ad128
1624         * lang/cpp/src/context.cpp
1625         (Context::revUid, Context::startRevUid),
1626         (Context::addUid, Context::startAddUid): New.
1627         * lang/cpp/src/context.h: Declare new functions.
1628         * lang/cpp/src/key.cpp (Key::UserID::revoke)
1629         (Key::addUid): Idomatic helpers.
1630         lang/cpp/src/key.h: Declare new functions.
1631         * NEWS: Update accordingly.
1632
1633         Fix Qgpgme build for macos.
1634         + commit efe58fe011f195d98adb4f03b1e1068a26ba287b
1635         * lang/qt/src/dn.cpp: Include string.h
1636         (parse_dn_part): Use qstrdup.
1637         * lang/qt/tests/t-support.h (getPassphrase): Use qstrdup.
1638
1639         Fix cmake configuration files for MacOS.
1640         + commit 2e661b9e1a9b50656a5c9646d7444a98477010c1
1641         * configure.ac: Set HAVE_MACOS_SYSTEM conditional.
1642         * lang/qt/src/Makefile.am,
1643         lang/cpp/src/Makefile.am,
1644         lang/qt/src/QGpgmeConfig.cmake.in.in,
1645         lang/cpp/src/GpgmeConfig.cmake.in.in: Use libsuffix again to
1646         distinguish between macos .dylib
1647
1648 2017-01-03  Justus Winter  <justus@g10code.com>
1649
1650         python: Improve compatibility with Scheme tests.
1651         + commit b14419f68b3aaa90025e0e97151de7c3da7806fb
1652         * lang/python/tests/run-tests.py: Add stub --parallel option.
1653
1654         python: Add a switch '--quiet' to the test runner.
1655         + commit d0e91d28f63b74e53673902e675be8a54b6b90d3
1656         * lang/python/tests/run-tests.py: Add and honor a switch '--quiet'.
1657         This way we can use this script to run Python tests one by one without
1658         the noise, and the script will setup the necessary environment for us.
1659
1660 2017-01-02  Andre Heinecke  <aheinecke@intevation.de>
1661
1662         qt: Update config sync doc / comment.
1663         + commit ececfd5de81f1851943be7b284b672d5b02aceb4
1664         * lang/qt/src/cryptoconfig.h (CryptoConfig::sync): Document
1665         that runtime option is always set.
1666         * lang/qt/Src/qgpgmenewcryptoconfig.cpp
1667         (QGpgMENewCryptoConfigComponent::sync): Remove outdated comment
1668         and warn on error.
1669
1670         core: Always use runtime for gpgconf changes.
1671         + commit 7103315829847163f1c6f52cad25d1ddb33358f0
1672         * src/engine-gpgconf.c (gpgconf_write): Add --runtime.
1673         * src/gpgme.h.in (gpgme_conf_opt_change): Document this
1674         behavior.
1675
1676 2017-01-01  Ben Kibbey  <bjk@luxsci.net>
1677
1678         Fix gpg_addkey() to work with GPGME_CREATE_NOPASSWD as well.
1679         + commit a4b9f1a2b404fd8627d5ac567617510abd55d980
1680         * src/engine-gpg.c (gpg_addkey): Pass --batch to gpg when
1681         GPGME_CREATE_NOPASSWD is set to fix pinentry without loopback mode.
1682
1683 2016-12-27  Ben Kibbey  <bjk@luxsci.net>
1684
1685         Fix GPGME_CREATE_NOPASSWD without pinentry loopback.
1686         + commit d83b8f0dc84d6cf7fe2e091bd1b103ceedfa3d6c
1687         * src/engine-gpg.c(gpg_createkey): Pass --batch to gpg when
1688         GPGME_CREATE_NOPASSWD is set.
1689
1690 2016-12-19  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
1691
1692         Qt: Make sure extended grep is used with '|'.
1693         + commit 211844f049d714cd4d5aab96347705cb0c209c5d
1694         * m4/qt.m4: Use grep -E when using the alternation character.
1695
1696 2016-12-16  Andre Heinecke  <aheinecke@intevation.de>
1697
1698         cpp: Ensure that hasSecret is correct after update.
1699         + commit da5343a9d2c8c0ca6431162aac4bd5c73b4ae6dd
1700         * lang/cpp/src/key.cpp (Key::update): Check for
1701         a secret key first before listing public keys.
1702
1703 2016-12-15  Andre Heinecke  <aheinecke@intevation.de>
1704
1705         cpp: Fix addrSpec for keys without email.
1706         + commit 85e05537e15346896a271d3f62bead9dd7e3f180
1707         * lang/cpp/src/key.cpp (UserID::addrSpec): Use uid->address instead
1708         of normalizing again.
1709         (&operator<<(std::ostream &, const UserID &): Print it.
1710
1711         cpp: Fix update of partial key in verifyresult.
1712         + commit 5673f3e54af535155893290a685b3afb44c7f58d
1713         * lang/cpp/src/verificationresult.cpp
1714         (Signature::key(bool,bool)): Don't update the returned copy
1715         but the actual key of the signature.
1716
1717 2016-12-07  Andre Heinecke  <aheinecke@intevation.de>
1718
1719         Clarify what "checking on bit" means.
1720         + commit 7880335273382f05cbbe38aa965a566c4127ba6a
1721         * doc/gpgme.texi (gpgme_sigsum_t summary): Clarify what "you
1722         can check one bit means"
1723
1724 2016-12-05  Tobias Mueller  <muelli@cryptobitch.de>
1725
1726         python: Try to be more helpful when given a string to encrypt().
1727         + commit 05896c210f7fa9ce7b97784a75e49dc4489e9252
1728         * lang/python/helpers.c (_gpg_obj2gpgme_data_t): Extended error
1729         message.
1730         * lang/python/tests/t-encrypt.py: Test for "encode" in error message.
1731
1732         python: Define a macro for wrapping fragile result objects.
1733         + commit fb7f4cb973abc9f5eb05eb240607be35c1be986c
1734         * lang/python/gpgme.i (wrapresult): New Macro.
1735
1736 2016-12-01  Tobias Mueller  <muelli@cryptobitch.de>
1737
1738         python: Check "buffer" when writing to sys.stdout for python2 compat.
1739         + commit ae21d2705fc46725e1f9af1651b68d16155d1501
1740         * lang/python/tests/support.py (print_data): Add check for buffer.
1741
1742         python: Make Context have a repr method.
1743         + commit 154389f2a5e4c13081cf0624222aad29ee480b56
1744         * lang/python/gpg/core.py (Context.__repr__): New function.
1745
1746         python: Make Results have a nicer __repr__.
1747         + commit db2f6c1ca3d2ef228f4ca6653d594537622c8588
1748         * lang/python/gpg/results.py (Result.__str__): Renamed to '__repr__'
1749         ...
1750         * lang/python/gpg/results.py (Result.__repr__): ... and added fields.
1751
1752 2016-11-25  Justus Winter  <justus@g10code.com>
1753
1754         python: Fix removing the TOFU database.
1755         + commit fd4d476214ae06e33f4a6dac534d3deca5cc6cd3
1756         * lang/python/Makefile.am (CLEANFILES): Move 'tofu.db'...
1757         * lang/python/tests/Makefile.am (CLEANFILES): ... here.
1758
1759         tests: Remove tofu.db.
1760         + commit 9b22f82afc5518961e4bea1fc516b79800e379a2
1761         * lang/python/Makefile.am (CLEANFILES): Add 'tofu.db'.
1762         * tests/gpg/Makefile.am (CLEANFILES): Likewise.
1763
1764 2016-11-17  Heiko Becker  <heirecka@exherbo.org>
1765
1766         Remove a forgotten instance of @libsuffix@
1767         + commit 572c1aac107125ce62230251713349348373db5a
1768         * lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove a forgotten
1769         instance of @libsuffix@.
1770
1771 2016-11-16  Werner Koch  <wk@gnupg.org>
1772
1773         Release 1.8.0.
1774         + commit f06220b691e9711afdabaa19886244ae7724eed5
1775         * configure.ac: Set version to 1.8.0.  Set LT version C28/A17/RO.
1776         Set CPP LT version to C9/A3/R0.  Set Qt LT version to C8/A1/R0.
1777
1778         core: Do not leak the override session key to ps(1).
1779         + commit 9fc92a15bd0a30437a39d0eb28b6f40edc22e6e8
1780         * src/engine-gpg.c (struct engine_gpg): New field
1781         override_session_key.
1782         (gpg_release): Free that field.
1783         (gpg_decrypt): With gnupg 2.1.16 use --override-session-key-fd.
1784
1785         * tests/run-decrypt.c (main): Fix setting over the override key.
1786
1787 2016-11-16  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1788
1789         doc,tests: Require use of ctx_flag before use of session_key.
1790         + commit 573064742145aa5f9bf04baa88af918c0c4d5e12
1791         * doc/gpgme.texi: Document requirements of verifying that it is OK to
1792         use session_key.
1793         * tests/run-decrypt.c: Ensure that we fail if we're unable to access
1794         the session key, so that we do not violate the guidance above.
1795
1796
1797         Changed the description
1798
1799          -@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns
1800          -@code{GPG_ERR_NO_ERROR} or @code{gpgme_get_ctx_flag (ctx,
1801          -"export-session-key")} returns @code{"1"}.
1802          +@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns success
1803          +or @code{gpgme_get_ctx_flag (ctx, "export-session-key")} returns true
1804          +(non-empty string).
1805
1806         to get gpgme_get_ctx_flag for boolean values in sync with its own
1807         description.
1808
1809         Note that I don't agree with the above suggestion but it does not
1810         really harm to have it in the man page.
1811
1812 2016-11-15  Andre Heinecke  <aheinecke@intevation.de>
1813
1814         qt, cpp: Add cmake config files for w32.
1815         + commit b2c07bd47bd608afa5cc819b60a7b5bb8c9dd96a
1816         * lang/cpp/src/GpgmeppConfig-w32.cmake.in.in
1817         lang/qt/src/QGpgmeConfig-w32.cmake.in.in: New.
1818         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
1819         lang/qt/src/QGpgmeConfig.cmake.in.in: Remove libsuffix handling.
1820         * lang/cpp/src/Makefile.am,
1821         lang/qt/src/Makefile.am: Create / install w32 config files.
1822         * configure.ac: Configure them.
1823
1824         qt: Use new style connect in th..mixin.
1825         + commit 45abe6d142e314ba7099ad80b6365af171b06fec
1826         * lang/qt/src/threadedjobmixin.h
1827         (ThreadedJobMixin::lateInitialization): Use new style connect.
1828
1829 2016-11-15  Werner Koch  <wk@gnupg.org>
1830
1831         core: Implement context flag "override-session-key".
1832         + commit 7659d42468b604db2936b021425683f407eba4a7
1833         * src/gpgme.c (gpgme_set_ctx_flag): Add flags "export-session-key" and
1834         "override-session-key".
1835         (gpgme_get_ctx_flag): Ditto.
1836         (gpgme_set_export_session_keys): Remove.
1837         (gpgme_get_export_session_keys): Remove.
1838         * src/gpgme.def, src/libgpgme.vers: Remove them.
1839         * src/context.h (struct gpgme_context): Add field
1840         override_session_key.
1841         * src/decrypt-verify.c (decrypt_verify_start): Pass
1842         override_session_key value to the engine.
1843         * src/decrypt.c (decrypt_start): Ditto.
1844         * src/engine.c (_gpgme_engine_op_decrypt): Ditto.
1845         (_gpgme_engine_op_decrypt_verify): Ditto.
1846         * src/engine-backend.h (struct engine_ops): Extend DECRYPT and
1847         DECRYPT_VERIFY_START with override_session_key.
1848         * src/engine-uiserver.c (_uiserver_decrypt): Add stub arg
1849         override_session_key.
1850         (uiserver_decrypt): Ditto.
1851         (uiserver_decrypt_verify): Ditto.
1852         * src/engine-gpgsm.c (gpgsm_decrypt): Ditto.
1853         * src/engine-gpg.c (gpg_decrypt): Add arg override_session_key and set
1854         corresponding gpg option.
1855
1856         * tests/run-decrypt.c (print_result): Print the session key if
1857         available.
1858         (main): Add options --export-session-key and --override-session-key.
1859
1860         core: Add public function gpgme_get_ctx_flag.
1861         + commit 3234b1bf1d6939772677d64f6c1e1820ec98e3cd
1862         * src/gpgme.h.in (gpgme_get_ctx_flag): New.
1863         * src/gpgme.c (gpgme_set_ctx_flag): Move down the file and add a trace
1864         statement.
1865         (gpgme_get_ctx_flag): New.
1866         * src/gpgme.def, src/libgpgme.vers: Add new interface.
1867
1868 2016-11-15  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1869
1870         core: Enable extraction of session keys.
1871         + commit cad1210fb8a7402cb29e607f8f9680005314120d
1872         * src/gpgme.c (gpgme_set_export_session_keys): New function.
1873         (gpgme_get_export_session_keys): New function.
1874         * src/gpgme.h.in (struct _gpgme_op_decrypt_result): Add session_key
1875         member.
1876         (gpgme_{set,get}_export_session_keys): Declare new functions.
1877         * src/libgpgme.vers, src/gpgme.def: Export new functions in shared
1878         object.
1879         * src/engine.h: (_gpgme_engine_op_decrypt) Add export_session_key
1880         parameter.
1881         (_gpgme_engine_op_decrypt_verify): Add export_session_key parameter.
1882         * src/engine-backend.h: (struct engine_ops): Change function
1883         pointer declarations to match.
1884         * src/context.h (struct gpgme_context): Add export_session_keys member.
1885         * src/decrypt.c (release_op_data): Free result.session_key.
1886         (_gpgme_decrypt_status_handler): Store a copy of the exported session
1887         key.
1888         (decrypt_start): Pass export_session_keys from the context.
1889         * src/decrypt-verify.c (decrypt_verify_start): Pass
1890         export_session_keys from context.
1891         * src/engine.c (_gpgme_engine_op_decrypt): Pass through
1892         export_session_key flag.
1893         (_gpgme_engine_op_decrypt_verify): Pass through export_session_key
1894         flag.
1895         * src/engine-gpg.c (gpg_decrypt): If export_session_key is set, add
1896         --export-session-key to argument list.
1897         * src/engine-gpgsm.c (gpgsm_decrypt): Ignore export_session_key for
1898         now, since gpgsm offers no such mechanism.
1899         * src/engine-uiserver.c (_uiserver_decrypt): If export_session_key is
1900         set, add --export-session-key flag to cmd.
1901         * doc/gpgme.texi: Document new functions and session_key member of
1902         decrypt_result_t.
1903         * doc/uiserver.texi: Add --export-session-key flag to DECRYPT command.
1904
1905 2016-11-14  Andre Heinecke  <aheinecke@intevation.de>
1906
1907         qt: Add API to get the context for a Job.
1908         + commit 9451faa2ee333904cff59f92ab62918e13ab4b87
1909         * lang/qt/src/job.cpp,
1910         lang/qt/src/job.h (Job::context): New.
1911         * lang/qt/src/threadedjobmixin.cpp
1912         (ThreadedJobMixin::~ThreadedJobMixin): New. Unregister context.
1913         (ThreadedJobMixin::lateInitialization): Register context.
1914         * NEWS: Update for cpp and qt.
1915
1916         cpp: Add get / set Sender API.
1917         + commit d09a84eaf1e4f8c6c2e462995fa15c1a5690a6ce
1918         * cpp/src/context.cpp, cpp/src/context.h (Context::setSender),
1919         (Context::getSender): Add simple wrappers.
1920
1921         qt, cpp: Enable dll build for windows.
1922         + commit f3790ddf56558fb0a08af95fdbae979cd6589aad
1923         * lang/cpp/src/Makefile.am,
1924         lang/qt/src/Makefile.am: Add -no-undefined to LDFLAGS.
1925
1926         w32: Fix build of w32-glib.
1927         + commit b91c383386fe9eadd90afdb9bb1f8ec6c528173b
1928         * src/Makefile.am (main_sources): Remove system_components_not_extra.
1929         (libgpgme_la_SOURCES): Add system_components_not_extra.
1930         (libgpgme_glib_la_SOURCES): Remove duplicated ath files.
1931
1932 2016-11-11  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
1933
1934         doc: Correct deftypefun for gpgme_op_decrypt_verify_start.
1935         + commit 16a30205064914eef578d84d07141b5d51d82838
1936         * doc/gpgme.texi: Documentationabout gpgme_op_decrypt_verify_start was
1937         stored under the name gpgme_op_decrypt_verify instead.
1938
1939         doc: Correct text about gpgme_cancel_async.
1940         + commit d50bdb269e86db36a443958e3bfc6816a44d468e
1941         * doc/gpgme.texi: Documentation about gpgme_cancel_async should refer
1942         to the correct name.
1943
1944         core: Non-zero values should set _armor, _textmode, and _online.
1945         + commit da035768bd9a880becee5d0d553dfe12299f96eb
1946         * src/gpgme.c (gpgme_set_armor, gpgme_set_textmode,
1947         gpgme_set_offline): Ensure that non-zero values actually set the
1948         appropriate internal bit.
1949
1950 2016-11-11  Alon Bar-Lev  <alon.barlev@gmail.com>
1951
1952         tests,python: Atomic directory creation.
1953         + commit 41d8c7e51a8989be633b9ada124c58a01fae7d54
1954         * lang/python/tests/Makefile.am:  Use MIDIR_P.
1955         * tests/gpg/Makefile.am: Ditto.
1956         * tests/gpgsm/Makefile.am: Ditto.
1957
1958 2016-11-10  Werner Koch  <wk@gnupg.org>
1959
1960         core: Use better error code when using select with a too high fd.
1961         + commit 6e57379c8e37c0863f7d12819a5a7d0781bd76d2
1962         * src/posix-io.c (_gpgme_io_select): Return EMFILE instead of EBADF.
1963
1964 2016-11-10  Andre Heinecke  <aheinecke@intevation.de>
1965
1966         tests: Reduce thread count in new thread tests.
1967         + commit ddd0a3cf90ac4b0a27ea610ebd7b9b8016ff43c4
1968         * gpg/t-thread-keylist-verify.c,
1969         gpg/t-thread-keylist.c: Reduce threads to 100
1970
1971 2016-11-10  Werner Koch  <wk@gnupg.org>
1972
1973         core: Detect unreadable keyrings.
1974         + commit 2a39bd6c30d21c43c86645a7908ce6c57dad5e20
1975         * src/keylist.c (op_data_t): Add field keydb_search_err.
1976         (keylist_status_handler): Parse STATUS_ERROR into that var.
1977         (gpgme_op_keylist_next): Use that err instead of GPG_ERR_EOF.
1978
1979 2016-11-10  Andre Heinecke  <aheinecke@intevation.de>
1980
1981         tests: Fix additional memleaks in thread tests.
1982         + commit d0030efb45ec8436dd84a9623d2f66b80c6b9e10
1983         * tests/gpg/t-thread-keylist-verify.c (start_verify): Release
1984         data.
1985         (start_keylist): Unref keys.
1986         * tests/gpg/t-thread-keylist.c (start_keylist): Unref keys.
1987
1988         tests: Improve new thread tests.
1989         + commit 4d5174e4a83dcd524f8085f6646145f81b50a02a
1990         * tests/gpg/t-thread-keylist-verify.c (start_keylist): Mark
1991         arg as unused. Release context.
1992         (start_verify): Ditto.
1993         (main): Mark args as unused.
1994         * tests/gpg/t-thread-keylist.c (start_keylist):  Mark
1995         arg as unused. Release context.
1996         (main): Mark args as unused.
1997
1998         core: Use gpgrt locking for thread safeness.
1999         + commit 09b64554328445e99a8cc78fc34ea49c2ea2e7f9
2000         * configure.ac: Require libgpg-error 1.17. No longer
2001         check for pthread.
2002         * doc/gpgme.texi: Document removed neccessity for thread
2003         safe gpgme flavours.
2004         * src/sema.h (DEFINE_GLOBAL_LOCK),
2005         (DEFINE_STATIC_LOCK, INIT_LOCK, DECLARE_LOCK)
2006         (DESTROY_LOCK, LOCK, UNLOCK): Change to gpgrt equivalents.
2007         * src/posix-sema.c, src/w32-sema.c: Removed.
2008         * src/Makefile.am: Remove libpthread and
2009         Update accordingly.
2010         * src/ath.c, src/ath.h (ath_mutex_init)
2011         (ath_mutex_destroy, ath_mutex_lock, ath_mutex_unlock): Removed.
2012         * src/ath.h (ATH_MUTEX_INITIALIZER): Removed.
2013         * src/version.c (do_subsystem_inits): sema_subsystem_init is
2014         no longer required.
2015         * tests/gpg/Makefile.am: Add new threading tests.
2016         (t_thread1_LDADD, t_cancel_LDADD):
2017         Use just gpgme.
2018         * tests/gpg/t-thread-keylist-verify.c,
2019         tests/gpg/t-thread-keylist.c: New.
2020         * src/gpgme-config.in: Use -lgpgme for thread-model pthread.
2021
2022 2016-11-09  Justus Winter  <justus@g10code.com>
2023
2024         python: Require at least GPGME 1.7 for out-of-tree builds.
2025         + commit f1f341062e24724e26928d893dd5769d3ccf5fa2
2026         * lang/python/setup.py.in: Bump required version to 1.7.
2027
2028 2016-11-09  Werner Koch  <wk@gnupg.org>
2029
2030         w32: Better protect the IO-system's fd_table.
2031         + commit 10f2e1c30be651e74a03f4563a9f212d7416adb3
2032         * src/w32-io.c (fd_table_lock): New.
2033         (new_fd): Lock allocation of a new slot.
2034         (release_fd): Lock deallocation of a slot.
2035
2036 2016-11-04  Andre Heinecke  <aheinecke@intevation.de>
2037
2038         cpp: Add API for swdb queries.
2039         + commit 3509cf2f9846360848b6c08d36cbca18373c935e
2040         * lang/cpp/src/swdbresult.cpp,
2041          lang/cpp/src/swdbresult.h (SwdbResult): New.
2042         * lang/cpp/src/Makefile.am: Update accordingly.
2043
2044         cpp: Add more EngineInfo::Version ctors.
2045         + commit 512de91f9a8da8f491e09653eb4b5bdd0a027198
2046         * lang/cpp/src/engineinfo.h
2047         (EngineInfo::Version::Version(const char*)),
2048         (EngineInfo::Version::Version()): New.
2049
2050         cpp: Don't include gpgme.h in tofuinfo header.
2051         + commit 4d3f33d0e9d960df2c34fb4d215987ab4d36111c
2052         * lang/cpp/src/tofuinfo.h: Don't include gpgme.h
2053
2054         cpp: Extend gpgmefw for tofuinfo and swdb query.
2055         + commit 23979b9be5a6028e3e9cafc3aff632bc720b81f2
2056         * lang/cpp/src/gpgmefw.h (gpgme_tofu_info_t)
2057         (gpgme_query_swdb_result_t): New forwards.
2058
2059 2016-11-04  Werner Koch  <wk@gnupg.org>
2060
2061         w32: Fix locating gpgconf on 64 bit systems.
2062         + commit df08a0ca3f029b06b7e3a6bd63330df5cb96585a
2063         * src/w32-util.c (find_program_at_standard_place): Use access to check
2064         whether the binary is at CSIDL_PROGRAM_FILES before testing
2065         CSIDL_PROGRAM_FILESX86.
2066
2067 2016-11-03  Werner Koch  <wk@gnupg.org>
2068
2069         core: Add gpgme_op_query_swdb and helper.
2070         + commit aad94cb7c313d4501bed748f48830cbb93c67e20
2071         * src/gpgme.h.in (gpgme_query_swdb_result_t): New.
2072         (gpgme_op_query_swdb): New.
2073         (gpgme_op_query_swdb_result): New.
2074         * src/libgpgme.vers, src/gpgme.def: Add the two new functions.
2075         * src/queryswdb.c: New.
2076         * src/Makefile.am (main_sources): Add new file.
2077         * src/context.h (OPDATA_QUERY_SWDB): New.
2078         * src/engine-backend.h (struct engine_ops): Add field 'query_swdb'.
2079         Adjust all initializer.
2080         * src/engine.c (_gpgme_engine_op_query_swdb): New.
2081         * src/engine-gpgconf.c (parse_swdb_line): New.
2082         (gpgconf_query_swdb): New.
2083         (_gpgme_engine_ops_gpgconf): Register that function.
2084
2085         * src/util.h (GPG_ERR_TOO_OLD): Define for older libgpg-error.
2086         (GPG_ERR_ENGINE_TOO_OLD): Ditto.
2087
2088         * tests/run-swdb.c: New.
2089         * tests/Makefile.am (noinst_PROGRAMS): Add new debug tool.
2090
2091 2016-11-03  Andre Heinecke  <aheinecke@intevation.de>
2092
2093         qt: Change license of export / version header.
2094         + commit 34a4e8017be452e8ead6b9c2da84be1ec7929cae
2095         * lang/qt/src/qgpgme_export.h,
2096         lang/qt/src/qgpgme_version.h: Change license to GPLv2+
2097
2098 2016-11-03  Werner Koch  <wk@gnupg.org>
2099
2100         core: Make use of --homedir in gpgconf.
2101         + commit 0c2038c0043c1e79547b55e79c3d3e267dae801c
2102         * src/engine-gpgconf.c (struct engine_gpgconf): Add field 'version'.
2103         (have_gpgconf_version): New.
2104         (gpgconf_release): Free VERSION.
2105         (gpgconf_new): Set VERSION.
2106         (gpgconf_read, gpgconf_write): Use --homedir with recent gnupg.
2107
2108 2016-11-02  Andras Mantia  <andras@kdab.com>
2109
2110         qt: Fix build with g++ 4.8.x.
2111         + commit b4658f6a1110bb0b54bd5dfc9df8e8b390e38d61
2112         * lang/qt/src/defaultkeygenerationjob.cpp
2113         (DefaultKeyGenerationJob::start): Explicitly connect pointer
2114         in the QPointer.
2115
2116 2016-11-02  Andre Heinecke  <aheinecke@intevation.de>
2117
2118         qt, cpp: Fix versioning in cmake config and header.
2119         + commit bf9aa0ccf7b0165aa3a1af2bdb18daca7c02ce74
2120         * configure.ac (VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO): New
2121         subst variables for the version header.
2122         * lang/cpp/src/GpgmeppConfigVersion.cmake.in,
2123         lang/cpp/src/gpgmepp_version.h.in,
2124         lang/qt/src/QGpgmeConfigVersion.cmake.in,
2125         lang/qt/src/qgpgme_version.h.in: Use new variables.
2126
2127         qt: Install cmake config into qgpgme subdir.
2128         + commit b5c4d56cfdcafade3467be100fca6f1c89ecab73
2129         * lang/qt/src/Makefile.am: Install cmake config file in qgpgme subdir.
2130
2131         qt: Require gpgmepp from cmake config script.
2132         + commit 4149194d2e2f2f4d142926ba4d4efbd336b543f2
2133         * lang/qt/src/QGpgmeConfig.cmake.in.in: Require cpp.
2134
2135         qt, cpp: Add all generated files to cleanfiles.
2136         + commit 8486f213423311174ebff5cba74127cbd9bb3c2a
2137         * cpp/src/Makefile.am (CLEANFILES),
2138         qt/src/Makefile.am (CLEANFILES): Add all generated files
2139         to cleanfiles.
2140
2141 2016-11-01  Andre Heinecke  <aheinecke@intevation.de>
2142
2143         qt: Add Distinguished Name parser from libkleo.
2144         + commit 627c5deed84b4481710b6c0de06b26e886679bbe
2145         * lang/qt/src/dn.cpp (DN, DN::Attribute): New public API.
2146         * lang/qt/src/dn.h: New.
2147         * lang/qt/src/Makefile.am: Update accordingly.
2148
2149         qt, cpp: Install version headers in subdirs.
2150         + commit 567123de21247cab05762d799400739a12eb67ae
2151         * lang/cpp/src/Makefile.am,
2152         lang/qt/src/Makefile.am: Install version headers in include
2153         subdirs.
2154
2155 2016-10-31  Justus Winter  <justus@g10code.com>
2156
2157         python: Use vanity modules for constants in tests and examples.
2158         + commit 4b3264345084a0c9bf9f97fb233df700d7608e66
2159         * lang/python/gpg/constants/sig/notation.py: New file.
2160         * lang/python/gpg/constants/sig/__init__.py: Import new module.
2161
2162         * lang/python/examples/assuan.py: Use more specific module for
2163         constants, e.g. 'protocol.ASSUAN' instead of 'PROTOCOL_ASSUAN'.
2164         * lang/python/examples/testCMSgetkey.py: Likewise.
2165         * lang/python/tests/initial.py: Likewise.
2166         * lang/python/tests/t-callbacks.py: Likewise.
2167         * lang/python/tests/t-decrypt-verify.py: Likewise.
2168         * lang/python/tests/t-decrypt.py: Likewise.
2169         * lang/python/tests/t-edit.py: Likewise.
2170         * lang/python/tests/t-encrypt-large.py: Likewise.
2171         * lang/python/tests/t-encrypt-sign.py: Likewise.
2172         * lang/python/tests/t-encrypt-sym.py: Likewise.
2173         * lang/python/tests/t-encrypt.py: Likewise.
2174         * lang/python/tests/t-export.py: Likewise.
2175         * lang/python/tests/t-file-name.py: Likewise.
2176         * lang/python/tests/t-idiomatic.py: Likewise.
2177         * lang/python/tests/t-import.py: Likewise.
2178         * lang/python/tests/t-keylist.py: Likewise.
2179         * lang/python/tests/t-protocol-assuan.py: Likewise.
2180         * lang/python/tests/t-sig-notation.py: Likewise.
2181         * lang/python/tests/t-sign.py: Likewise.
2182         * lang/python/tests/t-signers.py: Likewise.
2183         * lang/python/tests/t-trustlist.py: Likewise.
2184         * lang/python/tests/t-verify.py: Likewise.
2185         * lang/python/tests/t-wait.py: Likewise.
2186
2187         python: Import the topmost module in tests and examples.
2188         + commit 20dc37a0e7e1531b0e568a6ec29b1c2d18de59c3
2189         * examples/verifydetails.py: Only import the topmost module 'gpg' and
2190         update the code accordingly.
2191         * tests/support.py: Likewise.
2192         * tests/t-callbacks.py: Likewise.
2193         * tests/t-data.py: Likewise.
2194         * tests/t-decrypt-verify.py: Likewise.
2195         * tests/t-decrypt.py: Likewise.
2196         * tests/t-edit.py: Likewise.
2197         * tests/t-encrypt-large.py: Likewise.
2198         * tests/t-encrypt-sign.py: Likewise.
2199         * tests/t-encrypt-sym.py: Likewise.
2200         * tests/t-encrypt.py: Likewise.
2201         * tests/t-export.py: Likewise.
2202         * tests/t-file-name.py: Likewise.
2203         * tests/t-import.py: Likewise.
2204         * tests/t-keylist.py: Likewise.
2205         * tests/t-sig-notation.py: Likewise.
2206         * tests/t-sign.py: Likewise.
2207         * tests/t-signers.py: Likewise.
2208         * tests/t-trustlist.py: Likewise.
2209         * tests/t-verify.py: Likewise.
2210         * tests/t-wait.py: Likewise.
2211         * tests/t-wrapper.py: Likewise.
2212
2213         python: Improve constants module.
2214         + commit 70b7064e5c4f3eff9c296c00156724bc0cdaa64f
2215         * lang/python/gpg/constants/__init__.py: Import all modules below
2216         'constants/'.  Interface hygiene: delete 'util'.
2217         * lang/python/gpg/constants/data/encoding.py: Delete 'util'.
2218         * lang/python/gpg/constants/event.py: Likewise.
2219         * lang/python/gpg/constants/import.py: Likewise.
2220         * lang/python/gpg/constants/keylist/mode.py: Likewise.
2221         * lang/python/gpg/constants/md.py: Likewise.
2222         * lang/python/gpg/constants/pk.py: Likewise.
2223         * lang/python/gpg/constants/protocol.py: Likewise.
2224         * lang/python/gpg/constants/sig/mode.py: Likewise.
2225         * lang/python/gpg/constants/sigsum.py: Likewise.
2226         * lang/python/gpg/constants/validity.py: Likewise.
2227         * lang/python/gpg/errors.py: Likewise.
2228
2229 2016-10-31  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2230
2231         python: Rename Python module from PyME to gpg.
2232         + commit 2fac017618a76882605125b05ff1f7393fe99860
2233         This follows weeks of discussion on the gnupg-devel mailing list.
2234         Hopefully it will make it easier for people using Python to use GnuPG
2235         in the future.
2236
2237 2016-10-25  Werner Koch  <wk@gnupg.org>
2238
2239         core: New API functions gpgme_set_sender, gpgme_get_sender.
2240         + commit b8159eadb5636cd9d93ee60c41e75d5978927870
2241         * src/context.h (struct gpgme_context): Add field 'sender'.
2242         * src/gpgme.c: Include mbox-util.h.
2243         (gpgme_release): Free SENDER.
2244         (gpgme_set_sender): New.
2245         (gpgme_get_sender): New.
2246         * src/gpgme.def, src/libgpgme.vers: Add new functions.
2247
2248         * src/engine-gpg.c (append_args_from_sender): New.
2249         (gpg_encrypt_sign, gpg_sign): Call append_args_from_sender.
2250         (gpg_verify): Add arg CTX.  Call append_args_from_sender/
2251         * src/engine-gpgsm.c (gpgsm_verify): Add dummy arg CTX.
2252         * src/engine-uiserver.c (uiserver_verify): Ditto.
2253         * src/engine.c (_gpgme_engine_op_verify): Add arg CTX.
2254         * src/verify.c (verify_start): Pass CTX to engine function.
2255
2256         * tests/gpg/t-verify.c (main): Add some checks for new functions.
2257         * tests/run-sign.c (main): Add option --sender.
2258         * tests/run-verify.c (main): Ditto.
2259
2260 2016-10-19  Andre Heinecke  <aheinecke@intevation.de>
2261
2262         qt: Improve WKSPublishJob apidoc.
2263         + commit 26cbba3c9cb04a68b95f3a6000ac9bd93fe76dd7
2264         * lang/qt/src/wkspublishjob.h: Improve doc.
2265
2266 2016-10-18  Werner Koch  <wk@gnupg.org>
2267
2268         Release 1.7.1.
2269         + commit 2c490cdb3e50761c498357982445ebb01f18dc1e
2270         * configure.ac: Set LT version to C27/A16/R0.  Note that the LT
2271         versions for cpp and Qt have already been updated.
2272
2273 2016-10-14  Werner Koch  <wk@gnupg.org>
2274
2275         tests: Make t-cancel more portable.
2276         + commit 05e8e1260baa5cbc6f1d6e387e642c1f6c188d44
2277         * tests/gpg/t-cancel.c: Include sys/time.h and protect sys/select.h.
2278
2279         python: Call ln(1) in a portable way.
2280         + commit c6cab5a2bd6e7ed226c6c3f0b78b3f48b47db74c
2281         * lang/python/Makefile.am: Specify target dir for ln.
2282
2283 2016-10-14  Andre Heinecke  <aheinecke@intevation.de>
2284
2285         cpp: Fix init of string from null.
2286         + commit 1e8c34a9192956bb2fe96a7a6a76ff59de8d1c0c
2287         * lang/cpp/src/key.cpp (UserID::addrSpecFromString): Check return
2288         value before creating the string.
2289
2290 2016-10-13  Justus Winter  <justus@g10code.com>
2291
2292         python: Make 'get_key' more idiomatic.
2293         + commit f526d0e22e8b881ccbca66b46a0e1b68bbc4cd6b
2294         * lang/python/pyme/core.py (Context.get_key): Raise errors.KeyNotFound
2295         if the key is not found.  This error is both a KeyError for idiomatic
2296         error handling as well as a GPGMEError so we don't break existing
2297         code.
2298         * lang/python/pyme/errors.py (KeyNotFound): New class.
2299         * lang/python/tests/support.py (no_such_key): New variable.
2300         * lang/python/tests/t-keylist.py: Test the new behavior.
2301
2302         python: Return public keys by default.
2303         + commit 1e6073ffa98db2c265adbcf0dbbe70c067a910f0
2304         * lang/python/pyme/core.py (Core.get_key): Return public keys by
2305         default, improve docstring.
2306         * lang/python/examples/testCMSgetkey.py: Update example.
2307         * lang/python/examples/verifydetails.py: Likewise.
2308
2309         python: Fix example.
2310         + commit cabd4c74e52c8983d624b6877cddc7f8912eff04
2311         * lang/python/examples/inter-edit.py: Fix example.
2312
2313 2016-10-13  Andre Heinecke  <aheinecke@intevation.de>
2314
2315         cpp: Fix version number.
2316         + commit 56302e7bb6a694a7c570f389f9a7883efdfdaf42
2317         * configure.ac (LIBGPGMEPP_LT_CURRENT): Bump.
2318
2319         qt, cpp: Fix permissions of Config files.
2320         + commit a274c7590aa0e38d682d5177904983632f471cb0
2321         * lang/cpp/src/Makefile.am,
2322         lang/qt/src/Makefile.am: Do not install config files as executable.
2323
2324         qt: Install SpecialJob.
2325         + commit 2538c12fa0728f4113f83f69f8c8ec9efb163872
2326         * lang/qt/src/Makefile.am: Install SpecialJob
2327         * NEWS: mention it.
2328
2329         qt, cpp: Fix expected targets in Config files.
2330         + commit a3cf30f89418c8a6bc9456533d95ba7fc2a33a4c
2331         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
2332         lang/qt/src/QGpgmeConfig.cmake.in.in: Remove KF5 variants.
2333
2334 2016-10-11  Daniel Vrátil  <dvratil@kde.org>
2335
2336         qt: Add missing implementation of MultiDeleteJob.
2337         + commit e5a35af5573651b96a90ef4a537b040333595472
2338         * lang/qt/src/multideletejob.h: Fix include, cryptobackend.h is now
2339         called protocol.h
2340         * lang/qt/src/multideletejob.cpp: New file.
2341         * lang/qt/src/Makefile.am: Add multideletejob.cpp.
2342
2343         qt: Install abstractimportjob.h.
2344         + commit ce7385caabb57e5435695cc912acffe2815770b7
2345         * lang/cpp/src/Makefile.am: Install abstractimportjob.h since it's
2346         included from importjob.h
2347
2348 2016-10-11  Andre Heinecke  <aheinecke@intevation.de>
2349
2350         cpp: Add API for gpgme_addrspec_from_uid.
2351         + commit 54f94b14e2bb9b38ffd89f509406bfbd012da632
2352         * lang/cpp/src/key.cpp (UserID::addrSpecFromString): New static
2353         function to expose addrspec from uid.
2354         (UserID::addrSpec): New. Get addrSpec from Userid.
2355         * NEWS: Update accordingly.
2356
2357 2016-10-10  Andre Heinecke  <aheinecke@intevation.de>
2358
2359         Add NEWS for cpp and qt, bump cpp version.
2360         + commit e7ceb83a5969581f5e1b0b6a69d18a93b594f6d4
2361         * NEWS: Add entries for cpp and qt changes.
2362         * configure.ac: Bump cpp version because of added API.
2363
2364         Add convenience function to get key from sig.
2365         + commit b6b820bff14a9aa8fa67755b246c90062ffdba14
2366         * lang/cpp/src/verificationresult.cpp (Signature::key(bool, bool)):
2367         New. Can be used to search / update the key associcated with this
2368         signature.
2369
2370         cpp: Return null key if the signature had no key.
2371         + commit 34e9dfee81958160f6604849b63369ae4de67417
2372         * lang/cpp/src/verificationresult.cpp (Private): Add null key
2373         to list when there is no key associated with the signature.
2374
2375         qt: Add simple verify test.
2376         + commit f131a5e72b0881cafcc3b0a91da8f050af2684a6
2377         * lang/qt/tests/t-verify.cpp: New. Small test if a signature
2378         returns a key with fingerprint.
2379         * lang/qt/tests/Makefile.am: Add new test.
2380
2381         core: Fix w32 crash in find_program_in_dir.
2382         + commit 098a2da15b1b46b145add623dec0488abd39bd74
2383         * src/w32-util.c (find_program_in_dir): Fix call to _gpgme_strconcat.
2384
2385 2016-10-08  Werner Koch  <wk@gnupg.org>
2386
2387         core: New helper function gpgme_addrspec_from_uid.
2388         + commit 0ea2ff67900c243fff9f689658dcb23d1c0961cd
2389         * src/gpgme.h.in: Add gpgme_addrspec_from_uid.
2390         * src/gpgme.def, src/libgpgme.vers: Ditto.
2391         * src/mbox-util.c (gpgme_addrspec_from_uid): New.
2392
2393 2016-10-06  Justus Winter  <justus@g10code.com>
2394
2395         Add missing includes.
2396         + commit 857592041b8355cd58a7068c9f2446cf8dc0968f
2397         * lang/cpp/src/key.cpp: Include <strings.h> for 'strcasecmp'.
2398         * tests/gpg/t-cancel.c: Include <sys/select.h> for 'fd_set' and
2399         friends.
2400
2401 2016-10-05  Andre Heinecke  <aheinecke@intevation.de>
2402
2403         cpp: Bump Revision.
2404         + commit 8033cff441e9ea185531290273ec343f3402703c
2405         * configure.ac (LIBGPGMEPP_LT_REVISION): Bump revision.
2406
2407         qt: Fix spelling error in WKSPublishJob.
2408         + commit 88c7e84ede4b6017cac3a396e8c87c2bd3a2bf58
2409         * src/qgpgmewkspublishjob.cpp,
2410         src/qgpgmewkspublishjob.h,
2411         src/wkspublishjob.h,
2412         tests/t-wkspublish.cpp: Fix spelling of received.
2413         * src/configure.ac (LIBQGPGME_LT_CURRENT): Bump
2414         accordingly.
2415
2416         qt: Disable tests that require a password for 2.0.
2417         + commit 24779c9e2301bd17fd328d65b0383e1cbc944119
2418         * lang/qt/tests/t-encrypt.cpp: Disable tests that require
2419         a password for 2.0.
2420
2421         Add warning flags for c++ compiler, too.
2422         + commit 4984cc93db6b55f2420a9abd844c074a5fb4ed0c
2423         * configure.ac (CXXFLAGS): Add Wall and Wextra.
2424
2425         qt: Fix unused variable warnings.
2426         + commit 9d1df990386010e0581b542a76a4f5d85d8d11b5
2427         * qt/src/qgpgmenewcryptoconfig.cpp,
2428         qt/src/threadedjobmixin.h,
2429         qt/tests/t-encrypt.cpp,
2430         qt/tests/t-support.h,
2431         qt/tests/t-wkspublish.cpp: Mark additional variables as unused.
2432
2433         cpp: Add support for URL Data encodings.
2434         + commit 370ee1aa802ec6a4030a39b2df7d24a0c47e5ac7
2435         * lang/cpp/src/data.h (Data::Encoding): Extend enum.
2436         * lang/cpp/src/data.cpp (Data::encoding),
2437         Data::setEncoding): Support new values.
2438
2439         cpp: Fix gcc diagnostic push / pop.
2440         + commit 39dd7585f5a7d801942efcb375d6dd46d01d2968
2441         * lang/cpp/src/context.cpp: Fix pragmas.
2442
2443         qt: Disable t-wkspublish test.
2444         + commit 52a91ccc6a25425d4374b77040e30efb6816940f
2445         * lang/qt/tests/Makefile.am (TESTS): Remove t-wkspublish.
2446
2447 2016-09-30  Alon Bar-Lev  <alon.barlev@gmail.com>
2448
2449         python: Link 'data.h' and 'config.h' into the builddir.
2450         + commit 453ab9d24ca48c9e01d21e1454d6b08de1938b76
2451         * lang/python/Makefile.am: Link to the files.
2452         * lang/python/gpgme.i: Update path.
2453         * lang/python/setup.py.in: Do not add the top builddir to the include
2454         path.
2455
2456         python: Add 'prepare' target.
2457         + commit 68fb8371a1dd5f4e05e50b1733f9996d139cbf38
2458         * lang/python/Makefile.am: Add 'prepare' target.
2459
2460 2016-09-29  Andre Heinecke  <aheinecke@intevation.de>
2461
2462         cpp, qt: Handle modified includedir installation.
2463         + commit 7302791c0d308c3284ac24a743035d27a0c0b6ba
2464         * lang/cpp/src/Makefile.am,
2465         lang/qt/src/Makefile.am: Replace resolved_includedir.
2466         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
2467         lang/qt/src/QGpgmeConfig.cmake.in.in: Use resolved_includedir
2468         instead of relying on a common installation prefix.
2469
2470 2016-09-27  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2471
2472         Clarify licensing.
2473         + commit 145392f07f42ef23ebcb83a917b4d8e2964e7aa8
2474         * src/b64dec.c, src/mbox-util.c, src/mbox-util.h: These three files
2475           are explicitly licensed under LGPL, but their comments suggest that
2476           details about the warranty can be found in the GPL.  Adjust comments
2477           to refer to the correct license.
2478
2479 2016-09-27  Justus Winter  <justus@g10code.com>
2480
2481         tests: Fix check for gpg versions not reporting the critical flag.
2482         + commit a423603f80d9eb653ce9c171662db2175d7456f5
2483         * lang/python/tests/t-sig-notation.py: Also blacklist 2.0.x.
2484         * tests/gpg/t-sig-notation.c: Likewise.
2485
2486 2016-09-26  Justus Winter  <justus@g10code.com>
2487
2488         python: Correctly translate to size_t.
2489         + commit c38fabfea0601ed5f61e27e0bf43f8e74c67ce2a
2490         * lang/python/gpgme.i: Correctly translate Python number to size_t.
2491
2492         python: Correctly translate off_t.
2493         + commit 1d80e7374aa3150306c86afe7acdc8e8eb05143f
2494         * lang/python/gpgme.i: Improve int/long translations, correctly handle
2495         off_t with large file support.
2496
2497         python: Include 'config.h'.
2498         + commit 3703a4723899d7563937b4b99f5bbe4dd8d3dfed
2499         * lang/python/Makefile.am: Pass 'top_builddir' to 'setup.py'.
2500         * lang/python/gpgme.i: Include 'config.h'.
2501         * lang/python/helpers.c: Likewise.
2502         * lang/python/helpers.h: Likewise.
2503         * lang/python/setup.py.in: Make sure that 'config.h' can be found.
2504
2505 2016-09-23  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
2506
2507         Fix spelling.
2508         + commit 95f38652f696476b38a040644eac40b4511d2b32
2509          * lang/cpp/src/context.h, lang/qt/src/protocol.h,
2510            lang/qt/src/wkspublishjob.h, src/data-identify.c, src/engine-gpg.c:
2511            minor spelling cleanup.
2512
2513         move some file encodings to UTF-8.
2514         + commit a11450eb048df79a3f2b00ebef6d7cab07ad5054
2515         * THANKS, doc/ChangeLog-2011, tests/ChangeLog-2011,
2516           tests/gpg/geheim.txt: convert from iso 8859-1 to utf-8.
2517         * lang/qt/src/dataprovider.cpp, lang/qt/src/qgpgmerefreshkeysjob.cpp,
2518           lang/qt/src/qgpgmesecretkeyexportjob.cpp: replace U+FFFD REPLACEMENT
2519           CHARACTER with proper U+00E4 LATIN SMALL LETTER A WITH DIAERESIS.
2520
2521 2016-09-23  Andre Heinecke  <aheinecke@intevation.de>
2522
2523         tests: Check data after decryption.
2524         + commit 9b38817968b90caf73f123255fe427691e82fec4
2525         * tests/gpgsm/t-decrypt.c (main): Check data matches expected.
2526         Only print result if it does not.
2527
2528         cpp, qt: Include config.h.
2529         + commit a142f187b7ddb2728ec3e1743da4a0c4538ab40a
2530         lang/cpp/src/callbacks.cpp,
2531         lang/cpp/src/configuration.cpp,
2532         lang/cpp/src/context.cpp,
2533         lang/cpp/src/context_glib.cpp,
2534         lang/cpp/src/context_qt.cpp,
2535         lang/cpp/src/context_vanilla.cpp,
2536         lang/cpp/src/data.cpp,
2537         lang/cpp/src/decryptionresult.cpp,
2538         lang/cpp/src/defaultassuantransaction.cpp,
2539         lang/cpp/src/editinteractor.cpp,
2540         lang/cpp/src/encryptionresult.cpp,
2541         lang/cpp/src/engineinfo.cpp,
2542         lang/cpp/src/eventloopinteractor.cpp,
2543         lang/cpp/src/exception.cpp,
2544         lang/cpp/src/gpgadduserideditinteractor.cpp,
2545         lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
2546         lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
2547         lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
2548         lang/cpp/src/gpgsignkeyeditinteractor.cpp,
2549         lang/cpp/src/importresult.cpp,
2550         lang/cpp/src/key.cpp,
2551         lang/cpp/src/keygenerationresult.cpp,
2552         lang/cpp/src/keylistresult.cpp,
2553         lang/cpp/src/scdgetinfoassuantransaction.cpp,
2554         lang/cpp/src/signingresult.cpp,
2555         lang/cpp/src/tofuinfo.cpp,
2556         lang/cpp/src/trustitem.cpp,
2557         lang/cpp/src/verificationresult.cpp,
2558         lang/cpp/src/vfsmountresult.cpp,
2559         lang/qt/src/dataprovider.cpp,
2560         lang/qt/src/defaultkeygenerationjob.cpp,
2561         lang/qt/src/gpgme_backend_debug.cpp,
2562         lang/qt/src/job.cpp,
2563         lang/qt/src/qgpgmeadduseridjob.cpp,
2564         lang/qt/src/qgpgmebackend.cpp,
2565         lang/qt/src/qgpgmechangeexpiryjob.cpp,
2566         lang/qt/src/qgpgmechangeownertrustjob.cpp,
2567         lang/qt/src/qgpgmechangepasswdjob.cpp,
2568         lang/qt/src/qgpgmedecryptjob.cpp,
2569         lang/qt/src/qgpgmedecryptverifyjob.cpp,
2570         lang/qt/src/qgpgmedeletejob.cpp,
2571         lang/qt/src/qgpgmedownloadjob.cpp,
2572         lang/qt/src/qgpgmeencryptjob.cpp,
2573         lang/qt/src/qgpgmeexportjob.cpp,
2574         lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
2575         lang/qt/src/qgpgmeimportjob.cpp,
2576         lang/qt/src/qgpgmekeyformailboxjob.cpp,
2577         lang/qt/src/qgpgmekeygenerationjob.cpp,
2578         lang/qt/src/qgpgmekeylistjob.cpp,
2579         lang/qt/src/qgpgmelistallkeysjob.cpp,
2580         lang/qt/src/qgpgmenewcryptoconfig.cpp,
2581         lang/qt/src/qgpgmerefreshkeysjob.cpp,
2582         lang/qt/src/qgpgmesecretkeyexportjob.cpp,
2583         lang/qt/src/qgpgmesignencryptjob.cpp,
2584         lang/qt/src/qgpgmesignjob.cpp,
2585         lang/qt/src/qgpgmesignkeyjob.cpp,
2586         lang/qt/src/qgpgmetofupolicyjob.cpp,
2587         lang/qt/src/qgpgmeverifydetachedjob.cpp,
2588         lang/qt/src/qgpgmeverifyopaquejob.cpp,
2589         lang/qt/src/qgpgmewkspublishjob.cpp,
2590         lang/qt/src/threadedjobmixin.cpp,
2591         lang/qt/tests/run-keyformailboxjob.cpp,
2592         lang/qt/tests/t-encrypt.cpp,
2593         lang/qt/tests/t-keylist.cpp,
2594         lang/qt/tests/t-keylocate.cpp,
2595         lang/qt/tests/t-ownertrust.cpp,
2596         lang/qt/tests/t-support.cpp,
2597         lang/qt/tests/t-tofuinfo.cpp,
2598         lang/qt/tests/t-wkspublish.cpp: Include config.h
2599
2600 2016-09-22  Werner Koch  <wk@gnupg.org>
2601
2602         w32: Silence some warnings about unused parameters.
2603         + commit 583aafdd6870a7fb12a34d90993fd0f46928592c
2604         * src/assuan-support.c (my_recvmsg, my_sendmsg, my_waitpid)
2605         (my_socketpair) [W32]: Mark unused parameters.
2606
2607         core: Fix error checking in _gpgme_mkstemp.
2608         + commit c447b64d5989845a2ae2cf8fb30a92d2a0bd05af
2609         * src/w32-util.c (_gpgme_mkstemp): Fix error checking.
2610         (dlopen): Mark FLAGS as unused.
2611
2612         core: New helper function _gpgme_strconcat.
2613         + commit dc39552d01094eff2bef5f9fcd1c16928909d20e
2614         * src/conversion.c: Include stdarg.h.
2615         (do_strconcat): New.
2616         (_gpgme_strconcat): New.
2617         * src/util.h: Provide fallback for GPGRT_ATTR_SENTINEL.
2618         (_gpgme_strconcat): New with sentinel.
2619
2620         * src/w32-util.c (find_program_in_dir): Replace malloc and stpcpy by
2621         _gpgme_strconcat.
2622         (find_program_at_standard_place): Ditto.
2623         (_gpgme_set_default_gpg_name): Ditto.
2624         (_gpgme_set_default_gpgconf_name): Ditto.
2625         (_gpgme_mkstemp): Ditto.
2626         (_gpgme_set_override_inst_dir): Repalce malloc and strcpy by strdup.
2627
2628 2016-09-22  Daiki Ueno  <ueno@gnu.org>
2629
2630         tests: Add test for cancellation.
2631         + commit 7a6543c2dfeef874a34086c8f3eeb1dbdf1ce822
2632         * tests/gpg/t-cancel.c: New file.
2633         * tests/gpg/Makefile.am (tests_skipped): New variable, default to
2634         t-genkey and t-cancel.
2635         (noinst_PROGRAMS): Add $(tests_skipped).
2636         * tests/gpg/.gitignore: Add t-cancel.
2637
2638         gpg: Add option --exit-on-status-write-error.
2639         + commit dee56820cabde60c43c9bf8281b8d411cb2ad644
2640         * src/engine-gpg.c (gpg_new): Add --exit-on-status-write-error if the
2641         engine version is latest enough to expect progress output from gpg.
2642
2643         tests: Fix select usage in t-eventloop.
2644         + commit d0cf6b15121c9b42dbcef243e5ce30c9996a449c
2645         * tests/gpg/t-eventloop.c (do_select): Supply timeout value to select.
2646
2647         doc: Fix minor errors in I/O callback example.
2648         + commit 0aaf1dedd629446ab991fff76581b4b58e4872a0
2649         * gpgme.texi (I/O Callback Example): Fix typos, add timeout to select,
2650         and initialize mutex as recursive.
2651
2652 2016-09-21  Andreas Stieger  <astieger@suse.com>
2653
2654         cpp: Avoid missing returns in non-void functions.
2655         + commit ae324b51ffa338b891387bff2657d60c1fd3ae40
2656         * lang/cpp/src/context.cpp
2657           (Context::signaturePolicyURL): return nullptr on default
2658           (to_tofu_policy_t): add default case for unknown
2659         * lang/cpp/src/key.cpp
2660           (Key::primaryFingerprint): return nullptr on default
2661         * lang/cpp/src/tofuinfo.cpp
2662           (GpgME::TofuInfo::policy): add default case for unknown
2663
2664 2016-09-21  Werner Koch  <wk@gnupg.org>
2665
2666         Release 1.7.0.
2667         + commit e7ab75379feadcc2894d9d4cde0f16ad0044780d
2668         * configure.ac: Bump LT vesion to C26/A15/R0.
2669
2670         python: Create install dir.
2671         + commit 936928632b02d7cc2ac645543bb03e4c94285f05
2672         * lang/python/Makefile.am (install-exec-local): Create dir.
2673
2674 2016-09-20  Werner Koch  <wk@gnupg.org>
2675
2676         tests: Make "make -j distcheck" work in Python.
2677         + commit 0763357e39d140b068ee9838a5da08be75426d9f
2678         * lang/python/Makefile.am (SUBDIRS): Make current dir fist.
2679         * lang/python/tests/Makefile.am (xcheck): Depend on pubring-stamp.
2680         (CLEANFILES): Remove private-keys-v1.d/gpg-sample.stamp.
2681         (check-local): Remove.
2682         (initial.py): Remove dependency.
2683         (./pubring-stamp): Depend on conf files and the
2684         private-keys-v1.d/gpg-sample.stamp file.  Also replace use of
2685         basename.
2686
2687         tests: Use --batch for gpg import.
2688         + commit bfb6890ded99f040fe8ecf910f927a136e4acfda
2689         * lang/python/tests/Makefile.am (./pubring-stamp): Use --batch with
2690         GPG to avoid Pinentries during import when using GnuPG >= 2.1.
2691         Replace touch by echo.
2692         * tests/gpg/Makefile.am (./pubring-stamp): Ditto.
2693
2694         tests: Improve portability.
2695         + commit 29207bcd3bf4de7264197db6758130375b16d9bb
2696         * lang/qt/tests/Makefile.am (clean-local): Avoid non-portable "--"
2697         * lang/python/Makefile.am (copystamp): Use well defined cp -R instead
2698         of cp -r.
2699
2700         build: Create swdb file.
2701         + commit df7e92b4d585b7dce919c5a3aab9524f6e183cbe
2702         * Makefile.am (distcheck-hook): New.
2703         (dist-hook): s/VERSION/PACKAGE_VERSION/ for future compatibility.
2704
2705 2016-09-20  Justus Winter  <justus@g10code.com>
2706
2707         python: Fix detection of Python available versions.
2708         + commit ef99b74eb12463db7da5806a316e3b55f8097c5c
2709         * configure.ac: Test for 'PYTHON_VERSION' as 'AX_PYTHON_DEVEL' sets
2710         'PYTHON' but clears the former.
2711
2712 2016-09-19  Andre Heinecke  <aheinecke@intevation.de>
2713
2714         core: Remove moc artifact.
2715         + commit e3c35147d6adb754d4eb0781a54af2a8f0803663
2716         * src/moc_kdpipeiodevice.cpp: Removed.
2717         * src/Makefile.am (EXTRA_DIST): Remove moc_kdpipeiodevice.cpp.
2718
2719         qt: Improve README.
2720         + commit 3f92253e0e476d77aa11463bc51ade367985855f
2721         * lang/qt/README: Add more content. Clearly note license difference.
2722
2723         cpp: Improve README.
2724         + commit 66febf9942c321d30b8770f6aa6cd6ce2315d34f
2725         * lang/cpp/README: Add more content, move license to bottom.
2726
2727         qt: Add debug output for testTofuPolicy.
2728         + commit d438cb59a068b6f076e6bd70d3a2c46bc05ccb5c
2729         * lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): Add
2730         debug output.
2731
2732 2016-09-19  Ben Kibbey  <bjk@luxsci.net>
2733
2734         core: Check for GPG_TTY as well as DISPLAY.
2735         + commit 9d62bacac7826cb73bb18fac7268f3d2df662d7b
2736         * src/engine-assuan.c (llass_new): Update --ttyname from GPG_TTY.
2737         * src/engine-g13.c (g13_new): Ditto.
2738         * src/engine-gpg.c (gpg_new): Ditto.
2739         * src/engine-uiserver.c (uiserver_new): Ditto.
2740         * src/engine-gpgsm.c (gpgsm_new): Ditto.
2741
2742 2016-09-16  Andre Heinecke  <aheinecke@intevation.de>
2743
2744         qt: Add test for setting tofu policy.
2745         + commit a8ff34fc3025af4079cede7f8f9fdf40189b8638
2746         * lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): New.
2747
2748         qt: Add job for tofupolicy.
2749         + commit 77aecfb5c97cea1a99f1ff627748cf71767bac5c
2750         * lang/qt/src/job.cpp, lang/qt/src/protocol.h,
2751         lang/qt/src/protocol_p.h: Register job.
2752         * lang/qt/src/qgpgmetofupolicyjob.cpp,
2753         lang/qt/src/qgpgmetofupolicyjob.h,
2754         lang/qt/src/tofupolicyjob.h: New.
2755         * lang/qt/src/Makefile.am: Update accordingly.
2756
2757         cpp: Add support for gpgme_op_tofu_policy.
2758         + commit 4d384d7bfef044094695271576ca233625bb520a
2759         * src/context.cpp, src/context.h (setTofuPolicy, setTofuPolicyStart):
2760         New.
2761
2762         cpp: Declare sizes of tofu-info enums.
2763         + commit 32baac8cdec6fee51bdfc3c55cb2ee141e086df4
2764         * lang/cpp/src/tofuinfo.h (Policy, Validity): Declare sizes.
2765
2766 2016-09-16  Werner Koch  <wk@gnupg.org>
2767
2768         cpp: Silence use of deprecated function warning.
2769         + commit bd24db313d860ae46d37776dcf1067455d1b9880
2770         * lang/cpp/src/context.cpp (GpgME): Use pragma to silence wardning.
2771
2772         core: Document the version a function has been deprecated.
2773         + commit b615316168f4d33311909d4056b236d13c69488f
2774         * src/gpgme.h.in (_GPGME_DEPRECATED): Change to take versio numbers
2775         for documentation.  Change all places.
2776         (_GPGME_DEPRECATED_OUTSIDE_GPGME): Ditto.
2777         * lang/python/gpgme-h-clean.py: Adjust RE.
2778
2779         core: Map GPGME_STATUS_EOF to the empty string.
2780         + commit 3d6340e8c59ee11a95e03fb213ad9b228be47833
2781         * src/status-table.c (_gpgme_status_to_string): Return "" for EOF.
2782         * src/engine-gpg.c (read_status): Ditto.  The old code accidently used
2783         GPGME_STATUS_EOF which is the integer 0 and neiteyr NULL nor a string.
2784
2785 2016-09-16  Justus Winter  <justus@g10code.com>
2786             Kai Michaelis  <kai@gnupg.org>
2787
2788         python: Release the GIL during calls into GPGME.
2789         + commit 6af7bee076bacbc0cdfe7de342bce43ca5671b3b
2790         * lang/python/helpers.c (pyme_raise_callback_exception): Re-acquire
2791         the Global Interpreter Lock.
2792         (pyPassphraseCb, pyme_set_passphrase_cb, pyProgressCb,
2793         pyme_set_progress_cb, pyStatusCb, pyme_set_status_cb,
2794         _pyme_interact_cb, pyDataReadCb, pyDataWriteCb, pyDataSeekCb,
2795         pyDataReleaseCb, pyme_data_new_from_cbs, _pyme_assuan_data_cb,
2796         _pyme_assuan_inquire_cb, _pyme_assuan_status_cb): Likewise.
2797         * lang/python/setup.py.in: Make 'gpgme-config' emit the correct
2798         cflags, and SWIG generate code to release the GIL before calling us.
2799
2800 2016-09-16  Justus Winter  <justus@g10code.com>
2801
2802         python: Adapt to 'gpgme_op_interact'.
2803         + commit a458e7fe2006d92bd5a838e2747fb66bbac4b1b8
2804         * lang/python/examples/inter-edit.py: Update example.
2805         * lang/python/gpgme.i (gpgme_edit_cb_t): Turn into
2806         'gpgme_interact_cb_t'.
2807         * lang/python/helpers.c (_pyme_edit_cb): Turn into
2808         '_pyme_interact_cb_t'.
2809         * lang/python/private.h (_pyme_edit_cb): Likewise.
2810         * lang/python/pyme/constants/__init__.py: Replace numeric status codes
2811         with the keywords.
2812         * lang/python/pyme/constants/status.py: Likewise.
2813         * lang/python/pyme/core.py (Context.interact): New method.
2814         (Context.op_edit): Deprecate, update docstring, implement using
2815         Context.interact.
2816         * lang/python/tests/t-edit.py: Test both interfaces.
2817
2818 2016-09-16  Werner Koch  <wk@gnupg.org>
2819
2820         core: Remove stub to try implementing gpg < 2.1 support for createkey.
2821         + commit 268e251b802cc7c19831722d7e3a52777a0f412f
2822         * src/engine-gpg.c (gpg_createkey_legacy): Remove.
2823         (gpg_genkey): Remove call.
2824
2825         core: Fix setting og the verification result.
2826         + commit 1f9641dd0fb08e4a3df3b507b974a3f78887920f
2827         * src/verify.c (parse_new_sig): Proberly handle the RC in an ERRSIG
2828         status.
2829
2830 2016-09-15  Werner Koch  <wk@gnupg.org>
2831
2832         core: New function gpgme_op_interact, deprecate gpgme_op_edit.
2833         + commit ed1f2700a73060e2615697491ea9e49ded4293e6
2834         * src/gpgme.h.in (gpgme_interact_cb_t): New.
2835         (GPGME_INTERACT_CARD): New.
2836         (gpgme_op_interact_start, gpgme_op_interact): New.
2837         * src/libgpgme.vers, src/gpgme.def: Add new functions.
2838         * src/edit.c (op_data_t): Rename fnc to fnc_old and change users.  Add
2839         fnc.
2840         (edit_status_handler): Call old or new callback.
2841         (command_handler): Ditto.
2842         (interact_start): New.
2843         (gpgme_op_interact_start, gpgme_op_interact_start): New.
2844         * src/status-table.c (_gpgme_status_to_string): New.
2845
2846         * tests/gpg/t-edit.c (edit_fnc): Rename to interact_fnc and change
2847         type of STATUS.  Use gpgme_io_writen.
2848         (main): s/gpgme_op_edit/gpgme_op_interact/.
2849
2850         core: Minor change of the gpgme_op_edit semantics.
2851         + commit d2b72d3cc19fe2a7d548dac38d55e069e0c9a904
2852         * src/edit.c (command_handler): Handle special error code.
2853         * src/engine-gpg.c (read_status): Ditto.
2854         * src/engine-gpgsm.c (status_handler): Ditto.
2855         * src/engine-uiserver.c (status_handler): Ditto.
2856         * src/util.h (GPG_ERR_FALSE): Define for older libgpg-error versions.
2857
2858 2016-09-14  Werner Koch  <wk@gnupg.org>
2859
2860         core: New function gpgme_op_tofu_policy.
2861         + commit 7c37719d79345a665ec2f4570e3f257033b58c62
2862         * src/gpgme.h.in (gpgme_op_tofu_policy_start): New function.
2863         (gpgme_op_tofu_policy): New function.
2864         * src/libgpgme.vers, src/gpgme.def: Add new functions.
2865         * src/tofupolicy.c: New.
2866         * src/Makefile.am (main_sources): Add that file.
2867         * src/context.h (ctx_op_data_id_t): Add OPDATA_TOFU_POLICY.
2868         * src/engine.c (_gpgme_engine_op_tofu_policy): New.
2869         * src/engine-backend.h (engine_ops): Add funcptr 'tofu_policy'.
2870         Adjust all engine initializations.
2871         * src/engine-gpg.c (gpg_tofu_policy): New.
2872         (_gpgme_engine_ops_gpg): Register this function.
2873
2874         * tests/run-tofu.c: New.
2875         * tests/Makefile.am (noinst_PROGRAMS): Add it.
2876
2877         core: Defer implementation of gpgme_op_createkey with gpg < 2.1.
2878         + commit d79dcb78d867aaf55b85aea117c4ae6035a1531a
2879         * src/engine-gpg.c (gpg_createkey_legacy): Mark unused variables.
2880
2881         core: New function gpgme_op_keysign.
2882         + commit bfd2bd0ccc9fed8284ef932ac788d4ca0dba0336
2883         * src/gpgme.h.in (gpgme_op_keysign_start, gpgme_op_keysign): New.
2884         (GPGME_KEYSIGN_LOCAL): New.
2885         (GPGME_KEYSIGN_LFSEP): New.
2886         (GPGME_KEYSIGN_NOEXPIRE): New.
2887         * src/context.h (ctx_op_data_id_t): Add OPDATA_KEYSIGN.
2888         * src/keysign.c: New.
2889         * src/Makefile.am (main_sources): Add keysig.
2890         * src/libgpgme.vers, src/gpgme.def: Add gpgme_op_keysign_start.
2891         * src/engine.c (_gpgme_engine_op_keysign): New.
2892         * src/engine-backend.h (engine_ops): Add 'keysign' and adjust all
2893         engine initializers.
2894         * src/engine-gpg.c (_add_arg): Add args PREFIX and ARGLEN and change
2895         callers to set them.
2896         (add_arg_pfx): New.
2897         (add_arg_len): New.
2898         (gpg_keysign): New.
2899         (_gpgme_engine_ops_gpg): Set keysign to gpg_keysign.
2900         * tests/run-keysign.c: New.
2901         * tests/Makefile.am (noinst_PROGRAMS): Add run-keysign.
2902
2903 2016-09-14  Justus Winter  <justus@g10code.com>
2904
2905         python: Clarify that we support Python 2.7 too.
2906         + commit 594c3b8b052e60b6be77ed532fe46549133a9726
2907         * lang/python/README: Use 'Python' instead of 'Python 3'.
2908         * lang/python/pyme/version.py.in: Likewise.
2909         * lang/python/setup.py.in: Add classifier for 2.7, drop 3 only.
2910
2911         python: Trim imports.
2912         + commit 4011b2b2a1050f0837e989da3db9b5459e71ccd6
2913         * lang/python/examples/encrypt-to-all.py: Drop unused import of 'os'.
2914         * lang/python/examples/signverify.py: Likewise.
2915         * lang/python/examples/simple.py: Likewise.
2916         * lang/python/examples/verifydetails.py: Likewise.
2917
2918         python: Improve error handling.
2919         + commit 44d18200d5ffe8691e18d93ce6c534660702b982
2920         * lang/python/gpgme.i (gpgme_engine_info_t): Improve error handling.
2921
2922         python: Adapt to TOFU changes.
2923         + commit f6cd560ca74248dd719a37cfb34386148727a92d
2924         * lang/python/pyme/results.py (TofuInfo): Drop.
2925         (Signature): The TOFU information moved to the key.
2926
2927         python: Improve build system integration.
2928         + commit 99db351288d5bb075f124ef10e540e25bc36b70a
2929         * configure.ac: Try to compile a Python module for each version.
2930         * m4/m4_ax_swig_python.m4: Drop unused file.
2931
2932 2016-09-14  Werner Koch  <wk@gnupg.org>
2933
2934         core: New function gpgme_op_revuid.
2935         + commit c943380b7a2cc9b32f81c22224fc6f92e8ea8469
2936         * src/engine.h (GENKEY_EXTRAFLAG_REVOKE): New.
2937         * src/genkey.c (adduid_start): Rename to addrevuid_start.  Add arg
2938         REVOKE and pass it as extraflags.  Remove useless ARMOR extraflag.
2939         Adjust callers.
2940         (gpgme_op_revuid_start, gpgme_op_revuid): New.
2941         * src/gpgme.def, src/libgpgme.vers: Add them.
2942
2943         * tests/run-genkey.c: Add option --revuid.
2944
2945         core: Change a parameter for the engine's genkey function.
2946         + commit c22f5884c50557f54704f4becc5a8c1ee0749547
2947         * src/engine.h (GENKEY_EXTRAFLAG_ARMOR): New.
2948         * src/engine-backend.h (engine_ops): Rename USE_ARMOR in genkey to
2949         EXTRAFLAGS.
2950         * src/engine.c (_gpgme_engine_op_genkey): Ditto.
2951         * src/engine-gpg.c (gpg_createkey_from_param): Ditto and test the
2952         flags.
2953         (gpg_createkey_legacy): Ditto.
2954         (gpg_createkey): Ditto.
2955         (gpg_addkey): Ditto.
2956         (gpg_genkey): Ditto.
2957
2958 2016-09-14  Justus Winter  <justus@g10code.com>
2959
2960         python: Build for both Python2 and Python3.
2961         + commit 24b4162d908b48a92660020be0b776c2874fb05a
2962         * NEWS: Update.
2963         * configure.ac: Check for multiple Python versions.
2964         * lang/python/Makefile.am: Build and install for both Python versions.
2965         * lang/python/tests/Makefile.am: Test both versions.
2966         * lang/python/tests/run-tests.py: New test runner.
2967
2968 2016-09-14  Werner Koch  <wk@gnupg.org>
2969
2970         core: New function gpgme_op_adduid.
2971         + commit 3210f3e4725afc5ee2810b9a1361918ec9c42ca4
2972         * src/genkey.c: Replace most error codes GPG_ERR_INV_VALUE by
2973         GPG_ERR_INV_ARG.
2974         (struct op_data_t): Add field UIDMODE.
2975         (genkey_status_handler): Use UIDMODE.
2976         (adduid_start): New.
2977         (gpgme_op_adduid_start, gpgme_op_adduid): New.
2978         * src/gpgme.def, src/libgpgme.vers: Add them.
2979         * tests/run-genkey.c: Add option --adduid.
2980
2981         core: New function gpgme_op_createsubkey.
2982         + commit cc353701b0fde4c811ddc1e9a91b852dfe9f4e06
2983         * src/genkey.c (createsubkey_start): New.
2984         (gpgme_op_createsubkey_start, gpgme_op_createsubkey): New.
2985         * src/gpgme.def, src/libgpgme.vers: Add them.
2986         * src/engine-gpg.c (gpg_createkey): Factor some code out to ...
2987         (gpg_add_algo_usage_expire): new.
2988         (gpg_addkey): Implement.
2989         * tests/run-genkey.c: Add option --addkey.
2990
2991 2016-09-13  Werner Koch  <wk@gnupg.org>
2992
2993         core: Use const char * where appropriate.
2994         + commit 51f9acbca935c5287d9a28205037b0923e9a65f5
2995
2996
2997         core: Cast away the common const problem with spawn and argv.
2998         + commit 686a065f639ef006e33c164e282d787bcd169754
2999         * src/dirinfo.c (read_gpgconf_dirs): Use a cast to assignd to ARGV.
3000
3001         core: Fix condition-always-true warning in trace macro.
3002         + commit 3009e6162eaa39adaaf45f06fc4f88c7153360ee
3003         * src/data-compat.c (old_user_read): Cast AMT.
3004
3005         core: Mark unused function args.
3006         + commit 4a200146b602349eebb4eac2e102357748d7ba5b
3007
3008
3009         tests: Mark lots of unused vars and fix const mismatches.
3010         + commit 9064eebdc05e7149c2c8cc899fbd7874622fb769
3011
3012
3013         tests: Use gpgme_io_write in passhrase callbacks.
3014         + commit 4491ef0a9a15d3b307d1ade37ff620ef9fcb2478
3015         * tests/gpg/t-support.h (passphrase_cb): Use gpgme_io_write.
3016         * tests/gpgsm/t-support.h (passphrase_cb): Ditto.
3017         * tests/run-support.h (passphrase_cb): Ditto.
3018
3019         core: Do not pass const char* to functions taking a char*.
3020         + commit 3972f476e00f27d41a0aeabcb66600905b6737bd
3021
3022
3023         build: Use more compiler warnings.
3024         + commit 0510591c36591816a6ff3f87a04451001b7ed46f
3025         * configure.ac: Add useful compiler warnings.
3026
3027         core: New function gpgme_op_create_key.
3028         + commit 00c501d296da287bec2fd6a0e3912abfbde90a98
3029         * src/engine-backend.h (engine_ops): Change prototype of genkey.
3030         * src/engine-gpgsm.c (gpgsm_genkey): Change accordingly.
3031         * src/engine-gpg.c (gpg_genkey): Change it to a dispatcher.
3032         (gpg_createkey_from_param): New for the old functionality.
3033         (gpg_createkey_legacy): New.  Stub for now.
3034         (gpg_createkey): New.
3035         (gpg_addkey): New.  Stub for now.
3036         (gpg_adduid): New.  Stub for now.
3037         * src/engine.c (_gpgme_engine_op_genkey): Add new args.
3038         * src/genkey.c (op_data_t): Add field ERROR_CODE.
3039         (parse_error): New.
3040         (genkey_status_handler): Parse ERROR status line.
3041         (genkey_start): Use NULL/0 for the new args.
3042         (createkey_start): New.
3043         (gpgme_op_createkey_start, gpgme_op_createkey): New.
3044         * src/gpgme.def, src/libgpgme.vers: Add gpgme_op_createkey_start and
3045         gpgme_op_createkey.
3046         * src/gpgme.h.in (_gpgme_op_genkey_result): Add fields PUBKEY and
3047         SECKEY.
3048         (GPGME_CREATE_SIGN): New.
3049         (GPGME_CREATE_ENCR): New.
3050         (GPGME_CREATE_CERT): New.
3051         (GPGME_CREATE_AUTH): New.
3052         (GPGME_CREATE_NOPASSWD): New.
3053         (GPGME_CREATE_SELFSIGNED): New.
3054         (GPGME_CREATE_NOSTORE): New.
3055         (GPGME_CREATE_WANTPUB): New.
3056         (GPGME_CREATE_WANTSEC): New.
3057         (GPGME_CREATE_FORCE): New.
3058
3059         * tests/run-genkey.c: New.
3060         * tests/Makefile.am (noinst_PROGRAMS): Add it.
3061
3062 2016-09-13  Justus Winter  <justus@g10code.com>
3063
3064         python: Handle slight differences between Python 2 and 3.
3065         + commit 70a3be27a509a1b5ea7372bee93d83c5019427ff
3066         * lang/python/helpers.c (pyDataWriteCb): Handle Python integers being
3067         returned on Python 2.
3068         (pyDataSeekCb): Likewise.
3069         * lang/python/pyme/core.py (Data.__init__): Fix testing for string
3070         argument.
3071         (Data.new_from_filepart): Likewise.
3072         * lang/python/pyme/util.py (is_a_string): New function.
3073         * lang/python/tests/t-encrypt-large.py (read_cb): Force evaluation of
3074         generator.
3075         * lang/python/tests/t-idiomatic.py: Partly skip test on Python 2.
3076         * lang/python/tests/t-verify.py (check_result): Here, the difference
3077         between 2 and 3 really matters.  We cannot change the char *
3078         conversion in Python 2 without breaking all existing applications, and
3079         using bytestrings in Python 3 would be very inconvenient.
3080
3081         python: Fix types and error handling.
3082         + commit 4abff7d750a1abf5b388a4c87ec321fc3e4aed10
3083         * lang/python/helpers.c (_pyme_edit_cb): Drop the const.
3084         (_pyme_assuan_{data,inquire,status}_cb): Fix error handling.
3085
3086 2016-09-12  Justus Winter  <justus@g10code.com>
3087
3088         python: Avoid Python3-only form of super().
3089         + commit c0c50318bd8ef6c8119ad9fdc53ad9087ded4c32
3090         * lang/python/pyme/core.py (GpgmeWrapper.__repr__): Use more
3091         compatible form of super.
3092         (GpgmeWrapper.__setattr__): Likewise.
3093         (Context.__init__): Likewise.
3094         (Data.__init__): Likewise.
3095
3096         python: Make type translation compatible with Python 2.7.
3097         + commit 1d5bbbf1185a0d1f82750f10b69dad3999f7ef4c
3098         * lang/python/gpgme.i: Avoid functions not available in Python 2.7.
3099         * lang/python/helpers.c: Likewise.
3100
3101         python: Avoid hardcoding the interpreter.
3102         + commit 70999d81618b3d3ae6b61a43be2ce703ad284275
3103         * lang/python/setup.py.in: Avoid hardcoding the interpreter.
3104
3105         python: Do not rely on subprocess.DEVNULL.
3106         + commit b48b852a846129914d6c63ec7b47388cdcf6acca
3107         * lang/python/setup.py.in: Do not rely on subprocess.DEVNULL.
3108
3109         tests: Fix version comparison.
3110         + commit dfd99ab50c3bc1d6745b6f682791e4885e8d8a9a
3111         * tests/gpg/t-sig-notation.c: Fix version comparison.
3112
3113         tests: Make signature notation test compatible with older GnuPGs.
3114         + commit a0263ad282d350b548cbbc27e96f196d9217d040
3115         * lang/python/tests/t-sig-notation.py: Only check the critical flag
3116         when GnuPG >= 2.1.13 is used.
3117         * tests/gpg/t-sig-notation.c: Likewise.
3118
3119 2016-09-12  Andre Heinecke  <aheinecke@intevation.de>
3120
3121         qt: Fix some includes.
3122         + commit d480f6b701894f78f3f4016d69c0e3b87939930b
3123         * lang/qt/src/qgpgmekeyformailboxjob.cpp: Explicitly include
3124         QStringList.
3125         * lang/qt/tests/t-support.h, lang/qt/tests/t-support.cpp: Move
3126         includes into impl. Explicitly include QDir.
3127
3128 2016-09-12  Justus Winter  <justus@g10code.com>
3129
3130         qt: Fix tofu test.
3131         + commit 7b9e6ea376d04fb4694ed22369abaae92ce3ec86
3132         * lang/qt/tests/t-tofuinfo.cpp: Adjust member names.
3133
3134 2016-09-07  Werner Koch  <wk@gnupg.org>
3135
3136         core,cpp: Extend the TOFU information.
3137         + commit 120b14783c0312d782dc08ce4949a6209d5ccc7b
3138         * src/gpgme.h.in (struct _gpeme_tofu_info): Rename FIRSTSEEN to
3139         SIGNFIRST and LASTSEEN to SIGNLAST.  Add ENCRFIST and ENCRLAST.
3140         * src/keylist.c (parse_tfs_record): Parse to ENCRFIRST and ENCRLAST.
3141         * src/verify.c (parse_tofu_stats): Ditto.
3142         * tests/run-keylist.c (main): Adjust and print encrypt stats.
3143         * tests/run-verify.c (print_result): Ditto.
3144
3145         * lang/cpp/src/tofuinfo.h (TofuInfo): Rename firstSeen to signFirst
3146         and lastSeen to signLast.  Add encrCount, encrFirst and encrLast.
3147         * lang/cpp/src/tofuinfo.cpp (encrCount, encrFirst, encrLast): New.
3148
3149 2016-09-06  Andre Heinecke  <aheinecke@intevation.de>
3150
3151         tests: Set passphrase cb in t-encrypt-mixed.
3152         + commit 151da95470f174dc770b2111890ad650a1697276
3153         * tests/gpg/t-encrypt-mixed.c (main): Set passphrase cb.
3154
3155         core: Check for gpg version for loopback mode.
3156         + commit e8cb143c8337b122a6790f769ddb0a97c4baccd3
3157         * src/engine-gpg.c (build_argv): Check for version 2.1.0
3158         before adding pinentry-mode.
3159
3160         core: Fix passphrase cb for mixed sym encrypt.
3161         + commit efe7e11dfa2ff911b477ce748292e53e7a50347e
3162         * src/encrypt.c (encrypt_start): Handle SYMMETRIC flag.
3163         * src/encrypt-sign.c (encrypt_sign_start): Ditto.
3164
3165 2016-09-05  Andre Heinecke  <aheinecke@intevation.de>
3166
3167         qt: Clarify comment and strings in tofuinfo test.
3168         + commit ab3fbdbd05cfd1b039bb5b1eb3941fbb4bcf6307
3169         * lang/qt/tests/t-tofuinfo.cpp (testTofuSignCount)
3170         (testTofuKeyList): Ensure distinct messages. Clarify comment.
3171
3172         qt: Enable signcount checks in tofuinfo test.
3173         + commit 965b842fad6ec6fbd8902f3a32119abcd0728fe4
3174         * lang/qt/tests/t-tofuinfo.cpp: Enable checks for signcount.
3175
3176         cpp: Add convenience update function to a key.
3177         + commit 79439e76cc5b302222874a1f9e93665cb12801ac
3178         * lang/cpp/src/key.cpp (Key::update): New.
3179         * lang/cpp/src/key.h: Update accordingly.
3180
3181         cpp: Add ostream operators for key and uid.
3182         + commit 444d85ace0dddff5c511961927052d9946035b00
3183         * lang/cpp/src/key.cpp (Key, UserID): Add ostream operator.
3184         * lang/cpp/src/key.h: Update accordingly.
3185
3186         qt: Add missing header redirection.
3187         + commit 8a39a595eb802b80a6ad756b0ee8939e9733e86f
3188         * lang/qt/src/keyformailboxjob.h,
3189         lang/qt/src/qgpgmekeyformailboxjob.h: Fix includes.
3190
3191         qt: Include cpp before core directory.
3192         + commit e3a4697894cc5a93c295e84bb10c743bc7fdc87e
3193         * lang/qt/src/Makefile.am (AM_CPPFLAGS): Include cpp before core.
3194
3195 2016-08-25  Andre Heinecke  <aheinecke@intevation.de>
3196
3197         qt: Fix 2.1 t-support copy.
3198         + commit 05570bd3d05fb3d7934c1122f0d5ef5fdbaa7974
3199         * lang/qt/src/t-support.cpp (copyKeyring): Fix seckey copy.
3200
3201         qt: Fix and extend TofuInfo test.
3202         + commit 9fc72e928bf2cf239bd3b0facdf33ceb1acc975b
3203         * lang/qt/tests/t-tofuinfo.cpp: Delete executed jobs.
3204         (testTofuKeyList): New.
3205         (testSupported): Activate for 2.1.16
3206         (signAndVerify): Disable sigcount tests.
3207
3208         qt: Fix keyring copy in tests.
3209         + commit c875f07e559a7c53fc173b4c3f9f5715f3fbb8f8
3210         * lang/qt/test/t-encrypt.cpp,
3211         lang/qt/test/t-tofuinfo.cpp: Assert on copy failure.
3212         * lang/qt/test/t-support.cpp (copyKeyrings): Fix path.
3213
3214         qt: Add generic flag support for keylistjobs.
3215         + commit 4e37d0bb1255558ce20e1a5ac83a2d06a37f8b0b
3216         * lang/qt/src/keylistjob.h (addMode): New.
3217         * lang/qt/src/qgpgmekeylistjob.h (addMode): New.
3218         * lang/qt/src/qgpgmekeylistjob.cpp (addMode: New.
3219
3220         qt: Ensure that current src dir is included first.
3221         + commit 5a92cc96da183ebb19867a2a910f53ba41e76ae9
3222         * lang/qt/src/Makefile.am: Reorder include directives.
3223
3224         cpp: Add WithTofu Keylist Mode.
3225         + commit f311b92ceaedb12c9e00a722b6b47bbe6b50871e
3226         * lang/cpp/src/context.cpp: Handle WithTofu.
3227         * lang/cpp/src/global.h (KeyListMode): Add WithTofu.
3228         * lang/cpp/src/util.h (add_to_gpgme_keylist_mode_t): Handle WithTofu.
3229
3230         qt: Fix tofuinfo test when gpg is gpg2.
3231         + commit 053e6e0a7b8ea38ad9d4160c84814867bbb9fcf6
3232         * lang/qt/tests/t-support.cpp (QGpgMETest::copyKeyrings): New helper.
3233         * lang/qt/tests/t-support.h: Declare.
3234         * lang/qt/tests/t-encrypt.cpp: use it
3235         * lang/qt/tests/t-tofuinbo.cpp: ditto.
3236
3237         qt: Remove unused variable in test.
3238         + commit f08904b810d77d87c66d9c7875c4e7f2bde5dd92
3239         * t-wkspublish.cpp (testWKSPublishCreate): Remove context.
3240
3241         qt: Add test for wkspublishjob.
3242         + commit df04b232b8897f030534f8c3fbc87064edf8ae7d
3243         * lang/qt/tests/t-wkspublish.cpp: New.
3244         * lang/qt/tests/Makefile.am: Update accordingly.
3245
3246         qt: Add WKSPublishJob.
3247         + commit 94420b05775122b25885c66ac67f77c59d01644d
3248         * lang/qt/src/Makefile.am: Add new files.
3249         * lang/qt/src/job.cpp: Include moc / subclass stub.
3250         * lang/qt/src/protocol.h: Add virtual for new job.
3251         * lang/qt/src/protocol_p.h: Add job.
3252         * lang/qt/src/wkspublishjob.h: Interface for WKSPublishJob.
3253         * lang/qt/src/qgpgmewkspublishjob.cpp,
3254         lang/qt/src/qgpgmewkspublishjob.h: New.
3255
3256         Cpp: Change firstSeen / lastSeen return values.
3257         + commit de7b67f9b2e6bd43a036fa0bcc6a8ca4f5b10986
3258         * lang/cpp/src/tofuinfo.cpp,
3259         lang/cpp/src/tofuinfo.h (TofuInfo::firstSeen, TofuInfo::lastSeen):
3260         Change return values to unsigned long and update doc.
3261
3262         Cpp: Add wrapper for gpgme_get_dirinfo.
3263         + commit abcd9a283ee8f81870622c8e1dbdc7aad38c0358
3264         * lang/cpp/src/context.cpp (dirInfo): New.
3265         * lang/cpp/src/global.h (dirInfo): New.
3266
3267         Cpp: Add support for spawn engine.
3268         + commit ece8b02a839d6fc566fea7b6e59fabff164f6cf5
3269         * lang/cpp/src/context.cpp (Context::spawn, Context::spawnAsync): New.
3270         * lang/cpp/src/context.h: Add prototypes.
3271         (SpawnFlags): New.
3272         * lang/cpp/src/global.h (SpawnEngine): Added.
3273
3274 2016-08-25  Werner Koch  <wk@gnupg.org>
3275
3276         core: Add GPGME_KEYLIST_MODE_WITH_TOFU.
3277         + commit 9ee103957e4136337b92d238283f8ef30fd4a7c5
3278         * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_TOFU): New.
3279         * src/engine-gpg.c (gpg_keylist_build_options): Use that.
3280         * src/keylist.c: Include limits.h.
3281         (parse_tfs_record): New.
3282         (keylist_colon_handler): Support TFS record.
3283         * tests/run-keylist.c: Include time.h.
3284         (isotimestr): New.
3285         (main): Add option --tofu.  Print TOFU info.
3286         * tests/run-verify.c: Include time.h.
3287         (isotimestr): New.
3288         (print_result): Use isotimestr for TOFU dates.
3289
3290 2016-08-24  Werner Koch  <wk@gnupg.org>
3291
3292         core: Adjust for TOFU_STATS change in gnupg 2.1.16.
3293         + commit 38798fee5b539d6153a8a7856152959412ee59b5
3294         * src/gpgme.h.in (_gpgme_tofu_info): Change 'firstseen' and 'lastseen'
3295         to a timestamp value.
3296         * src/verify.c (parse_tofu_stats): Do not cap these values at UINT_MAX.
3297
3298         core: Set the 'encrcount' field in gpgme_tofu_info_t.
3299         + commit 1eefc2d43c0adb2ce516f8e3509ace2fb562e401
3300         * src/verify.c (parse_tofu_stats): Set ENCRCOUNT field.
3301
3302         cpp: Get rid of AssuanResult due to its deprecation.
3303         + commit e20b0f0201543834f15c5d50cd3b2ece69a35d70
3304         * lang/cpp/src/assuanresult.cpp: Remove.
3305         * lang/cpp/src/assuanresult.h: Remove.
3306         * lang/cpp/src/Makefile.am: Remove these files.
3307         * lang/cpp/src/context.cpp: Remove header assuanresult.h
3308         (assuanTransact): Change return type to Error.  Use
3309         gpgme_op_assuan_transact_ext.
3310         (startAssuanTransaction): Change return type to Error.
3311         (assuanResult): Remove
3312         * lang/cpp/src/context.h (assuanResult): Adjust for changes.
3313
3314 2016-08-24  Andre Heinecke  <aheinecke@intevation.de>
3315
3316         Qt: Adapt (disabled) tofuinfo test to new API.
3317         + commit d2e40fb7adf667f3e2d2457ee4c646ea4d4d88b3
3318         * lang/qt/tests/t-tofuinfo.cpp: Switch to UID based API.
3319
3320         Cpp: Add Key to signature.
3321         + commit 7c5a4974b71c30e824cbfcb3a0a70064e5ed5adb
3322         * lang/cpp/src/verificationresult.cpp,
3323         lang/cpp/src/verificationresult.h (Signature::key): New.
3324
3325         Cpp: Use fpr field for primaryFingerprint.
3326         + commit 40ea1c85773cbe324557c34b3a4282f609fcdaf6
3327         * lang/cpp/src/key.cpp (Key::primaryFingerprint): Return
3328         fpr value if available.
3329
3330 2016-08-23  Andre Heinecke  <aheinecke@intevation.de>
3331
3332         Cpp: Move tofuinfo from signature to userid.
3333         + commit 799b168243e6499ac01bf59e0656547f353a2589
3334         * lang/cpp/src/key.cpp (UserID::tofuInfo): New.
3335         * lang/cpp/src/key.h: Update accordingly.
3336         * lang/cpp/src/tofuinfo.cpp: Remove dropped fields.
3337         * lang/cpp/src/tofuinfo.h: Update accordingly.
3338         * lang/cpp/src/verificationresult.cpp,
3339         lang/cpp/src/verificationresult.h: Remove tofu info.
3340         * lang/qt/tests/t-tofuinfo.cpp: Disable for now.
3341
3342 2016-08-23  Werner Koch  <wk@gnupg.org>
3343
3344         core: Put the protocol into a TOFU created key object.
3345         + commit 2972c44bd7e97b2169dea9c4a49d9754afdae3f0
3346         * src/verify.c (parse_tofu_user): Add arg 'protocol' and store it in
3347         the KEY.
3348         (_gpgme_verify_status_handler): Pass protocol.
3349
3350         core: Change the way TOFU information are represented.
3351         + commit be4ff75d7d5ac6ed15feb245ef3cec59b4bad561
3352         * src/gpgme.h.in (struct _gpgme_signature): Remove field 'tofu'.  Add
3353         field 'key'.
3354         (struct _gpgme_key): Add field 'fpr'.
3355         (struct _gpgme_user_id): Add field 'tofu'.
3356         (struct _gpgme_tofu_info): Remove fields 'address' and 'fpr'.
3357         * src/key.c (gpgme_key_unref): Release TOFU and FPR.
3358         * src/keylist.c (keylist_colon_handler): Store the fingerprint of the
3359         first subkey also in KEY.
3360         * src/verify.c (release_tofu_info): Remove.
3361         (release_op_data): Release KEY.
3362         (parse_tofu_user): Rewrite for new data structure.
3363         (parse_tofu_stats): Ditto.
3364         (parse_tofu_stats_long): Ditto.
3365         * tests/run-verify.c (print_result): Ditto.
3366         * tests/run-keylist.c (main): Print more fields.
3367
3368         core: Extend gpgme_user_id_t with 'address'.
3369         + commit 3955dce06e9d056599e5ec7d40301e66b9305195
3370         * src/mbox-util.c, src/mbox-util.h: Adjust for use in gpgme.
3371         * src/Makefile.am (main_sources): Add mbox-util.
3372         * src/key.c (_gpgme_key_append_name): Set 'address' field of uid.
3373         (gpgme_key_unref): Free it.
3374
3375 2016-08-22  Werner Koch  <wk@gnupg.org>
3376
3377         core: New code for parsing mail addresses.
3378         + commit 26c5ba528ce1411d96655952ec48359105695c0f
3379         * src/mbox-util.c: New.
3380         * src/mbox-util.h: New.
3381
3382         core: Add new items for gpgme_get_dirinfo.
3383         + commit 24e61984c9532924135c57b8ff98489a2d3bd4a3
3384         * src/dirinfo.c (WANT_SYSCONFDIR, WANT_LIBEXECDIR, WANT_LIBDIR): New.
3385         (WANT_DATADIR, WANT_LCOALEDIR, WANT_AGENT_SSH_SOCKET): New
3386         (WANT_DIRMNGR_SOCKET): New.
3387         (dirinfo): Add fields 'sysconfdir', 'bindir', 'libexecdir', 'libdir',
3388         'datadir', 'localedir', 'agent_ssh_socket', and 'dirmngr_socket'.
3389         (parse_output): Set these fields.
3390         (get_gpgconf_item): Return them.
3391         (gpgme_get_dirinfo): Likewise.
3392
3393         core: Base gpgme_get_dirinfo(uiserver-socket) on the socket dir.
3394         + commit c9e7dcb100d807583d8e312da459561138231376
3395         * src/dirinfo.c (dirname_len): New.
3396         (parse_output): Change computation of UISRV_SOCKET.
3397
3398 2016-08-21  Werner Koch  <wk@gnupg.org>
3399
3400         core: New commands --lang and --have-lang for gpgme-config.
3401         + commit 3e60788810f93cfcd7f08e5882aff32ed7b6f831
3402         * configure.ac (GPGME_CONFIG_AVAIL_LANG): New ac_subst.
3403         * src/gpgme-config.in (avail_lang): Add commands --lang and
3404         --have-lang.
3405
3406 2016-08-18  Andre Heinecke  <aheinecke@intevation.de>
3407
3408         core: Remove (now) useless diagnostic.
3409         + commit 30f156280f18500ee522db58aecd40711c8af685
3410         * src/w32-io.c(_gpgme_io_spawn): Remove spawnhelper not found
3411         diagnostic.
3412
3413         core: Fail loudly in case w32 spawner not found.
3414         + commit 9cf983b0199950c8f8cccee2cb8e45aafcba9fd1
3415         * src/w32-io.c (_gpgme_io_spawn): Show a message box in
3416         case gpgme-w32spawn.exe not found.
3417
3418 2016-08-17  Andre Heinecke  <aheinecke@intevation.de>
3419
3420         Cpp: Fix some pedantic warnings.
3421         + commit 64194b0f8df1afe6135cd119fd3216fc8db68033
3422         * lang/cpp/src/context.cpp,
3423         lang/cpp/src/context.h (Context::getKeysFromRecipients): Remove
3424         ignored / invalid const qualifier.
3425         * lang/cpp/src/result.h: Don't shadow error function in ctor.
3426
3427 2016-08-16  Werner Koch  <wk@gnupg.org>
3428
3429         core: New global flag "require-gnupg".
3430         + commit 8c09dd9989bcd434a8cb5997770cb8414b96bd5c
3431         * src/gpgme.c (gpgme_set_global_flag): Add flag.
3432         * src/engine.c (engine_minimal_version): New variable.
3433         (_gpgme_set_engine_minimal_version): New function.
3434         (gpgme_get_engine_info): Check that flag.
3435
3436         * tests/run-keylist.c (main): New option --require-gnupg.
3437
3438         core: Simplify setting of dummy versions.
3439         + commit b7b0e7b5bfefd51c8092ea54f262b18aebf78128
3440         * src/engine.c (_gpgme_engine_info_release): Do not assert but free
3441         FILE_NAME.
3442         (gpgme_get_engine_info): Provide default for VERSION and REQ_VERSION.
3443         Use calloc instead of malloc.
3444         (_gpgme_set_engine_info): Ditto.
3445         * src/engine-assuan.c (llass_get_version): Return NULL.
3446         (llass_get_req_version): Ditto.
3447         * src/engine-spawn.c (engspawn_get_version): Ditto.
3448         (engspawn_get_req_version): Ditto.
3449         * src/engine-uiserver.c (uiserver_get_version): Ditto.
3450         (uiserver_get_req_version): Ditto.
3451
3452 2016-08-12  Andre Heinecke  <aheinecke@intevation.de>
3453
3454         Qt: Add test for progress signal of encryptjob.
3455         + commit 391e55411cda11446ca9de4dd0dc2b54d3e6fff5
3456         * lang/qt/tests/t-encrypt.cpp (testProgress): New.
3457
3458         Cpp: Provide size-hint for seekable and mem data.
3459         + commit df7bbf5a66576a5a320b54c8f6ad52bc84f0e833
3460         * lang/cpp/src/data.cpp (GpgME::Data::Data): Set size-hint for
3461         mem and DataProvider based Data.
3462
3463 2016-08-12  Werner Koch  <wk@gnupg.org>
3464
3465         core: Make use of the "size-hint" in engine-gpg.
3466         + commit fe1e8e71aa18b4ac6471292b2894b8859f42f7c8
3467         * src/engine-gpg.c: Include data.h.
3468         (add_input_size_hint): New.
3469         (gpg_decrypt, gpg_encrypt, gpg_encrypt_sign, gpg_sign)
3470         (gpg_verify): Call new function,
3471
3472         * tests/run-encrypt.c (status_cb): Print to stderr.
3473         (progress_cb): New.o
3474         (main): Add option --progress.  Print full-status lines.  Provide a
3475         size for the input data.
3476
3477         core: Add gpgme_data_set_flag to add more meta data to data objects.
3478         + commit 293d1736911fd5e77b8cec305168b35b2420c612
3479         * src/gpgme.h.in (gpgme_data_set_flag): New public function.
3480         * src/data.c (gpgme_data_set_flag): New.
3481         (_gpgme_data_get_size_hint): New.
3482         * src/data.h (strucy gpgme_data): Add field 'size_hint'.
3483         * src/gpgme.def, src/libgpgme.vers: Add new function.
3484         * src/conversion.c (_gpgme_string_to_off): New.
3485
3486 2016-08-12  Andre Heinecke  <aheinecke@intevation.de>
3487
3488         Qt: Fix defaultkeygenerationjob build.
3489         + commit 75c974c4e0a31981325f7d151bd13f2523f5df20
3490         * lang/qt/src/defaultkeygenerationjob.cpp: Include moc.
3491
3492 2016-08-11  Andre Heinecke  <aheinecke@intevation.de>
3493
3494         Qt: Add DefaultKeyGenerationJob.
3495         + commit 105f5446e69db00291164397cf0d8e68374cf420
3496         * lang/qt/src/defaultkeygenerationjob.cpp,
3497         lang/qt/src/defaultkeygenerationjob.h: New.
3498         * lang/qt/src/Makefile.am: Update accordingly.
3499
3500         Qt: Ensure all public classes are exported.
3501         + commit 59e2251a083b0ed61b3ab6d47015cef7cc6ceb05
3502         * src/abstractimportjob.h,
3503         src/cryptoconfig.h,
3504         src/deletejob.h,
3505         src/exportjob.h,
3506         src/importfromkeyserverjob.h,
3507         src/importjob.h,
3508         src/keygenerationjob.h,
3509         src/keylistjob.h,
3510         src/listallkeysjob.h,
3511         src/refreshkeysjob.h,
3512         src/signencryptjob.h,
3513         src/specialjob.h,
3514         src/verifydetachedjob.h: Export classes.
3515
3516         Qt: Add KeyForMailboxJob.
3517         + commit 8c5abc8d932affab4bc79a85e3f98f6f6b982ae8
3518         * lang/qt/src/job.cpp: Include moc and make subclass.
3519         * lang/qt/src/keyformailboxjob.h,
3520         lang/qt/src/qgpgmekeyformailboxjob.cpp,
3521         lang/qt/src/qgpgmekeyformailboxjob.h: New.
3522         * lang/qt/tests/run-keyformailboxjob.cpp: New manual test.
3523         * lang/qt/tests/Makefile.am: Add run-keyformailboxjob.
3524         * lang/qt/src/Makefile.am: Update accordingly.
3525         * lang/qt/src/protocol.h, lang/qt/src/protocol_p.h: Add
3526         keyformailboxjob.
3527
3528 2016-08-10  Werner Koch  <wk@gnupg.org>
3529
3530         doc: Get rid of version.texi.
3531         + commit b7d99e02188b7907b09fec3032fc1fd82fc2668a
3532         * configure.ac (CC_FOR_BUILD): New.
3533         * doc/mkdefsinc.c: New.  Taken from GnuPG and modified for gpgme.
3534         * doc/Makefile.am (EXTRA_DIST): Add defsincdate and mkdefsinc.c
3535         (BUILT_SOURCES): new.
3536         (gpgme.texi): New dependency.
3537         (mkdefsinc, defsincdate, defs.inc): New rules.
3538         (dist-hook): New.
3539         * doc/gpgme.texi: Include defs.inc.  Remove version.texi.
3540
3541         build: Declare all languages for make dist.
3542         + commit 48691db97b759d67aa7b49c36bb704b5806ade2e
3543         * lang/Makefile.am (DIST_SUBDIRS): New.
3544
3545         core: Do not identify PNG files as PGP signatures.
3546         + commit a9168185ba97aa1d827315cd8017899bf904aded
3547         * src/data-identify.c (next_openpgp_packet): Blacklist PNG files.
3548
3549 2016-08-10  Andre Heinecke  <aheinecke@intevation.de>
3550
3551         Cpp: Handle empty recipients consistently.
3552         + commit 09667a6006986a782af98ca1de4d6521e1b8f353
3553         * lang/cpp/src/context.cpp (Context::getKeysFromRecipients):
3554         New helper.
3555         (Context::encrypt, Context::startEncryption, Context::signAndEncrypt)
3556         (Context::startCombinedSigningAndEncryption): Use new helper.
3557         * lang/cpp/src/context.h (Context::getKeysFromRecipients): Add
3558         as private helper.
3559
3560         core: Handle ENCRYPT_SYMMETRIC also for sig & enc.
3561         + commit b602d8bc7bd726afb52dc60cc07e4609e88d4511
3562         * src/engine-gpg.c (gpg_encrypt_sign): Handle ENCRYPT_SYMMETRIC
3563         flag.
3564
3565         Qt: Remove unused variable.
3566         + commit d467018ce36f5be36751267c3b6079e8c1ee5d8a
3567         * lang/qt/src/qgpgmerefreshkeysjob.cpp (slotStatus): Remove
3568         unused variable typ.
3569
3570         Qt: Create TestPassphraseProvider on stack.
3571         + commit a27d7755d071aad42efc2aa4ea3899ba7b17f8bf
3572         * lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp: Create
3573         TestPassphraseProvider on stack.
3574
3575         Cpp: Clarify ownership of provider classes.
3576         + commit 21d5e71d486da8e37cf53f2b968646b39a6daa72
3577         * lang/cpp/src/context.h: Note that the context does not take
3578         ownership of providers.
3579
3580 2016-08-10  Justus Winter  <justus@g10code.com>
3581
3582         tests: Fix memory leak.
3583         + commit 04f994d5db6db0575dc73c2356c7d51424e2d9fe
3584         * tests/gpg/t-encrypt-mixed.c (main): Free 'text2'.
3585
3586 2016-08-10  Andre Heinecke  <aheinecke@intevation.de>
3587
3588         core: Ensure err is initalized in gpg_encrypt.
3589         + commit 270887309f4b673b13e58c29ea3989c56989590e
3590         * src/engine-gpg.c (gpg_encrypt): Initialize err.
3591
3592         Qt: Fix t-keylist moc include.
3593         + commit 0c222e1b3cabe1a8b84a2877420cdd5df56171b5
3594         * lang/qt/tests/t-keylist.cpp: Don't include t-support.moc
3595
3596 2016-08-09  Andre Heinecke  <aheinecke@intevation.de>
3597
3598         Qt: Clean up debug output in tests.
3599         + commit 969f223d8de21d7c8b0f7646bbf8dbb5864e8d03
3600         * lang/qt/tests/t-support.cpp: Remove accidentally commited
3601         debug output.
3602
3603         Qt: Add encryption test and refactor testsuite.
3604         + commit f209ec8f581ae597b37f2e3a5e452e4b53b2d4c7
3605         * lang/qt/tests/Makefile.am: Add t-encrypt and t-support.
3606         * lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.c (QGpgMETest):
3607         New. Class to handle common cleanup / init.
3608         * lang/qt/tests/t-keylist.cpp,
3609         lang/qt/tests/t-keylocate.cpp,
3610         lang/qt/tests/t-ownertrust.cpp,
3611         lang/qt/tests/t-tofuinfo.cpp: Inherit QGpgMETest.
3612         * lang/qt/tests/t-encrypt.cpp: New. Test Symetric and Asymectric
3613         encryption. Mixed encryption test is disabled.
3614
3615         Qt: Add support for EncryptJobs with generic flags.
3616         + commit 34b456c3fb9e59788b07a75441da482bb28bda87
3617         * lang/qt/src/encryptjob.h, lang/qt/src/signencryptjob.h,
3618         lang/qt/src/qgpgmeencryptjob.h, lang/qt/src/qgpgmeencryptjob.cpp,
3619         lang/qt/src/qgpgmesignencryptjob.cpp,
3620         lang/qt/src/qgpgmeencryptjob.cpp: Add start and exec overloads
3621         that accept generic EncryptFlags.
3622
3623         Cpp: Add support for all EncryptionFlags.
3624         + commit 17372393798ea5e2d6838f3dd1e001dd4a66c941
3625         * lang/cpp/src/context.h (EncryptionFlags): Extend.
3626         * lang/cpp/src/context.cpp (encryptflags2encryptflags): Ditto.
3627
3628         Cpp: Fix simple symmetric encryption.
3629         + commit bf776ce94cf454f1b3f1645b1cde09cd1c54324b
3630         * lang/cpp/src/context.cpp (Context::encrypt): If no recipients
3631         are provided encrypt with NULL and not an empty array.
3632
3633         core: Add support for mixed symmetric and asym enc.
3634         + commit 3d2f027d0f40e7ec4ab48cee89ff0ee10b423566
3635         * src/gpgme.h.in (gpgme_encrypt_flags_t): New flag
3636         GPGME_ENCRYPT_SYMMETRIC.
3637         * src/engine-gpg.c (gpg_encrypt): Also add --symmetric if the flag
3638         is given.
3639         * NEWS: Mention new flag.
3640         * tests/run-encrypt.c (show_usage): Extend for --symmetric.
3641         (main): Handle --symmetric.
3642         (main): Set passphrase_cb in loopback mode.
3643         (main): Fix encrypt call if no recipients are given.
3644         * tests/gpg/t-encrypt-mixed.c: New.
3645         * tests/gpg/Makefile.am (c_tests): Add new test.
3646         * doc/gpgme.texi: Document new flag.
3647
3648 2016-08-08  Werner Koch  <wk@gnupg.org>
3649
3650         core: Let GPGME_PROTOCOL_ASSUAN pass Assuan comments through.
3651         + commit b5e16b036f0045524a583d8a366d8a3366fc0005
3652         * src/engine-assuan.c (llass_new): Set ASSUAN_CONVEY_COMMENTS,
3653
3654 2016-08-08  Andre Heinecke  <aheinecke@intevation.de>
3655
3656         Prepend LD_LIBRARY_PATH for python tests.
3657         + commit ab6f66d676581cb497e581e4af40e2fe5bff507b
3658         * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Prepend path
3659         instead of setting the value.
3660
3661 2016-08-05  Justus Winter  <justus@g10code.com>
3662
3663         python: Clean up and modernize examples.
3664         + commit 2a613e87156b23c4aa6aa5ce38505cb285de6a18
3665         * lang/python/examples/Examples.rst: Delete file.
3666         * lang/python/examples/t-edit.py: Likewise.  This is actually a test
3667         case and has been moved to 'tests'.
3668         * lang/python/examples/assuan.py: New file.
3669         * lang/python/examples/decryption-filter.py: Likewise.
3670         * lang/python/examples/delkey.py: Modernize.
3671         * lang/python/examples/encrypt-to-all.py: Likewise.
3672         * lang/python/examples/exportimport.py: Likewise.
3673         * lang/python/examples/genkey.py: Likewise.
3674         * lang/python/examples/inter-edit.py: Likewise.
3675         * lang/python/examples/sign.py: Likewise.
3676         * lang/python/examples/signverify.py: Likewise.
3677         * lang/python/examples/simple.py: Likewise.
3678         * lang/python/examples/testCMSgetkey.py: Likewise.
3679         * lang/python/examples/verifydetails.py: Likewise.
3680
3681 2016-08-04  Werner Koch  <wk@gnupg.org>
3682
3683         core: Extend gpgme_subkey_t to carry the keygrip.
3684         + commit 6f3dc66634e30d86aa6250c4ac22f9b8f7ec1be9
3685         * src/gpgme.h.in (struct _gpgme_subkey): Add file 'keygrip'.
3686         * src/key.c (gpgme_key_unref): Free KEYGRIP.
3687         * src/keylist.c (keylist_colon_handler): Parse GRP records.
3688         * src/engine-gpg.c (gpg_keylist_build_options): Do not use
3689         --with-fingerprint options for gpg versions >= 2.1.15.
3690
3691         * tests/run-keylist.c (main): Print subkeys and keygrips.
3692
3693 2016-08-03  Justus Winter  <justus@g10code.com>
3694
3695         python: Add a nicer interface to list keys.
3696         + commit 56e26b54da9f16961209275d7a61883d3ea898ca
3697         * lang/python/pyme/core.py (Context.keylist): New method.
3698         * lang/python/tests/t-keylist.py: Test new method.
3699
3700 2016-08-02  Justus Winter  <justus@g10code.com>
3701
3702         python: Add a flag identifying in-tree builds.
3703         + commit 4c8265d32ddff5960a464b8d4e8d7d2258495b2e
3704         * lang/python/helpers.c (pyme_in_tree_build): New variable.
3705         * lang/python/helpers.h (pyme_in_tree_build): New declaration.
3706         * lang/python/pyme/version.py.in (in_tree_build): New variable.
3707         * lang/python/setup.py.in: Rework macro handling, set 'IN_TREE_BUILD'
3708         as appropriate.
3709
3710         python: Fix build system integration.
3711         + commit 0bd7d8c1977183abc414e11aafa26a4f834ca2a5
3712         * lang/python/Makefile.am: Be more careful when cleaning the build
3713         directory, we must not delete the generated file 'pyme/version.py'.
3714
3715         doc: Document the Assuan protocol.
3716         + commit 135185b7ef2225aa5e8c54a6cf1265d3e6cbbe48
3717         * doc/gpgme.texi: Document the Assuan protocol.
3718
3719 2016-07-28  Justus Winter  <justus@g10code.com>
3720
3721         python: Fix out-of-tree build.
3722         + commit 4e728de8421e2ade2061786aaebcdae3f60da3b8
3723         * lang/python/MANIFEST.in: Add 'private.h'.
3724
3725         python: Improve error handling.
3726         + commit 5a7c7a86f7e8eaf10e37138617a2d838f9d4466f
3727         * lang/python/pyme/core.py (Context.protocol): Check that the engine
3728         is usable before setting the protocol.
3729         (Context._errorcheck): Add missing functions.
3730
3731         src: Fix dummy engine versions.
3732         + commit b9e6eacd06ffeb36854c208aa4325cff3e3dfbbe
3733         Previously, 'gpgme_engine_check_version' failed for these protocols
3734         because the version parser failed to parse the dummy versions.
3735
3736         * src/engine-assuan.c (llass_get_version): Use a version triple that
3737         the parser can understand.
3738         (llass_get_req_version): Likewise.
3739         * src/engine-spawn.c (engspawn_get_version): Likewise.
3740         (engspawn_get_req_version): Likewise.
3741         * src/engine-uiserver.c (uiserver_get_version): Likewise.
3742         (uiserver_get_req_version): Likewise.
3743
3744         python: Drop superfluous imports and trim public interface.
3745         + commit 2ff58fcbd5c060dac3a7feec478819d2c5a164ec
3746         * lang/python/pyme/__init__.py: Avoid leaking low-level 'gpgme', make
3747         sure the main module looks nice and tidy, appease pyflakes.
3748         * lang/python/pyme/errors.py: Appease pyflakes.
3749         * lang/python/pyme/util.py: Avoid leaking low-level 'gpgme' into the
3750         module namespace.
3751         * lang/python/pyme/version.py.in: Likewise.
3752         * lang/python/tests/t-keylist.py: Drop superfluous imports.
3753         * lang/python/tests/t-sig-notation.py: Likewise.
3754         * lang/python/tests/t-sign.py: Likewise.
3755         * lang/python/tests/t-signers.py: Likewise.
3756
3757         python: Rename compiled SWIG module.
3758         + commit 2f754440f28e8f81babdf7efa6186edbc8ad99fd
3759         Avoid the name pygpgme, as this is the name of another popular Python
3760         binding for GPGME.
3761
3762         This commit renames the compiled Python module produced by SWIG.
3763
3764         * lang/python/Makefile.am: Rename the compiled Python module.
3765         * lang/python/gpgme.i: Likewise.
3766         * lang/python/pyme/core.py: Likewise.
3767         * lang/python/pyme/errors.py: Likewise.
3768         * lang/python/pyme/util.py: Likewise.
3769         * lang/python/pyme/version.py.in: Likewise.
3770         * lang/python/setup.py.in: Likewise.
3771
3772         python: Rename exported functions.
3773         + commit b5aa05c3b261c3846ebbcf76e7505cff5459f918
3774         Avoid the name pygpgme, as this is the name of another popular Python
3775         binding for GPGME.
3776
3777         This commit renames all functions that are exported to the Python
3778         world.
3779
3780         * lang/python/helpers.c: Rename all exported functions.
3781         * lang/python/helpers.h: Likewise.
3782         * lang/python/pyme/core.py: Likewise.
3783
3784         python: Rename private functions.
3785         + commit 1d2f22aae668ce136cacd254875e118dc1faa6a2
3786         Avoid the name pygpgme, as this is the name of another popular Python
3787         binding for GPGME.
3788
3789         This commit renames all functions that are not exported to the Python
3790         world.
3791
3792         * lang/python/gpgme.i: Rename all private functions.
3793         * lang/python/helpers.c: Likewise.
3794         * lang/python/helpers.h: Likewise.
3795         * lang/python/private.h: Likewise.  Also move the SWIG runtime helper
3796         prototypes here.
3797
3798         python: Support the Assuan engine.
3799         + commit de69fa496c09386d5e99747670d6887cf52dd09e
3800         * lang/python/gpgme.i: Add typemaps for the Assuan protocol callbacks.
3801         * lang/python/helpers.c (_pyme_assuan_{data,inquire,status}_cb): New
3802         functions.
3803         * lang/python/private.h (_pyme_assuan_{data,inquire,status}_cb): New
3804         prototypes.
3805         * lang/python/pyme/core.py (Context.assuan_transact): New method.
3806         * lang/python/pyme/util.py (percent_escape): New function.
3807         * lang/python/tests/Makefile.am (py_tests): Add new test.
3808         * lang/python/tests/t-protocol-assuan.py: New file.
3809
3810         python: Improve engine information handling.
3811         + commit 355d7072863ac1f0f725e77141a59f3ed8a5e4af
3812         * lang/python/gpgme.i (gpgme_engine_info_t): Wrap engine infos.
3813         * lang/python/pyme/core.py (Context.engine_info): New property.
3814         (Context.{g,s}et_engine_info): Improve docstrings.
3815         * lang/python/pyme/results.py (EngineInfo): New class.
3816
3817         python: Add accessors for the protocol.
3818         + commit 78f7bf4dcf75206faae5776c2ee4166628313532
3819         * lang/python/pyme/core.py (Context.__init__): Add 'protocol'
3820         parameter.
3821         (Context.protocol): New accessors.
3822
3823         python: Expose less functions to the Python world.
3824         + commit 3d4dc3f0218234a27103bdb6f93b17c0703b71a2
3825         * lang/python/Makefile.am (EXTRA_DIST, COPY_FILES): Add new file.
3826         * lang/python/gpgme.i: Include new file and add comments.
3827         * lang/python/helpers.c: Include new file.
3828         * lang/python/helpers.h: Move functions we do not need to expose...
3829         * lang/python/private.h: ... here.
3830
3831 2016-07-19  Ben Kibbey  <bjk@luxsci.net>
3832
3833         Fix including nil bytes in keylist output.
3834         + commit 6a7ee33abd5059f5ae2f70a7dd9f610c16552f8e
3835         * src/gpgme-tool.c (cmd_keylist,gt_result): use strlen().
3836
3837 2016-07-15  Justus Winter  <justus@g10code.com>
3838
3839         python: Make GPGME's version easily accessible.
3840         + commit e545ca3f682b615ce447c186a2c73489a32b0592
3841         * lang/python/pyme/version.py.in (gpgme_versionstr): New variable.
3842
3843         python: Add an idiomatic interface.
3844         + commit 1f318b7aaaa77672fab117d54fe75221780df83c
3845         * configure.ac: Bump required Python version.
3846         * lang/python/pyme/__init__.py: Update docstring.  Import Context and
3847         Data.
3848         * lang/python/pyme/core.py (Context.encrypt): New function.
3849         (Context.decrypt): Likewise.
3850         (Context.sign): Likewise.
3851         (Context.verify): Likewise.
3852         * lang/python/pyme/errors.py: Add new errors.
3853         * lang/python/pyme/util.py (process_constants): Rework and return the
3854         inserted keys.
3855         * lang/python/tests/Makefile.am (EXTRA_DIST): Add new keys.
3856         * lang/python/tests/encrypt-only.asc: New file.
3857         * lang/python/tests/sign-only.asc: Likewise.
3858         * lang/python/tests/initial.py: Mark key 'Alpha' as trusted, import
3859         new keys.
3860         * lang/python/tests/support.py: Add fingerprints of known keys.
3861         (in_srcdir): New function.
3862         (print_data): Handle bytes too.
3863         (mark_key_trusted): New function.
3864         * lang/python/tests/t-decrypt-verify.py: Adjust test.  Test idiomatic
3865         interface.
3866         * lang/python/tests/t-decrypt.py: Test idiomatic interface.
3867         * lang/python/tests/t-encrypt-sign.py: Likewise.
3868         * lang/python/tests/t-encrypt-sym.py: Likewise.
3869         * lang/python/tests/t-encrypt.py: Likewise.
3870         * lang/python/tests/t-idiomatic.py: Simplify.
3871         * lang/python/tests/t-keylist.py: Adjust to newly trusted key.
3872         * lang/python/tests/t-sign.py: Likewise.  Test idiomatic interface.
3873         * lang/python/tests/t-signers.py: Likewise.
3874         * lang/python/tests/t-verify.py: Likewise.
3875
3876 2016-07-14  Andre Heinecke  <aheinecke@intevation.de>
3877
3878         Qt: Disable keylocate test for gnupg < 2.0.10.
3879         + commit d2f2cbd297c4d2f2c3264ecc3ffb7a2b3a70bd55
3880         * lang/qt/tests/t-keylocate.cpp: Disable test for gnupg < 2.0.10
3881
3882         Cpp: Add EngineInfo::Version class.
3883         + commit 41de1ab904eaddffb2de17b1de8ef41e462daabe
3884         * lang/cpp/src/engineinfo.cpp (EngineInfo::engineVersion): New.
3885         * lang/cpp/src/engineinfo.h (EngineInfo::engineVersion): Declare.
3886         (EngineInfo::Version): Small helper to work with versions.
3887
3888         Qt: Fix usage of ignore-invalid-option in tests.
3889         + commit e7f4c364732660c6cda25720b7dbc5b1c917e368
3890         * Makefile.am (pubring-stamp): Fix config.
3891
3892         Qt: Fix tests if gpg2 is gpg.
3893         + commit e4c0645c1eea9380d80a20895eb83c9dd7228776
3894         * lang/qt/tests/Makefile.am (pubring-stamp): Loopback and provide
3895         passphrase on command line when importing.
3896
3897 2016-07-14  Justus Winter  <justus@g10code.com>
3898
3899         python: Fix test.
3900         + commit fddcc62abd57cb04e84861abd3991c7d529c2464
3901         * lang/python/tests/t-keylist.py: Do not assume key alpha is trusted
3902         yet.
3903
3904 2016-07-13  Werner Koch  <wk@gnupg.org>
3905
3906         build: Update config.{guess,sub} to {2016-05-15,2016-06-20}.
3907         + commit a9670d152a4598aef1ae0960a79fb6f5d8db55ad
3908         * build-aux/config.guess: Update.
3909         * build-aux/config.sub: Update.
3910
3911         core: New GPGME_DATA_ENCODING_MIME.
3912         + commit d8d5f5a16712244fe6eff860b6ac5f007b1bf870
3913         * src/gpgme.h.in (GPGME_DATA_ENCODING_MIME): New.
3914         * src/data.c (gpgme_data_set_encoding): Adjust check.
3915         * src/engine-gpg.c (have_gpg_version): New.
3916         (gpg_encrypt, gpg_encrypt_sign): Pass flag '--mimemode'.
3917         (gpg_sign): Ditto.
3918
3919         * lang/cpp/src/data.h (GpgME): Add MimeEncoding.
3920         * lang/cpp/src/data.cpp (encoding, setEncoding): Support MimeEncoding.
3921
3922         * src/gpgme-tool.c (server_data_encoding): Add flag --mime.
3923
3924         core: Pass the engine's version string to the engine's new function.
3925         + commit 2095b1573a8196ba3efdf817324d1b3ee05cbb93
3926         * src/engine-backend.h (engine_ops): Add arg 'version' to NEW.
3927         * src/engine-assuan.c (llass_new): Add dummy arg 'version'.
3928         * src/engine-g13.c (g13_new): Ditto.
3929         * src/engine-gpgconf.c (gpgconf_new): Ditto.
3930         * src/engine-gpgsm.c (gpgsm_new): Ditto.
3931         * src/engine-spawn.c (engspawn_new): Ditto.
3932         * src/engine-uiserver.c (uiserver_new): Ditto.
3933         * src/engine.c (_gpgme_engine_new): Pass version string to the new
3934         function.
3935         * src/engine-gpg.c (struct engine_gpg): Add field 'version'.
3936         (gpg_new): Add arg 'version'.
3937         (gpg_release): Free VERSION.
3938
3939 2016-07-13  Andre Heinecke  <aheinecke@intevation.de>
3940
3941         Cpp: Add feature enum for new identify.
3942         + commit 537cb871fd59f3a20c697a046715e6339ff6633b
3943         * lang/cpp/src/context.cpp (supported_features2): Add
3944         BinaryAndFineGrainedIdentify
3945         * lang/cpp/src/global.h (Feature2): ditto.
3946
3947 2016-07-12  Justus Winter  <justus@g10code.com>
3948
3949         python: Port more tests.
3950         + commit 1bff47ee58bcf9d0016fb7ac7e37cbf075abd059
3951         * lang/python/pyme/core.py (Context.op_keylist_all): Add missing
3952         'op_keylist_end'.
3953         (Context.op_trustlist_all): Fix function. Add missing
3954         'op_trustlist_end'.
3955         * lang/python/tests/Makefile.am (pytests): Add new files.
3956         * lang/python/tests/t-import.py: New file.
3957         * lang/python/tests/t-keylist.py: Likewise.
3958         * lang/python/tests/t-trustlist.py: Check alternate interface.
3959
3960         python: Improve python packaging.
3961         + commit 57b51685528153f5a50ab0999feec25c83190501
3962         * lang/python/Makefile.am: Sign source releases, and upload them.
3963         * lang/python/setup.py.in: Add categories.
3964
3965 2016-07-12  Andre Heinecke  <aheinecke@intevation.de>
3966
3967         m4: Don't set fpic for qt on windows.
3968         + commit 938f7e9c8b466594d05c0347fe627b225263a6a6
3969         * m4/qt.m4 (FIND_QT): Do not set fpic for windows.
3970
3971         m4: Use LIBS instead of LDFLAGS for Qt libs.
3972         + commit 744978cce8f9dfb2363b9d274ee99f25cfcf0e40
3973         * m4/qt.m4: Modify LIBS instead of LDFLAGS for link test.
3974
3975         Bump version to 1.7.0.
3976         + commit bf742fb88545689addfca18192baf2f56a1895e1
3977         * configure.ac(mym4_version_minor),
3978         (mym4_version_micro): Next release will be 1.7.0
3979
3980         Qt: Install CamelCase forward includes.
3981         + commit fd87c4679c4bfe19390fa2047dff23bb213a4b18
3982         * lang/qt/src/Makefile.am (camelcase_headers): New. Create and install
3983         CamelCase headers.
3984
3985         Qt: Export VerifyDetachedJob.
3986         + commit 86ab2ee2d603111d24500b8d64a9a1dd82f8bdc0
3987         * lang/qt/src/verifydetachedjob.h (VerifyDetachedJob): Export it.
3988
3989         Qt/Cpp: Add version headers.
3990         + commit b03c48cfb06faae7d7033a0532f319cbcf13f18a
3991         * lang/cpp/src/gpgmepp_version.h.in,
3992         lang/qt/src/qgpgme_version.h.in: New. Version information.
3993         * lang/qt/src/Makefile.am, lang/cpp/src/Makefile.am: Add them.
3994         * configure.ac: Configure them.
3995
3996         Qt/Cpp: Add license blurb to export headers.
3997         + commit 362b8cdf4e0d5cd54ec2b325508dcdefac686f2c
3998         * lang/cpp/src/gpgmepp_export.h,
3999         lang/qt/src/qgpgme_export.h: Add license blurb.
4000
4001 2016-07-11  Justus Winter  <justus@g10code.com>
4002
4003         python: Fix distcheck.
4004         + commit ce662891373eba6cce1cf8df516cb2370970737e
4005         * lang/python/Makefile.am (EXTRA_DIST): Add missing files.
4006
4007 2016-07-11  Andre Heinecke  <aheinecke@intevation.de>
4008
4009         m4: Add compile / link check for qt.
4010         + commit ed070313155a1c79a57ba69f4299f2aefc65fad7
4011         * m4/qt.m4 (FIND_QT): Check if a qt application can be compiled and
4012         linked.
4013
4014 2016-07-11  Justus Winter  <justus@g10code.com>
4015
4016         python: Enable out-of-tree build of pyme bindings.
4017         + commit 007382ce94a6318557370c440f7d609a030a119e
4018         * lang/python/MANIFEST.in: Update manifest template.
4019         * lang/python/Makefile.am: Copy more files, move generation of files
4020         to Python build script, add 'sdist' target to build a Python source
4021         distribution.
4022         * lang/python/gpgme-h-clean.py: Add code to build 'errors.i'.
4023         * lang/python/setup.py.in: Generate files, enable out-of-tree builds.
4024
4025         python: Do not depend on access to internal data structures.
4026         + commit 98cba522c906115efcba1f8cc0bec7e5edb51ecd
4027         * lang/python/gpgme.i (gpgme_data_t): Rework so that it works without
4028         access to the definition of 'struct gpgme_data'.
4029         * lang/python/helpers.c (object_to_gpgme_data_t): Add assertion.
4030
4031         python: Make result wrapping backwards compatible.
4032         + commit c53f87c5f9ca63119152f41dcebfb175d4df2cef
4033         * lang/python/pyme/results.py (Result.__init__): Skip missing fields.
4034
4035 2016-07-11  Andre Heinecke  <aheinecke@intevation.de>
4036
4037         Qt: Fix memleaks in tests.
4038         + commit bfa8ac7e02c16790ee5bd3b42c26699f4821d72e
4039         * lang/qt/tests/t-keylist.cpp(cleanupTestCase): Ensure that
4040         posted events are handled for autodeletion.
4041         (testSingleKeylistSync): delete job.
4042         * lang/qt/tests/t-ownertrust.cpp(cleanupTestCase): Ditto
4043         * lang/qt/tests/t-ownertrust.cpp(testChangeOwnerTrust): Delete
4044         keylistjobs.
4045         * lang/qt/tests/t-keylocate.cpp(cleanupTestCase): Ditto
4046
4047         Qt: Add some general Protocol documentation.
4048         + commit b1f42e8f25ada220ec8e4762cfebc3a49b1f7d56
4049         * lang/qt/src/protocol.h (Protocol): Add doc.
4050
4051         Qt: Disable t-tofuinfo tests.
4052         + commit 02babb29612d554c37b63a49f78acc45653b557e
4053         * lang/qt/tests/t-tofuinfo.cpp: Disable tests.
4054
4055 2016-07-08  Justus Winter  <justus@g10code.com>
4056
4057         src: Fix error handling.
4058         + commit de74fe59feef9adc858ac04004880bfd44315d0d
4059         * src/encrypt.c (encrypt_status_handler): Fix error handling, ||
4060         conflates errors.
4061
4062         python: Fix raising stashed exceptions.
4063         + commit 8a93f345b701332270c9829a4d0a93537f98a8d8
4064         Fixes an issue with newer versions of Python.
4065
4066         * lang/python/helpers.c (pygpgme_raise_callback_exception): Be more
4067         careful when restoring the exception.
4068
4069 2016-07-07  Justus Winter  <justus@g10code.com>
4070
4071         python: Fix distcheck.
4072         + commit 52efcf1ee9fc8ba4c6bd23d8fe4f5f7993ba9fb1
4073         * lang/python/INSTALL: Drop obsolete file.
4074         * lang/python/Makefile.am (EXTRA_DIST): Add missing files.
4075         (CLEANFILES): Remove generated files.
4076         (clean-local): Fix permissions of copied files.
4077         * lang/python/tests/Makefile.am (TESTS): Use our own setup and
4078         teardown scripts.
4079         (EXTRA_DIST): Add missing files.
4080         * lang/python/tests/final.py: New file.
4081         * lang/python/tests/initial.py: Likewise.
4082
4083         qt: Fix distcheck.
4084         + commit 38c408560c6ebc3ea5eeeade01d38750bf5799e5
4085         * lang/qt/src/Makefile.am (qgpgme_headers): Add missing file.
4086         (CLEANFILES): Add generated file.
4087         * lang/qt/tests/Makefile.am (clean-local): Remove private keys.
4088
4089         cpp: Fix distcheck.
4090         + commit 49286ac1c82c480e2c718f828c57da9778ccd0b9
4091         * lang/cpp/src/Makefile.am (CLEANFILES): Remove generated file.
4092
4093 2016-07-06  Andre Heinecke  <aheinecke@intevation.de>
4094
4095         Qt: Add test for publicKeyAlgorithmAsString.
4096         + commit fc0267233239b42e9fb74a8acd7511503e287a9e
4097         * lang/qt/tests/t-keylist.cpp (testPubkeyAlgoAsString): New.
4098
4099         Cpp: Expose gpgme_pubkey_algo_name.
4100         + commit e41ae4db9e70d9aebf80ebbd4ce03977435c2ccf
4101         * lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithmAsString): New
4102         static variant.
4103         * lang/cpp/src/key.h: Declare function. Clarify comment about name
4104         mismatch.
4105
4106         Qt: Add check for pubkeyAlgo in t-keylist.
4107         + commit 9f93346d21271b916f15d80420669f5d659a40de
4108         * lang/qt/tests/t-keylist.cpp (testSingleKeyListSync): Check
4109         pubkeyAlgo.
4110
4111         Cpp: Add PubkeyAlgo enum.
4112         + commit c28007d0407bcc3621b8266d6d77eb0d069aec35
4113         * lang/cpp/src/key.h (Subkey::PubkeyAlgo): New enum.
4114         (Subkey::publicKeyAlgorithm): Change return type.
4115         * lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithm): Use enum.
4116
4117         Qt: Fix include order when buildin test.
4118         + commit 4934893e27a50f5715dcd4d2907ecbe629921b32
4119         * lang/qt/tests/Makefile.am (AM_CPPFLAGS): Include cpp before
4120         gpgme src directory.
4121
4122         Revert "Qt: More robust lookup of Cpp's context.h"
4123         + commit 7a8c04f66d382dc49d962ad18c46d7ad332ccc0f
4124         * lang/qt/src/threadedjobmixin.h: Revert using full path
4125         for context.h
4126
4127 2016-07-05  Andre Heinecke  <aheinecke@intevation.de>
4128
4129         Qt: Fix test build with Qt < 5.4.0.
4130         + commit 49a6ee50587c9d4b6f07e60ce1a939c863e7f15c
4131         * lang/qt/tests/t-keylist.cpp,
4132         lang/qt/tests/t-keylocate.cpp,
4133         lang/qt/tests/t-ownertrust.cpp: Use old style SIGNAl syntax for
4134         QSignalSpy
4135
4136         Qt: More robust lookup of Cpp's context.h.
4137         + commit 47bfbc9026b49b9918359af5fcc1621aab0d1065
4138         * lang/qt/src/threadedjobmixin.h: When building qgpgme look for
4139         context.h in the full cpp subdirectory.
4140
4141         w32: Fallback to 2.1 reg key for gpgconf search.
4142         + commit 72b83ffc4d7581f4efef3bd7c261d7d7424bcf0e
4143         * src/w32-util.c (_gpgme_get_gpgconf_path): Fallback to 2.1 installer
4144          registry key.
4145
4146 2016-07-04  Andre Heinecke  <aheinecke@intevation.de>
4147
4148         Doc: Document pinentry mode.
4149         + commit 329ab93f7ed862d7f4c0501fca5355936a74ac52
4150         * doc/gpgme.texi (Passphrase Callback): Document as context
4151         attribute.
4152         (gpgme_set_passphrase_cb): Note that this requires LOOPBACK mode
4153         with GnuPG 2.1.
4154
4155         Qt: Add testTofuSignCount.
4156         + commit 8fa9b5696ca9f8386971e6f36646536f9579ceaa
4157         * src/lang/qt/tests/t-tofuinfo.cpp(testTofuSignCount): New.
4158         (initTestCase): Set gpg-agent loopback pinentry config.
4159         (signAndVerify): Helper for tofuTestSignCount.
4160
4161         Qt: Add test passphrase provider.
4162         + commit efb5059b9b6e81db7b0c016aa9fb70abe98308ea
4163         * lang/qt/tests/t-support.h (TestPassphraseProvider): New.
4164         * lang/qt/tests/Makefile.am (t_tofuinfo_SOURCES): Add t-support.h
4165
4166         Cpp: Add support for TOFU_CONFLICT sigsum.
4167         + commit 80498ab662238a31325e78c0037ea6752f680a37
4168         * lang/cpp/src/verificationresult.cpp (GpgME::Signature::Summary):
4169         Handle TOFU_CONFLICT.
4170         * lang/cpp/src/verificationresult.h (Summary): Add TofuConflict.
4171
4172         Cpp: Add support for pinentry_mode.
4173         + commit d75c118aae18e20f08dbbb69c7998e1f3694ccd0
4174         * lang/cpp/src/context.cpp (Context::pinentryMode): Return mode.
4175         (Context::setPinentryMode): Set mode.
4176         * lang/cpp/src/context.h (PinentryMode): Add enum.
4177
4178 2016-07-01  Andre Heinecke  <aheinecke@intevation.de>
4179
4180         Qt: Add test for TofuInfo.
4181         + commit fbd6ac4655ebf56d91ebd9a4ff499c8319fcd087
4182         * lang/qt/tests/t-tofuinfo.cpp: New.
4183         * lang/qt/tests/Makefile.am: Update accordingly.
4184
4185         Cpp: Add TofuInfo to signatures.
4186         + commit 93c5d420fcfe275aeff2b3d5ce99629edbe6625d
4187         * lang/cpp/src/tofuinfo.cpp, lang/cpp/src/tofuinfo.h: New class.
4188         * lang/cpp/src/verificationresult.cpp (Signature::tofuInfo): New.
4189         (VerificationResult::Private): Handle tofu info.
4190         (GpgME::operator<<(std::ostream &os, const Signature &sig)): Include
4191         TofuInfo in dump.
4192         * lang/cpp/src/verificationresult.h (Signature::tofuInfo): New.
4193         * lang/cpp/src/Makefile.am (main_sources, gpgmepp_headers): Add
4194         new files.
4195         * configure.ac (LIBGPGMEPP_LT_REVISION): Bump for new API.
4196
4197         core: Clarify documentation of tofu_stats address.
4198         + commit 948ce7d1edf12ecb5080a4816ca15f495d6393f5
4199         * src/gpgme.h.in: Mention that Address is not always in addr-spec.
4200
4201         core: Fix identify for armored detached sigs.
4202         + commit 570bf2a648f14b34c4c45d3890b7300529a82d37
4203         * src/data-identify.c (basic_detection): Return signature for
4204         signature.
4205
4206 2016-06-27  Andre Heinecke  <aheinecke@intevation.de>
4207
4208         Cpp: Expose new data_identify values.
4209         + commit 15fc5c34c88ecbb61272705af60f7054b41c57f7
4210         * lang/cpp/src/data.cpp (GpgME::Data::type): Handle PGP Encrypted
4211          and Signature.
4212         * lang/cpp/src/data.h: Add values accordingly.
4213
4214         Cpp: Do not treat KEYEXPIRED as error.
4215         + commit 82d484c852d07958ac93efb3d2d7b7726fbb5231
4216         * lang/cpp/src/editinteractor.cpp (status_to_error): No error
4217         for KEYEXPIRED.
4218
4219 2016-06-24  Andre Heinecke  <aheinecke@intevation.de>
4220
4221         tests: Add new test tool run-decrypt.
4222         + commit 3364549c19682f56d4d9c52ab7f76862c5a456cf
4223         * tests/run-decrypt.c: New.
4224         * tests/Makefile.am (noinst_PROGRAMS): Add run-decrypt.
4225
4226 2016-06-23  Werner Koch  <wk@gnupg.org>
4227
4228         core: Add closer inspection of "PGP MESSAGE".
4229         + commit cf37a57d28c43ec36277e84ca44458b7287b940b
4230         * src/data-identify.c (inspect_pgp_message): New.
4231         (basic_detection): Un-const arg DATA. Call inspect_pgp_message.
4232
4233         core: Add a base 64 decoder.
4234         + commit f8b8027ae63c957557ed6bdc7e5a30ef1bdd8e77
4235         * src/b64dec.c: New. Taken from gnupg.  Prefix function names with
4236         _gpgme_ and change to use standard C malloc functions.
4237         * src/util.h.h (struct b64state): New.
4238         * src/Makefile.am (main_sources): Add file.
4239
4240 2016-06-22  Werner Koch  <wk@gnupg.org>
4241
4242         core: Detect compressed signed OpenPGP data.
4243         + commit bb8cf6236582fc9eb6564046599989af52779a26
4244         * src/data-identify.c (next_openpgp_packet): Allow partial encoding.
4245         (pgp_binary_detection): Handle compressed packets.
4246
4247 2016-06-21  Werner Koch  <wk@gnupg.org>
4248
4249         tests: Add new test tool run-identify.
4250         + commit 5905e8bbd809c1408edad4fa4eb0527fa51cbea3
4251         * src/gpgme-tool.c (gt_identify): Add new strings.
4252         * tests/run-identify.c: New.
4253         * tests/Makefile.am (noinst_PROGRAMS): Add run-identify.
4254
4255         core: Enhance gpgme_data_identify to detect binary PGP messages.
4256         + commit 32d4bbf5e3e5f88e4a6852d72a35ee30df9d5279
4257         * src/gpgme.h.in (GPGME_DATA_TYPE_PGP_ENCRYPTED): New.
4258         (GPGME_DATA_TYPE_PGP_SIGNATURE): New.
4259         * src/data-identify.c: Add enum for OpenPGP packet types.
4260         (buf32_to_ulong): New.
4261         (next_openpgp_packet): New.  Based on the gnupg/kbx/keybox-openpgp.c
4262         implementation and relicensed to LGPL by g10 Code.
4263         (pgp_binary_detection): New.
4264         (basic_detection): Call pgp_binary_detection instead of returning
4265         unknown.
4266
4267 2016-06-16  Justus Winter  <justus@g10code.com>
4268
4269         python: Improve autmatically generated docstrings.
4270         + commit 8997d88bf97d1784706becbf8e9dc74e4656e311
4271         * lang/python/gpgme.i: Add comment.
4272         * lang/python/pyme/core.py (__getattr__): Rewrite automatically
4273         generated doctrings for the wrapper methods.
4274
4275         python: Make result objects more robust.
4276         + commit a324d0cffe93cab955698c2c065b2f2227e379e4
4277         Results returned by the GPGME are fragile, i.e. they are only valid
4278         until the next operation is performed in the context.
4279
4280         We cannot arbitrarily constrain the lifetime of Python objects, we
4281         therefore create deep copies of the results.
4282
4283         * lang/python/gpgme.i (gpgme_tofu_info_t): Turn these into a list.
4284         (gpgme_*_result_t): Create deep copies of these objects.
4285         * lang/python/helpers.c (pygpgme_wrap_fragile_result): New function.
4286         * lang/python/helpers.h (pygpgme_wrap_fragile_result): New prototype.
4287         * lang/python/pyme/results.py: New file.
4288
4289         python: Avoid creating SWIG proxy classes.
4290         + commit 856bcfe2934237011984fab0bc69800a7c25c34b
4291         * lang/python/Makefile.am (gpgme_wrap.c): Use '-builtin' to make SWIG
4292         generate builtin types for c types.
4293         * lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Adapt slightly.
4294
4295         python: Simplify wrapping glue.
4296         + commit 6641c7814b30e3e8f18105b2636545cc1bd07552
4297         * lang/python/pyme/core.py: Rename '_getctype' to '_ctype' and turn it
4298           into a string.  Likewise rename '_getnameprepend' to '_cprefix'.
4299         * lang/python/helpers.c: Adapt accordingly.
4300
4301         python: Rework callbacks.
4302         + commit f3618bc615e3eff1f52fb5849cbf0f0b95515a61
4303         Simplify how the lifetime of callback arguments is managed.
4304
4305         * lang/python/gpgme.i (gpgme_edit_cb_t): Check arguments.
4306         (PyObject_p_p, void_p_p): Drop rather dangerous interface.
4307         (pygpgme_unwrap_gpgme_ctx_t): New function.
4308         * lang/python/helpers.c (pygpgme_clear_generic_cb): Drop dangerous
4309         function.
4310         (pyPassphraseCb): Assert contract.
4311         (pygpgme_set_passphrase_cb): Use Python's calling convention so that
4312         we can raise exceptions.  Hand in 'self', get the wrapped object, and
4313         simply store the hook data as attribute of the wrapper object.
4314         (pyProgressCb, pygpgme_set_progress_cb): Likewise.
4315         (pygpgme_set_status_cb): Likewise.
4316         (pygpgme_data_new_from_cbs): Likewise.
4317         * lang/python/helpers.h (pygpgme_clear_generic_cb): Drop prototype.
4318         (pygpgme_set_passphrase_cb): Update prototype.
4319         (pygpgme_set_progress_cb): Likewise.
4320         (pygpgme_set_status_cb): Likewise.
4321         (pygpgme_data_new_from_cbs): Likewise.
4322         (pygpgme_unwrap_gpgme_ctx_t): New prottotype.
4323         * lang/python/pyme/core.py (Context, Data): Update callsites.
4324
4325         python: Wrap objects implementing the buffer protocol.
4326         + commit 616929b6edf00b4a774b727385d39b785a112b90
4327         * lang/python/Makefile.am: Add the toplevel source directory to CFLAGS
4328         when compiling the bindings so that we can use private header files.
4329         * lang/python/gpgme.i (gpgme_data_t): Rework the object wrapping.  Do
4330         not create a Python wrapper object, merely a gpgme_data_t object, and
4331         keep references to buffer objects, if any.  If necessary, update the
4332         buffer after the function call.
4333         (pygpgme_wrap_gpgme_data_t): New function.
4334         * lang/python/helpers.c (object_to_gpgme_data_t): Rework object
4335         wrapping.  Also wrap objects implementing the buffer protocol.
4336         * lang/python/helpers.h (object_to_gpgme_data_t): Update prototype.
4337         (pygpgme_wrap_gpgme_data_t): New prototype.
4338         * lang/python/tests/t-idiomatic.py: Demonstrate this.
4339
4340         python: Add properties to wrapped object.
4341         + commit 5464060baef2da8f5ea377118758e451c55e3787
4342         * lang/python/pyme/core.py (GpgmeWrapper.__repr__): Saner
4343         representation.
4344         (GpgmeWrapper.__str__): Construct a nicer human readable string.
4345         (GpgmeWrapper._boolean_properties): New field.
4346         (GpgmeWrapper.__wrap_boolean_property): New function.
4347         (GpgmeWrapper.__getattr__): Wrap functions using properties.
4348         (GpgmeWrapper.__setattr__): New method.  Likewise wrap functions.
4349         (Context.signers): New property.
4350         (Context.pinentry_mode): Likewise.
4351         (Context._boolean_properties): List boolean properties.
4352         (Context.__init__): Add keyword arguments for properties and apply
4353         them.
4354
4355         python: Improve the documentation.
4356         + commit 5492853d7b84b4e1d0b11b234e32252ba8d1608d
4357         * lang/python/Makefile.am: Copy the README file.
4358         * lang/python/README: Rename, convert to org, and update.
4359         * lang/python/pyme/__init__.py: Move license out of the docstring,
4360         update docstring.
4361         * lang/python/pyme/core.py: Add and update docstrings.
4362
4363         python: Get version information from the build system.
4364         + commit 7eef399d89d4c3877cb795ed5ba45ecb241e67be
4365         * configure.ac: Generate 'setup.py' and 'version.py'.
4366         * lang/python/Makefile.am: Use generated setup script.
4367         * lang/python/pyme/version.py: Turn it into a template, and get
4368         version information from the build system.  Also drop some variables.
4369         * lang/python/setup.py: Likewise.  This way we can avoid importing the
4370         version module, which is frowned upon and actually caused a problem.
4371
4372         python: Fix exception leak.
4373         + commit a852f99a0ac9dc7f7493b403f811f5f7518fae40
4374         * lang/python/helpers.c (pygpgme_stash_callback_exception): Fix leak.
4375
4376         python: Fix license.
4377         + commit 3bacce03e60dc45cc2da99a2f5c504612202e802
4378         Other parts of the build system are also LGPLed.
4379
4380         * lang/python/Makefile.am: Fix license.
4381
4382 2016-06-14  Werner Koch  <wk@gnupg.org>
4383
4384         core: Make sure FD_SET is not used with an out of range fd.
4385         + commit 8173c4f1f8a145c4b1d454f6f05e26950e23d675
4386         * src/posix-io.c (_gpgme_io_select): Check for FD out of range.
4387
4388 2016-06-08  Justus Winter  <justus@g10code.com>
4389
4390         python: Improve error handling.
4391         + commit 77d149e8614c381458e07808a7930ce3fb92cdc3
4392         * lang/python/helpers.c (pyPassphraseCb): Handle write errors.
4393         (pyEditCb): Likewise.
4394
4395         python: Add function to raise exceptions from c.
4396         + commit 5ebc205439cac266685d2532466df8b3457dea23
4397         * lang/python/helpers.c (pygpgme_raise_exception): New function.
4398
4399         python: Fix stripping deprecated functionality.
4400         + commit 8426304b67a0b0a5630db500abf740b0e0b9e43c
4401         * lang/python/Makefile.am (gpgme.h): Add script as input.
4402         * lang/python/gpgme-h-clean.py (deprec_func): Also match struct
4403         members.
4404         (line_break): Fix matching on struct members.
4405
4406         python: Fix type.
4407         + commit 990492ea4f7dafbb75de15ea91c30cbf090034b5
4408         * lang/python/gpgme.i: Use correct Python type for size.
4409
4410         python: Implement the context manager protocol.
4411         + commit e3c5913a33edcbd7329b8d154c669f95ce782038
4412         * lang/python/pyme/core.py (Context.__del__): Make function
4413         idemptotent.
4414         (Context.{__enter__,__exit__}): Implement the context manager
4415         protocol.
4416         (Data.__del__): Make function idemptotent, drop debug print.
4417         (Data.{__enter__,__exit__}): Implement the context manager
4418         protocol.
4419         * lang/python/tests/t-idiomatic.py: Demonstrate this.
4420
4421 2016-06-07  Justus Winter  <justus@g10code.com>
4422
4423         python: Fix error handling.
4424         + commit f8f9bf06bc3190968ba6613032d60a3bf2c8a6d9
4425         * lang/python/gpgme.i: Fix freeing an uninitialized pointer in the
4426         error handling of generated wrapper functions by explicitly storing
4427         the pointer in a local variable which can be initialized.
4428
4429 2016-06-06  Justus Winter  <justus@g10code.com>
4430
4431         python: Wrap file-like objects on demand.
4432         + commit 8196edf9ca5c8f2f02553e7f22d9c79dbd229882
4433         * lang/python/gpgme.i (gpgme_data_t): Use new function to create
4434         wrapper objects if necessary, and deallocate them after the function
4435         call.
4436         * lang/python/helpers.c (object_to_gpgme_data_t): New function.
4437         * lang/python/helpers.h (object_to_gpgme_data_t): New prototype.
4438         * lang/python/tests/Makefile.am (pytests): Add new test.
4439         * lang/python/tests/t-idiomatic.py: New file.
4440
4441         python: Move helper function.
4442         + commit 26c3accc95ab77ddbe60db822e2938ad5f480d41
4443         * lang/python/gpgme.i (object_to_gpgme_t): Move...
4444         * lang/python/helpers.c: ... here.
4445         * lang/python/helpers.h (object_to_gpgme_t): New prototype.
4446
4447         python: Fix error handling.
4448         + commit 89eb0cd4d65bc033ed6342810b26232797482d64
4449         * lang/python/gpgme.i (object_to_gpgme_t): Properly propagate
4450         exceptions.
4451
4452         python: Initialize GPGME for the user.
4453         + commit ae06f7c2fe0e49baeab5a827dc38ba8c57a6404c
4454         * lang/python/pyme/core.py: Call 'check_version' and explain why.
4455         * lang/python/tests/support.py (init_gpgme): Drop call here.
4456
4457 2016-06-01  Justus Winter  <justus@g10code.com>
4458
4459         python: Fix test suite with GnuPG prior to 2.1.12.
4460         + commit bbf19124bbec9eb6298cef2914baae7ac74382fe
4461         * lang/python/tests/Makefile.am (gpg-agent.conf): Use
4462         'allow-loopback-pinentry'.
4463
4464         python: Make Python detection more robust.
4465         + commit 1607aa7fe5dd686ba3bfb6de4a2b602d6a458c86
4466         Previously, missing Python development packages made configure fail
4467         instead of merely disabling the bindings.
4468
4469         * configure.ac: Check for 'PYTHON_VERSION'.
4470         * m4/ax_python_devel.m4: Make test non-fatal.
4471
4472         python: Improve build system integration, fix warnings.
4473         + commit 73c47535b631a55687ecc5eff1d1d9a9fd71021e
4474         * lang/python/Makefile.am: Pass CFLAGS to python build system.
4475         * lang/python/helpers.c (pyPassphraseCb): Use correct type for length.
4476         (pygpgme_data_new_from_cbs): Drop unused variable.
4477
4478 2016-06-01  Andre Heinecke  <aheinecke@intevation.de>
4479
4480         Cpp: Use whitelist for status messages.
4481         + commit 54314a9c7d7ad52981c836ca742644a1fa69b518
4482         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
4483         Use whitelist instead of blacklist.
4484
4485         Qt: Fix debug output in t-ownertrust.
4486         + commit 9d6f85bd25e51445f1776b498875e77b529311b1
4487         * lang/qt/tests/t-ownertrust.cpp (testChangeOwnerTrust): Remove
4488         general debug of trust level. Add debug output for error.
4489
4490 2016-06-01  Justus Winter  <justus@gnupg.org>
4491
4492         tests: Fix notation tests.
4493         + commit c88c9ef384b6f7bda9a61b58f26c2f89ae25f684
4494         * lang/python/tests/t-sig-notation.py (check_result): Check critical
4495         flag.
4496         * tests/gpg/t-sig-notation.c (check_result): Likewise.
4497
4498 2016-06-01  Werner Koch  <wk@gnupg.org>
4499
4500         core: Set notation flags for verify.
4501         + commit 1cacd7d00a7b3de4a5e11ccce5ee6c50e0a5516d
4502         * src/gpgme.h.in (GPGME_STATUS_NOTATION_FLAGS): New.
4503         * src/status-table.c (status_table): Add new status.
4504         * src/verify.c (parse_notation): Handle flags.  Also fix NOTATION_DATA
4505         in case gpg would not percent-escape spaces.
4506         (_gpgme_verify_status_handler): Handle flags.
4507         * tests/run-verify.c (print_result): Print notaion data.
4508
4509 2016-05-31  Tobias Mueller  <muelli@cryptobitch.de>
4510
4511         python: use GPG_ERROR_CONFIG variable.
4512         + commit 8ad17f402f6420880dcf06a13a54feadb52c0208
4513         instead of calling gpg-error-config.
4514         This is useful when configuring with --with-gpgerror-prefix
4515         because then GPG_ERROR_CONFIG contains the correct
4516         /path/to/bin/gpg-error-config whereas calling gpg-error-config
4517         directly would look in the user's PATH (and not in the prefix
4518         where gpg-error-config was installed).
4519
4520 2016-05-31  Justus Winter  <justus@gnupg.org>
4521
4522         python: Port more tests.
4523         + commit afa0dd56e1cce64fe08bff3c64b12aecce54fd2d
4524         * lang/python/gpgme.i: Hide length fields of notations.
4525         * lang/python/tests/Makefile.am (pytests): Add new tests.
4526         * lang/python/tests/t-decrypt-verify.py: New file.
4527         * lang/python/tests/t-sig-notation.py: Likewise.
4528         * lang/python/tests/t-verify.py: Likewise.
4529
4530 2016-05-27  Werner Koch  <wk@gnupg.org>
4531
4532         Speedup closing of fds before exec.
4533         + commit 89d22f9229f2ecd559ac6ea91dae60eeff940fa5
4534         * src/posix-io.c [__linux__]: Include dirent.h.
4535         (get_max_fds) [__linux__]: Try to figure out the highest used fd.
4536
4537 2016-05-27  Justus Winter  <justus@gnupg.org>
4538
4539         python: Port more tests.
4540         + commit 3915842657f0849a038752fd7445f96081a89dd9
4541         * lang/python/pyme/core.py (Data._error_check): Add
4542         'gpgme_data_get_file_name' to the list of functions not returning an
4543         error code.
4544         * lang/python/tests/Makefile.am (pytests): Add new tests.
4545         * lang/python/tests/support.py (verbose): New variable.
4546         * lang/python/tests/t-data.py: Test setting and getting the filename.
4547         * lang/python/tests/t-encrypt-large.py: New file.
4548         * lang/python/tests/t-file-name.py: Likewise.
4549         * lang/python/tests/t-trustlist.py: Likewise.
4550
4551         python: Implement data callbacks.
4552         + commit 2ae847c02731994d99e69d3d025ff01f41406452
4553         * lang/python/gpgme.i (object_to_gpgme_t): Set exception on error.
4554         * lang/python/helpers.c (pyDataReadCb): New function.
4555         (pyDataWriteCb): Likewise.
4556         (pyDataSeekCb): Likewise.
4557         (pyDataReleaseCb): Likewise.
4558         (pygpgme_data_new_from_cbs): Likewise.
4559         * lang/python/helpers.h (pygpgme_data_new_from_cbs): New prototype.
4560         * lang/python/pyme/core.py (Data.__init__): Fix docstring, fix read
4561         callbacks.
4562         (Data.__del__): Fix read callbacks.
4563         (Data._free_readcb): Drop function.
4564         (Data._free_datacbs): New function.
4565         (Data.new_from_cbs): Fix setting the callbacks.
4566         (Data.write): Raise stashed exceptions.
4567         (Data.read): Likewise.
4568         * lang/python/tests/t-callbacks.py: Test new functionality.
4569         * lang/python/tests/t-data.py: Likewise.
4570
4571         python: Fix object deallocation.
4572         + commit ebfe2300c33a3bad311e9ac1530e6c92636a08a4
4573         Handing a reference to the wrapper object created a non-trivial
4574         circular reference that Pythons garbage collector is unable to break.
4575         Explicitly break it by using a weak reference.
4576
4577         * lang/python/helpers.c (pygpgme_stash_callback_exception): Retrieve
4578         object from weak reference.
4579         * lang/python/pyme/core.py (Context.__del__): Free status callback.
4580         (Context.set_passphrase_cb): Use a weak reference.
4581         (Context.set_progress_cb): Likewise.
4582         (Context.set_status_cb): Likewise.
4583         (Context.op_edit): Likewise.
4584
4585         Improve comments.
4586         + commit e74cd9fb80f12b764d5e4561e73d55644147e9e7
4587         * src/gpgme.h.in (gpgme_data_seek_cb_t, gpgme_data_seek): Clarify that
4588         these functions return the new offset.
4589         (gpgme_data_release_cb_t): Fix name of parameter.
4590
4591         python: Fix reading data from existing files.
4592         + commit bf188e280b8b4fc775f33c47e2e1e275ed044004
4593         * lang/python/pyme/core.py (Data.__init__): Add 'copy' kwargument, and
4594         pass it to functions supporting it.  PEP8 fix.
4595         (Data.new_from_fd): PEP8 fix.
4596         (Data.new_from_file): Give a more helpful error message if copy is
4597         False.  PEP8 fix.
4598         (Data.new_from_fd): Hand the file descriptor to
4599         'gpgme_data_new_from_fd', not a stream.  Fix docstring.
4600         * lang/python/tests/t-data.py: Add tests for this.
4601
4602 2016-05-25  Justus Winter  <justus@gnupg.org>
4603
4604         src: Fix trace string.
4605         + commit ce73ae9d0cbf782cd3a1949fc4f568f0d1da60d9
4606         * src/data-compat.c (gpgme_data_new_from_file): Fix trace string.
4607
4608 2016-05-24  Justus Winter  <justus@gnupg.org>
4609
4610         python: Improve and test Context.wait.
4611         + commit 00ff6d07330028da370c869e3ec442eb76f8cbb8
4612         * lang/python/pyme/core.py (Context.wait): Improve docstring.  As the
4613         context passed to 'gpgme_wait' is never NULL, it is pointless to look
4614         at the returned context.  Always raise exceptions.
4615         * lang/python/tests/Makefile.am (pytests): Add new test.
4616         * lang/python/tests/t-wait.py: New file.
4617
4618         python: Make all GnuPG errors available.
4619         + commit 7bc9cc717e428f48d4b27016f44c9f3900b1fba6
4620         * lang/python/Makefile.am (errors.i): Generate file.
4621         * lang/python/gpgme.i: Include generated file.
4622         * lang/python/pyme/errors.py: Pull in all errors and error sources.
4623
4624         python: Move the base wrapper class.
4625         + commit 0ebd6a1b43a96bffa78da89dc8629edac0a74d35
4626         * python/lang/pyme/util.py (GpgmeWrapper): Move...
4627         * python/lang/pyme/core.py: ... here.
4628
4629         python: Support status callbacks.
4630         + commit 8b57f06e0c04f5c9b87a3c76618230d757412076
4631         * lang/python/helpers.c (pyStatusCb): New function.
4632         (pygpgme_set_status_cb): Likewise.
4633         * lang/python/helpers.h (pygpgme_set_status_cb): New prototype.
4634         * lang/python/pyme/core.py (Context.__init__): Initialize
4635         'last_statuscb'.
4636         (Context._free_statuscb): New function.
4637         (Context.set_status_cb): Likewise.
4638         * lang/python/tests/t-callbacks.py: Test status callbacks.
4639
4640         python: Improve docstring.
4641         + commit 72afb68f8c2f0cb326f20b289215402fd849339d
4642         * lang/python/pyme/core.py (Context.set_progress_cb): Improve
4643         docstring.
4644
4645 2016-05-24  Andre Heinecke  <aheinecke@intevation.de>
4646
4647         Qt: Fix test build with clang.
4648         + commit 00e93b2cae0585ff10425421d9097a846943b21c
4649         * lang/qt/tests/Makefile.am (LDADD): Explicitly add -lstdc++
4650
4651         Cpp: Set -std=c++11 also if CXXCPP is already set.
4652         + commit b107fc8a92bd16bc0d868c771b6334d6594e6395
4653         * m4/ax_cxx_compile_stdxx.m4 (AX_CXX_COMPILE_STDCXX): Set CXXCPP if
4654         neccessary.
4655
4656 2016-05-24  Justus Winter  <justus@gnupg.org>
4657
4658         python: Improve support for edit callbacks.
4659         + commit 09803c4a81b9431fd4c8f30abb1c60c4c735f0cb
4660         * lang/python/helpers.c (pyEditCb): Stash exceptions.
4661         * lang/python/pyme/core.py (Context.op_edit): Hand in 'self'.
4662         * lang/python/tests/Makefile.am (py_tests): Add new test.
4663         * lang/python/tests/t-callbacks.py: Test edit callbacks.
4664         * lang/python/tests/t-edit.py: New file.
4665
4666 2016-05-23  Justus Winter  <justus@gnupg.org>
4667
4668         python: Fix hook.
4669         + commit 283f0bdc3d32624dac93d02ba3df516e69d8d4ba
4670         * lang/python/helpers.c (pyProgressCb): Fix getting hook data.
4671         * lang/python/tests/t-callbacks.py: Show that this works.
4672
4673         python: Move edit callback function.
4674         + commit 5476ca6813fc9d8833d5224f19d4bb7515380ab5
4675         * lang/python/gpgme.i (pyEditCb): Move...
4676         * lang/python/helpers.c: ... here.
4677         * lang/python/helpers.h (pyEditCb): New prototype.
4678
4679         python: Port more tests.
4680         + commit a42d814a65fdc29a3be6efa97433997495696a88
4681         * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Set
4682         LD_LIBRARY_PATH.
4683         (pytests): Add new tests.
4684         * lang/python/tests/t-callbacks.py: Trim imports.
4685         * lang/python/tests/t-encrypt-sign.py: New file.
4686         * lang/python/tests/t-export.py: Likewise.
4687         * lang/python/tests/t-signers.py: Likewise.
4688
4689         python: Translate list of strings.
4690         + commit c9cc0412e940c78c3e9bacb6ff1459b5bb5bb9ad
4691         * lang/python/gpgme.i: Add typemap translating list of strings.
4692
4693 2016-05-21  Werner Koch  <wk@gnupg.org>
4694
4695         api: Return Tofu info for signatures.
4696         + commit 10df06ee8f9192309bf124872438f7c32457e1c6
4697         * src/gpgme.h.in (gpgme_tofu_policy_t): New.
4698         (gpgme_status_code_t): Add status codes for TOFU.
4699         (struct _gpgme_tofu_info, gpgme_tofu_info_t): New.
4700         (struct _gpgme_signature): Add field 'tofu'.
4701         * src/status-table.c (status_table): Add new codes.
4702         * src/verify.c: Include limits.h.
4703         (release_tofu_info): New.
4704         (release_op_data): Call that.
4705         (parse_tofu_user): New.
4706         (parse_tofu_stats): New.
4707         (parse_tofu_stats_long): New.
4708         (_gpgme_verify_status_handler): Handle TOFU status lines.
4709
4710         * tests/run-verify.c (print_description): New.
4711         (print_result): print tofu info.
4712
4713         api: Add new context flag "raw-description".
4714         + commit dac2c5441d418536632f014c8b0e1359580279d1
4715         * src/context.h (struct gpgme_context): Add field raw_description.
4716         * src/gpgme.c (gpgme_set_ctx_flag): New flag.
4717
4718         core: New functions to help parsing of status lines.
4719         + commit a92946a8cacc44f655249d84b316deae59e62671
4720         * src/conversion.c (_gpgme_split_fields): New.
4721         (_gpgme_strtoul_field): New.
4722
4723 2016-05-20  Andre Heinecke  <aheinecke@intevation.de>
4724
4725         Qt: Add test for changeownertrust.
4726         + commit eaf2d018e63c15cd9a81e5c1fd2fedbf8829f7b9
4727         * lang/qt/tests/t-ownertrust.cpp: New test.
4728         * lang/qt/tests/Makefile.am: Add test.
4729
4730         Cpp: Ignore STATUS_KEY_CONSIDERED when editing.
4731         + commit 5df858cbf196b2a53d600b7f45655f7b35c1fe93
4732         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
4733         Handle GPGME_STATUS_KEY_CONSIDERED.
4734
4735 2016-05-19  Werner Koch  <wk@gnupg.org>
4736
4737         api: Add new function gpgme_set_ctx_flag.
4738         + commit 88f2c1c0d16eee6bb36a901623ea65ac69499f03
4739         * src/gpgme.h.in (gpgme_set_ctx_flag): New prototype.
4740         * src/gpgme.c (gpgme_set_ctx_flag): New.
4741         * src/gpgme.def, src/libgpgme.vers: Add new function.
4742         * src/context.h (struct gpgme_context): Add FULL_STATUS.
4743         * src/decrypt.c (_gpgme_decrypt_status_handler): Do not call the
4744           status callback if FULL_STATUS is set.
4745         * src/genkey.c (genkey_status_handler): Ditto.
4746         * src/passphrase.c (_gpgme_passphrase_status_handler): Ditto.
4747         * src/sign.c (_gpgme_sign_status_handler): Ditto.
4748
4749         * src/engine-backend.h (struct engine_ops): Add SET_STATUS_CB and add
4750         adjust all definitions of that variable.
4751         * src/engine.c (_gpgme_engine_set_status_cb): New.
4752         * src/op-support.c (_gpgme_op_reset): Call this function.
4753
4754         * src/engine-gpg.c (struct engine_gpg): Add fields MON_CB and
4755         MON_CB_VALUE.
4756         (gpg_set_status_cb): New.
4757         (_gpgme_engine_ops_gpg): Register that function.
4758         (read_status): Call the monitor callback.
4759
4760         * src/engine-gpgsm.c (struct engine_gpgsm): Add fields MON_CB and
4761         MON_CB_VALUE.
4762         (_gpgme_engine_ops_gpgsm): Register that function.
4763         (gpgsm_assuan_simple_command): Change first arg to be an engine
4764         context and adjust call callers.  Call the monitor callback.
4765
4766         * src/engine-uiserver.c (struct engine_uiserver): Add fields MON_CB
4767         and MON_CB_VALUE.
4768         (_gpgme_engine_ops_uiserver): Register that function.
4769         (uiserver_assuan_simple_command): Change first arg to be an engine
4770         context and adjust call callers.  Call the monitor callback.
4771
4772         * tests/run-verify.c (status_cb): New.
4773         (print_result): Print algo names.
4774         (main): Add option --status.
4775
4776         api: Remove arbitrary restriction from gpgme_op_verify.
4777         + commit 5aa8e588e166abeef2e3d677ab6830f2d7af1b5d
4778         * src/verify.c (verify_start): Do not return GPG_ERR_INV_VALUES when
4779         when SIGNED_TEXT is not given.
4780
4781 2016-05-19  Justus Winter  <justus@gnupg.org>
4782
4783         python: Improve progress callbacks.
4784         + commit 0d4e95621e05d50cd454049a424bb9ee098a5db6
4785         * lang/python/helpers.c (pyProgressCb): Stash python errors, convert
4786         'what' to Unicode object.
4787         * lang/python/pyme/core.py (Context.set_progress_cb): Hand in 'self'.
4788         * lang/python/tests/t-callbacks.py: Test progress callbacks.
4789
4790         python: Robust exception handling in callbacks.
4791         + commit d90857a08c4fe5b73b6d6d46fd6200efdd72db44
4792         * lang/python/helpers.c (pygpgme_stash_callback_exception): New
4793         function.
4794         (pygpgme_raise_callback_exception): Likewise.
4795         (pyPassphraseCb): Stash python errors.
4796         * lang/python/helpers.h (pygpgme_raise_callback_exception): New
4797         prototype.
4798         * lang/python/pyme/core.py ({Context,Data}.__init__): Move common
4799         initialization to superclass.
4800         (Context.set_progress_cb): Hand in 'self'.
4801         * lang/python/pyme/util.py (GpgmeWrapper.__init__): New function.
4802         (GpgmeWrapper.__getattr__): Raise stashed exceptions.
4803         * lang/python/tests/Makefile.am (py_tests): Add new test.
4804         * lang/python/tests/t-callbacks.py: New file.
4805
4806 2016-05-19  Andre Heinecke  <aheinecke@intevation.de>
4807
4808         Qt: Check for graphviz and set HAVE_DOT correctly.
4809         + commit 2f748b5a2d162be4f23b18782219771ead54cb51
4810         * configure.ac: Check for graphviz and define HAVE_DOT.
4811         * lang/qt/doc/Doxyfile.in (HAVE_DOT): Use variable.
4812
4813 2016-05-19  Justus Winter  <justus@gnupg.org>
4814
4815         python: Add more tests.
4816         + commit 464d404c8816fc93baf945816c93e86bdeb0ea39
4817         * lang/python/tests/Makefile.am (py_tests): Add new tests.
4818         * lang/python/tests/support.py (print_data): New function.
4819         * lang/python/tests/t-decrypt.py: Use new function.
4820         * lang/python/tests/t-encrypt.py: Likewise.
4821         * lang/python/tests/t-sign.py: New file.
4822         * lang/python/tests/t-encrypt-sym.py: Likewise.
4823
4824         python: More type conversion fixes.
4825         + commit c1c893e3384a07ff864507902fbac4a7fee4d6f1
4826         * lang/python/helpers.c (pyPassphraseCb): Cope with 'uid_hint' being
4827         NULL, convert it to an Unicode object, and cope with the callback
4828         returning both Unicode and bytes objects.
4829
4830         python: Fix import.
4831         + commit 07f71cd17706093ca6b1507c41609356d479ae9f
4832         * lang/python/helpers.c (pygpgme_exception_init): Make module import
4833         relative.
4834
4835 2016-05-19  Andre Heinecke  <aheinecke@intevation.de>
4836
4837         Qt: Fix compilation of unit tests.
4838         + commit 375523ead3a749d77d286c56f10d403c07f2b014
4839         * lang/qt/tests/Makefile.am (AM_CPPFLAGS): Add -DBUILDING_QGPGME.
4840
4841 2016-05-18  Justus Winter  <justus@gnupg.org>
4842
4843         python: Various fixes.
4844         + commit 2c3a5d93e78cfca22785e51c5a65184a47da4bff
4845         * configure.ac: Fix SWIG detection, bump required Python version.
4846         * lang/python/Makefile.am: Portability fix.
4847
4848 2016-05-18  Andre Heinecke  <aheinecke@intevation.de>
4849
4850         Fix typo in compatibility declaration.
4851         + commit f0dca0ab92ed18d80e30d7d39db1596b4112794f
4852         * src/op-support.c (GPG_ERR_SUBKEYS_EXP_REV): Change to
4853         GPG_ERR_SUBKEYS_EXP_OR_REV.
4854
4855 2016-05-17  Werner Koch  <wk@gnupg.org>
4856
4857         tests: New maintenance helper run-encrypt.
4858         + commit 30b447fcfe0e4f362c2575e1b9388e8144b5b2fd
4859         * tests/run-encrypt.c: New.
4860
4861         Return dedicated error code for all subkeys expired or revoked.
4862         + commit 315fb73d4a774e2c699ac1804f5377559b4d0027
4863         * src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
4864         (GPGME_SIGSUM_TOFU_CONFLICT): New.
4865         * src/status-table.c (KEY_CONSIDERED): New.
4866         * src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
4867         KC_FLAGS.  Use calloc.  Detect all expired or revoked subkeys.
4868         (_gpgme_parse_key_considered): New.
4869         * src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
4870         (release_op_data): Free KC_FPR.
4871         (_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
4872         * src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
4873         (release_op_data): Free KC_FPR.
4874         (_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
4875
4876 2016-05-17  Andre Heinecke  <aheinecke@intevation.de>
4877
4878         Qt / Cpp: Port auto_ptr to unique_ptr.
4879         + commit 9b36ebf37a3b889c955ba68038bd5b3d9c5cde4e
4880         * lang/cpp/src/context.cpp,
4881         lang/cpp/src/context.h,
4882         lang/cpp/src/context_p.h (Context::createForEngine),
4883         (Context::edit, Context::startEditing),
4884         (Context::takeLastEditInteractor, Context::cardEdit),
4885         (Context::startCardEditing, Context::takeLastCardEditInteractor),
4886         (Context::assuanTransact, Context::startAssuanTransaction),
4887         (Context::takeLastAssuanTransaction): Port to unique_ptr.
4888         * lang/qt/src/qgpgmeadduseridjob.cpp,
4889         lang/qt/src/qgpgmechangeexpiryjob.cpp,
4890         lang/qt/src/qgpgmechangeownertrustjob.cpp,
4891         lang/qt/src/qgpgmechangepasswdjob.cpp,
4892         lang/qt/src/qgpgmesignkeyjob.cpp: Update accordingly.
4893
4894 2016-05-17  Justus Winter  <justus@gnupg.org>
4895
4896         build: Add python autoconf macro.
4897         + commit 4711a1e181153a2395e5f523047595abd47965db
4898         * m4/ax_python_devel.m4: New file.
4899
4900         python: Clean up examples.
4901         + commit 10328324c8fc9725cd0c885eaebfc80dc32c1ff6
4902         * lang/python/examples/delkey.py: Clean up example.
4903         * lang/python/examples/encrypt-to-all.py: Likewise.
4904         * lang/python/examples/genkey.py: Likewise.
4905         * lang/python/examples/inter-edit.py: Likewise.
4906         * lang/python/examples/sign.py: Likewise.
4907         * lang/python/examples/signverify.py: Likewise.
4908         * lang/python/examples/simple.py: Likewise.
4909         * lang/python/examples/t-edit.py: Likewise.
4910         * lang/python/examples/verifydetails.py: Likewise.
4911         * lang/python/pyme/__init__.py: Likewise.
4912
4913         python: Import GPGMEError.
4914         + commit 64e5fe767f45e9ccb0fb3fe919171c222132a54c
4915         * pyme/core.py: Import GPGMEError.
4916
4917         Fixes c5d118b2.
4918
4919         python: Port more tests.
4920         + commit 9ceaec25918c6c5f2dfafe4e20181b83ce78f6ce
4921         * lang/python/Makefile.am: Add bits from the c test suite.
4922         * lang/python/support.py: New file.
4923         * lang/python/t-decrypt.py: Likewise.
4924         * lang/python/t-encrypt.py: Likewise.
4925
4926 2016-05-13  Andre Heinecke  <aheinecke@intevation.de>
4927
4928         Qt: Add keyLocateJob and test for it.
4929         + commit 52f2295d528029a36a3e0a89c777297762b3fc9b
4930         * configure.ac (LIBQGPGME_LT_REVISION): Bump.
4931         * lang/qt/src/protocol.h (locateKeysJob): Add Job.
4932         * lang/qt/src/protocol_p.h (locateKeysJob): Implement.
4933         * lang/qt/tests/Makefile.am: Add t-keylocate.
4934         * lang/qt/tests/t-keylocate.cpp: New.
4935
4936         Qt: Add missing copyright header in test.
4937         + commit 66ded1a5ce7236254f8541addecd4c3bc7b2878e
4938         * lang/qt/tests/t-keylist.cpp: Add copyright header.
4939
4940 2016-05-12  Justus Winter  <justus@gnupg.org>
4941
4942         python: Share generated methods between objects.
4943         + commit 11314f0db6e57597e3f56351a86fdb36a7a17dd7
4944         * lang/python/pyme/util.py (GpgmeWrapper.__getattr__): Monkey-patch
4945         the class.
4946         * lang/python/tests/t-wrapper.py: Demonstrate the sharing.
4947
4948         python: Raise exceptions on write errors.
4949         + commit c5d118b2a76e9528df780d11da9566ff7c22e4f5
4950         * lang/python/pyme/core.py (Data.write): Handle errors.
4951         * lang/python/pyme/errors.py (GPGMEError.fromSyserror): New function.
4952
4953         python: Fix writing to data buffers.
4954         + commit f7094d8358e933f3ce074eade7a40b2a7d291180
4955         * lang/python/gpgme.i: Add typemap for buffers.
4956         * lang/python/pyme/core.py (Data.write): Fix function.
4957         * lang/python/tests/Makefile.am: Add new test.
4958         * lang/python/tests/t-data.py: New file.
4959
4960         python: Add a test suite.
4961         + commit e64bffe0307d14204b00a177a472cd4f99c07561
4962         * configure.ac: Add new Makefile.
4963         * lang/python/Makefile.am: Add subdirectory.
4964         * lang/python/tests/Makefile.am: New file.
4965         * lang/python/tests/t-wrapper.py: Likewise.
4966
4967         python: Cache generated wrapper functions.
4968         + commit ed0ce84fbd2904bf59ac66ae7422716db3624efa
4969         * lang/python/util.py (GpgmeWrap.__getattr__): Cache generated wrapper
4970         functions.
4971
4972         python: Fix function invocation.
4973         + commit e3d3d366bd1a1aea8a38ae5dcbf71ea3c784e920
4974         * lang/python/pyme/core.py (Data.new_from_fd): Fix function
4975         invocation.
4976
4977         python: Fix name of exception, make slot methods explicit.
4978         + commit af9371eb63664c92fb67e8e7e03cc984e7d38a7f
4979         * lang/python/pyme/util.py (GpgmeWrapper._getctype): Fix exception,
4980         add docstring.
4981         (GpgmeWrapper._getnameprepend): New function.
4982         (GpgmeWrapper._errorcheck): Likewise.
4983
4984         python: Handle interpreter shutdown.
4985         + commit ce5121ad53b0e17fbf9150b354c80da73f7fe190
4986         * lang/python/pyme/core.py: Avoid races at interpreter shutdown.  This
4987         silences the most annoying occurrences, however this problem also
4988         affects the SWIG generated code, which might indicate that the real
4989         problem is somewhere else.  If so, this change can be easily reverted.
4990
4991         python: Make test case more robust.
4992         + commit c89d3a71ad20ff02755539a44f254b1e59054c4a
4993         * lang/python/examples/t-edit.py: Check if key is found.
4994
4995         python: Fix type translation.
4996         + commit d60deb8a127fb35c01acc729f33b014840af0e7b
4997         * lang/python/gpgme.i: Adjust to Python3's string type being
4998         'Unicode', not 'bytes'.  Fix type checking.
4999         * lang/python/core.py (Data.write): Add docstring mentioning the
5000         expected type of parameter 'buffer'.
5001         (Data.read): Adjust read loop.  Also, use a saner chunk size, and join
5002         all chunks at the end instead of adding them.
5003         * lang/python/examples/simple.py: Adjust example.
5004
5005 2016-05-11  Andre Heinecke  <aheinecke@intevation.de>
5006
5007         Cpp: Ensure gpgme.h is taken from current build.
5008         + commit b8de79160b2e05ac84d8feb61ff7ed1f7015a623
5009         * lang/cpp/src/Makefile.am (AM_CPPFLAGS): Add gpgme.h location.
5010
5011 2016-05-11  Justus Winter  <justus@gnupg.org>
5012
5013         python: Fix simple example.
5014         + commit bbeee5e1a060f2d1e37a08220eb552cf4673a058
5015         * lang/python/examples/simple.py: Flush stdout, encode name as
5016         UTF-8 before passing it to GPGME.
5017
5018         python: Integrate into the build system.
5019         + commit a29babd07cf9f9625d2b5aa2eb6b7bc9d1828359
5020         * configure.ac: Make Python bindings configurable, add new Makefile.
5021         * lang/python/Makefile.am: New file.
5022         * lang/python/setup.py: Integrate into the build system.
5023         * m4/ax_pkg_swig.m4: New file from the autoconf archive.
5024         * m4/m4_ax_swig_python.m4: Likewise.
5025
5026 2016-05-10  Andre Heinecke  <aheinecke@intevation.de>
5027
5028         Qt / Cpp: Fix make dist.
5029         + commit c303292aca26c43b6efe98719edb3ff7b2d6665d
5030         * lang/cpp/src/Makefile.am (EXTRA_DIST): Fix typo.
5031         (private_gpgmepp_headers): New. Private headers.
5032         (libgpgmepp_la_SOURCES): Add private headers.
5033         * lang/qt/src/Makefile.am (t_keylist_SOURCES): Remove non existent
5034         header.
5035
5036 2016-05-10  Justus Winter  <justus@gnupg.org>
5037
5038         python: PEP8 fixes.
5039         + commit 11392a80d9a85bcd8718b105e6d58038e61beaac
5040         Cherry picked from 0267c151.
5041
5042 2016-05-10  Andre Heinecke  <aheinecke@intevation.de>
5043
5044         Qt: Make Protocol class public API.
5045         + commit 56c4d9ea9520c95612e525b2fa1359db6fa88f4a
5046         * lang/qt/src/Makefile.am (qgpgme_headers): Add protocol.h
5047         (private_qgpgme_headers): Add protocol_p.h
5048         * lang/qt/src/protocol.h: New. From QGpgMEBackend.
5049         * lang/qt/src/protocol_p.h: New. From QGpgMEBackend.
5050         * lang/qt/src/qgpgmebackend.h,
5051         lang/qt/src/qgpgmebackend.cpp (Protocol): Removed.
5052
5053         Qt: Make doxygen quieter.
5054         + commit 97225bb01cd2ffa1d84c7fedbc577275de4a4893
5055         * lang/qt/doc/Doxyfile.in: Quiet and no undocumented warnings.
5056
5057         Qt: Only install public headers.
5058         + commit 740f92a7b83389ee9bde98b7bd25556793500b8b
5059         * lang/qt/src/Makefile.am: Do not install all headers.
5060
5061         Qt: Add test for async keylisting.
5062         + commit 0e3195948ddaba3af07d2415bb496491076edc17
5063         * src/lang/qt/tests/t-keylist.cpp(KeyListTest::testKeyListAsync): New.
5064
5065 2016-05-10  Werner Koch  <wk@gnupg.org>
5066
5067         Allow cc to detect missing cases in a switch.
5068         + commit fc38c15136c87ce971a8381fa87399088dd5a3cc
5069         * src/delete.c (delete_status_handler): Remove default case from a
5070         switch so that cc can check the use of all enum values.
5071
5072 2016-05-06  Andre Heinecke  <aheinecke@intevation.de>
5073
5074         Use common error message style for qt lang checks.
5075         + commit a579be82c84f0b9732ee3d52ff2142a3decf95d7
5076         * configure.ac: Use common error highliting for qt lang options.
5077
5078         Qt: Fix license mentioned in README.
5079         + commit 11ff8d5964bf66f905818514f6a51fc881ea1a56
5080         * lang/qt/README: License is GPLv2+ and not LGPL.
5081
5082         Add maybe mode for langs and default to it.
5083         + commit cd267791e9bd73505a2a1ea90c85df988e153c19
5084         * configure.ac (languages): Warn and disable langs for which
5085         requirements are not met.
5086
5087         Cpp: Handle PINENTRY_LAUNCHED status line.
5088         + commit 3fad1216770f446a89801d842aa8667356a5ec95
5089         * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
5090         Add GPGME_STATUS_PINENTRY_LAUNCHED.
5091
5092 2016-04-12  Andre Heinecke  <aheinecke@intevation.de>
5093
5094         Cpp: Add support for pubkey_algo_name.
5095         + commit 5489532ad6ccf3a9b59405686b8a17352f1ecf06
5096         * lang/cpp/src/key.cpp (Subkey::algoName): New.
5097         * lang/cpp/src/key.h: Declare.
5098
5099         Cpp: Add support for gpgme_data_identify.
5100         + commit d949d711dc1d944a9d627d39a89af74943a5a8c1
5101         * lang/cpp/src/data.cpp (Data::type): New.
5102         * lang/cpp/src/data.h (Data::Type): New enum mapping.
5103
5104         Fix configuration without Qt language.
5105         + commit 6dba47c3a2c32d7c1e1d91a96030f99f606433ea
5106         * configure.ac: Define HAVE_DOXYGEN also if qt should not be built.
5107
5108 2016-04-11  Andre Heinecke  <aheinecke@intevation.de>
5109
5110         Qt/Cpp: Bump so version to 6.
5111         + commit 8e7074dbb8093cc342e330bcd6b172b4f769a0c6
5112         * configure.ac (LIBGPGMEPP_LT_CURRENT, LIBQGPGME_LT_CURRENT): Bump.
5113
5114         Qt / Cpp: Mention coding style in READMES.
5115         + commit d2b55101195efe9702e855a48fc6e21839fb98cc
5116         * src/lang/cpp/README, src/lang/qt/README: Add hacking note.
5117
5118         Qt: Add doc generation with doxygen.
5119         + commit a1e95f36ce1895cd9894f6d3ca76640c42c2f9fc
5120         * configure.ac: Look for doxygen if qt is built.
5121          Configure new files.
5122         * lang/qt/doc/Doxyfile.in: New.
5123         * lang/qt/doc/Makefile.am: New.
5124         * lang/qt/README: Update.
5125
5126         Qt: Fix unit test by adding initial.test dep.
5127         + commit d9f7a18ed88127e7f05d770d55118d1e928f3b3f
5128         * lang/qt/tests/t-keylist.cpp: Verify that GNUPGHOME is set.
5129         * lang/qt/tests/initial.test: New dummy test.
5130         * lang/qt/tests/Makefile.am: Add dependency to initial.test
5131
5132         Qt: Remove remaining boost usage.
5133         + commit afd8fad6e275e2f74b2ad045dce05d826986e2ec
5134         * lang/qt/src/dataprovider.h,
5135          lang/qt/src/decryptjob.h,
5136          lang/qt/src/decryptverifyjob.h,
5137          lang/qt/src/encryptjob.h,
5138          lang/qt/src/qgpgmeadduseridjob.cpp,
5139          lang/qt/src/qgpgmechangeexpiryjob.cpp,
5140          lang/qt/src/qgpgmechangeownertrustjob.cpp,
5141          lang/qt/src/qgpgmechangepasswdjob.cpp,
5142          lang/qt/src/qgpgmedecryptjob.cpp,
5143          lang/qt/src/qgpgmedecryptverifyjob.cpp,
5144          lang/qt/src/qgpgmedeletejob.cpp,
5145          lang/qt/src/qgpgmedownloadjob.cpp,
5146          lang/qt/src/qgpgmeencryptjob.cpp,
5147          lang/qt/src/qgpgmeexportjob.cpp,
5148          lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
5149          lang/qt/src/qgpgmeimportjob.cpp,
5150          lang/qt/src/qgpgmekeygenerationjob.cpp,
5151          lang/qt/src/qgpgmekeylistjob.cpp,
5152          lang/qt/src/qgpgmenewcryptoconfig.cpp,
5153          lang/qt/src/qgpgmenewcryptoconfig.h,
5154          lang/qt/src/qgpgmesignencryptjob.cpp,
5155          lang/qt/src/qgpgmesignjob.cpp,
5156          lang/qt/src/qgpgmesignkeyjob.cpp,
5157          lang/qt/src/qgpgmeverifydetachedjob.cpp,
5158          lang/qt/src/qgpgmeverifyopaquejob.cpp,
5159          lang/qt/src/signencryptjob.h,
5160          lang/qt/src/signjob.h,
5161          lang/qt/src/threadedjobmixin.cpp,
5162          lang/qt/src/threadedjobmixin.h,
5163          lang/qt/src/verifydetachedjob.h,
5164          lang/qt/src/verifyopaquejob.h: Remove boost usage.
5165
5166         Qt: Remove predicates.h and stl_util.h.
5167         + commit e18256fc5f613da9406da60c3ef2f84f2be04ef0
5168         * src/lang/qt/predicates.h, src/lang/qt/stl_util.h: Removed.
5169
5170         Qt: Remove usage of stl_util.h and predicates.h.
5171         + commit d293bd32293929eeb3f6ec35f916a4678fb51729
5172         * src/lang/qt/qgpgmelistallkeysjob.cpp: Use comperators from
5173           gpgmepp instead of detail. Remove boost usage.
5174
5175         Cpp: Add string comparators for keys.
5176         + commit 1bb162a54ba480413c4da07f2578efe6860494c0
5177         * lang/cpp/src/global.h (GPGMEPP_MAKE_STRCMP): New.
5178           (_gpgmepp_strcmp): NULL save wrapper around std::strcmp.
5179         * lang/cpp/src/key.h: Add comparators for various attributes.
5180
5181         Cpp: Remove last usages of boost.
5182         + commit 691950e18cf08a3f9bbc2004501834cd47bea579
5183         * lang/cpp/src/configuration.cpp: Use std::remove_pointer.
5184           (Configuration::operator<<): std::for_each.
5185         * lang/cpp/src/context.cpp: Delete manually instead of scoped ptr.
5186         * lang/cpp/src/scdgetinfoassuantransaction.cpp: Use static_assert.
5187           (to_reader_list): Tokenize with getline.
5188
5189 2016-04-04  Andre Heinecke  <aheinecke@intevation.de>
5190
5191         Add pthread in gpgmepp config.
5192         + commit cc68ff5f7210ac879fbdf719fcd5944f9ae5602b
5193         * lang/cpp/src/GpgmeppConfig.cmake.in.in: Add pthread.
5194
5195 2016-04-03  Andre Heinecke  <aheinecke@intevation.de>
5196
5197         Cpp / Qt: Reduce boost usage (memory and tuple)
5198         + commit f98898ab1a6952e0c3a5d235963a27eba2e19e46
5199         * cpp/src/assuanresult.h,
5200          cpp/src/configuration.cpp,
5201          cpp/src/configuration.h,
5202          cpp/src/data.h,
5203          cpp/src/decryptionresult.h,
5204          cpp/src/defaultassuantransaction.cpp,
5205          cpp/src/encryptionresult.cpp,
5206          cpp/src/encryptionresult.h,
5207          cpp/src/engineinfo.h,
5208          cpp/src/gpgagentgetinfoassuantransaction.cpp,
5209          cpp/src/gpgsignkeyeditinteractor.cpp,
5210          cpp/src/importresult.cpp,
5211          cpp/src/importresult.h,
5212          cpp/src/key.h,
5213          cpp/src/keygenerationresult.h,
5214          cpp/src/keylistresult.h,
5215          cpp/src/notation.h,
5216          cpp/src/signingresult.cpp,
5217          cpp/src/signingresult.h,
5218          cpp/src/verificationresult.cpp,
5219          cpp/src/verificationresult.h,
5220          cpp/src/vfsmountresult.h,
5221          qt/src/dataprovider.cpp,
5222          qt/src/dataprovider.h,
5223          qt/src/decryptjob.h,
5224          qt/src/decryptverifyjob.h,
5225          qt/src/downloadjob.h,
5226          qt/src/encryptjob.h,
5227          qt/src/qgpgmeadduseridjob.cpp,
5228          qt/src/qgpgmechangeexpiryjob.cpp,
5229          qt/src/qgpgmechangeownertrustjob.cpp,
5230          qt/src/qgpgmechangepasswdjob.cpp,
5231          qt/src/qgpgmedecryptjob.cpp,
5232          qt/src/qgpgmedecryptjob.h,
5233          qt/src/qgpgmedecryptverifyjob.cpp,
5234          qt/src/qgpgmedecryptverifyjob.h,
5235          qt/src/qgpgmedeletejob.cpp,
5236          qt/src/qgpgmedownloadjob.cpp,
5237          qt/src/qgpgmedownloadjob.h,
5238          qt/src/qgpgmeencryptjob.cpp,
5239          qt/src/qgpgmeencryptjob.h,
5240          qt/src/qgpgmeexportjob.cpp,
5241          qt/src/qgpgmeexportjob.h,
5242          qt/src/qgpgmeimportfromkeyserverjob.cpp,
5243          qt/src/qgpgmeimportfromkeyserverjob.h,
5244          qt/src/qgpgmeimportjob.cpp,
5245          qt/src/qgpgmeimportjob.h,
5246          qt/src/qgpgmekeygenerationjob.cpp,
5247          qt/src/qgpgmekeygenerationjob.h,
5248          qt/src/qgpgmekeylistjob.cpp,
5249          qt/src/qgpgmekeylistjob.h,
5250          qt/src/qgpgmelistallkeysjob.cpp,
5251          qt/src/qgpgmelistallkeysjob.h,
5252          qt/src/qgpgmenewcryptoconfig.cpp,
5253          qt/src/qgpgmenewcryptoconfig.h,
5254          qt/src/qgpgmesignencryptjob.cpp,
5255          qt/src/qgpgmesignencryptjob.h,
5256          qt/src/qgpgmesignjob.cpp,
5257          qt/src/qgpgmesignjob.h,
5258          qt/src/qgpgmesignkeyjob.cpp,
5259          qt/src/qgpgmeverifydetachedjob.cpp,
5260          qt/src/qgpgmeverifydetachedjob.h,
5261          qt/src/qgpgmeverifyopaquejob.cpp,
5262          qt/src/qgpgmeverifyopaquejob.h,
5263          qt/src/signencryptjob.h,
5264          qt/src/signjob.h,
5265          qt/src/threadedjobmixin.h,
5266          qt/src/verifydetachedjob.h,
5267          qt/src/verifyopaquejob.h: Reduce boost usage.
5268
5269         Cpp: Require c++ 11 if cpp binding requested.
5270         + commit c07aaef6eb8a9b5e623479f27d562fd1570bf4bb
5271         * configure.ac: Call ax_cxx_compile_stdcxx
5272         * m4/ax_cxx_compile_stdcxx.m4
5273
5274         Qt: Add static factor methods for protocol.
5275         + commit 0991485170ca4ef90fd566540522027d0fc59a72
5276         * lang/qt/src/qgpgmebackend.cpp (QGpgME::openpgp, QGpgME::smime): New.
5277         * lang/qt/src/qgpgmebackend.h: Declare.
5278         * lang/qt/tests/t-keylist.cpp (KeyListTest::testSingleKeyListSync):
5279           Use new functions.
5280
5281         Qt: Add a unit test for qgpgme.
5282         + commit faf987dd62893955251378a2a715edd2892a540c
5283         * configure.ac: Configure test Makefile.
5284         * m4/qt.m4: Look up Qt5Test flags.
5285         * lang/qt/tests/t-keylist.cpp: New. Simple keylist check.
5286         * lang/qt/tests/Makefile.am: New. General test framework.
5287
5288         Qt: Add missing MOC includes.
5289         + commit b7b9e38399a572cb61a297db552026eac5b2a5e1
5290         * qgpgmeadduseridjob.cpp,
5291          qgpgmechangeexpiryjob.cpp,
5292          qgpgmechangeownertrustjob.cpp,
5293          qgpgmechangepasswdjob.cpp,
5294          qgpgmedecryptjob.cpp,
5295          qgpgmedecryptverifyjob.cpp,
5296          qgpgmedeletejob.cpp,
5297          qgpgmedownloadjob.cpp,
5298          qgpgmeencryptjob.cpp,
5299          qgpgmeexportjob.cpp,
5300          qgpgmeimportfromkeyserverjob.cpp,
5301          qgpgmeimportjob.cpp,
5302          qgpgmekeygenerationjob.cpp,
5303          qgpgmekeylistjob.cpp,
5304          qgpgmelistallkeysjob.cpp,
5305          qgpgmerefreshkeysjob.cpp,
5306          qgpgmesecretkeyexportjob.cpp,
5307          qgpgmesignencryptjob.cpp,
5308          qgpgmesignjob.cpp,
5309          qgpgmesignkeyjob.cpp,
5310          qgpgmeverifydetachedjob.cpp,
5311          qgpgmeverifyopaquejob.cpp: Add missing MOC includes.
5312
5313         Qt: Declare pure virtuals as such.
5314         + commit 0cc9006dbc59d87c6bcda88b36d59dcb69ac35cb
5315         * lang/qt/src/qgpgmebackend.h (Protocol): Make all functions
5316          pure virtual.
5317
5318         Qt: Don't declare showErrorDialog anymore.
5319         + commit 3e38cc6fc67c420dec3e9e8afd072b4c8a157c85
5320         * cpp/qt/src/job.h: Remove showErrorDialog.
5321
5322         Qt: Only use GpgME based config class.
5323         + commit 7071b2a9c00b85d434d01b6166269ebf48b01b81
5324         * lang/qt/src/qgpgmecryptoconfig.cpp,
5325          lang/qt/src/qgpgmecryptoconfig.h: Removed.
5326         * lang/qt/src/qgpgmebackend.cpp: Return newcryptoconfig.
5327
5328 2016-04-02  Andre Heinecke  <aheinecke@intevation.de>
5329
5330         Add additional include path in config files.
5331         + commit 63c115b067400e1b02c7d849c99f54dc9f394d68
5332         * lang/cpp/src/GpgmeppConfig.cmake.in.in
5333          lang/qt/src/QGpgmeConfig.cmake.in.in: Include directory above headers.
5334
5335         Qt: Fix library name in nodist variable.
5336         + commit 576be46f34b42e896a5e3be65560a4b518a758be
5337         * lang/qt/Makefile.am (nodist_qgpgme_SOURCES): Change to real name.
5338
5339         Add missing files to QGpgME.
5340         + commit a440050fc2c11e4867da9d4707616fa23ac52141
5341         * lang/qt/src/gpgme_backend_debug.cpp,
5342          lang/qt/src/gpgme_backend_debug.h,
5343          lang/qt/src/predicates.h,
5344          lang/qt/src/stl_util.h: New.
5345
5346         Add QGpgME code from libkleo.
5347         + commit 226e51052ae73efa8d9f30729b28de68d35231af
5348         * lang/qt/src/Makefile.am,
5349         lang/qt/src/abstractimportjob.h,
5350         lang/qt/src/adduseridjob.h,
5351         lang/qt/src/changeexpiryjob.h,
5352         lang/qt/src/changeownertrustjob.h,
5353         lang/qt/src/changepasswdjob.h,
5354         lang/qt/src/cryptoconfig.h,
5355         lang/qt/src/decryptjob.h,
5356         lang/qt/src/decryptverifyjob.h,
5357         lang/qt/src/deletejob.h,
5358         lang/qt/src/downloadjob.h,
5359         lang/qt/src/encryptjob.h,
5360         lang/qt/src/exportjob.h,
5361         lang/qt/src/hierarchicalkeylistjob.h,
5362         lang/qt/src/importfromkeyserverjob.h,
5363         lang/qt/src/importjob.h,
5364         lang/qt/src/job.cpp,
5365         lang/qt/src/job.h,
5366         lang/qt/src/keygenerationjob.h,
5367         lang/qt/src/keylistjob.h,
5368         lang/qt/src/listallkeysjob.h,
5369         lang/qt/src/multideletejob.h,
5370         lang/qt/src/qgpgmeadduseridjob.cpp,
5371         lang/qt/src/qgpgmeadduseridjob.h,
5372         lang/qt/src/qgpgmebackend.cpp,
5373         lang/qt/src/qgpgmebackend.h,
5374         lang/qt/src/qgpgmechangeexpiryjob.cpp,
5375         lang/qt/src/qgpgmechangeexpiryjob.h,
5376         lang/qt/src/qgpgmechangeownertrustjob.cpp,
5377         lang/qt/src/qgpgmechangeownertrustjob.h,
5378         lang/qt/src/qgpgmechangepasswdjob.cpp,
5379         lang/qt/src/qgpgmechangepasswdjob.h,
5380         lang/qt/src/qgpgmecryptoconfig.cpp,
5381         lang/qt/src/qgpgmecryptoconfig.h,
5382         lang/qt/src/qgpgmedecryptjob.cpp,
5383         lang/qt/src/qgpgmedecryptjob.h,
5384         lang/qt/src/qgpgmedecryptverifyjob.cpp,
5385         lang/qt/src/qgpgmedecryptverifyjob.h,
5386         lang/qt/src/qgpgmedeletejob.cpp,
5387         lang/qt/src/qgpgmedeletejob.h,
5388         lang/qt/src/qgpgmedownloadjob.cpp,
5389         lang/qt/src/qgpgmedownloadjob.h,
5390         lang/qt/src/qgpgmeencryptjob.cpp,
5391         lang/qt/src/qgpgmeencryptjob.h,
5392         lang/qt/src/qgpgmeexportjob.cpp,
5393         lang/qt/src/qgpgmeexportjob.h,
5394         lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
5395         lang/qt/src/qgpgmeimportfromkeyserverjob.h,
5396         lang/qt/src/qgpgmeimportjob.cpp,
5397         lang/qt/src/qgpgmeimportjob.h,
5398         lang/qt/src/qgpgmekeygenerationjob.cpp,
5399         lang/qt/src/qgpgmekeygenerationjob.h,
5400         lang/qt/src/qgpgmekeylistjob.cpp,
5401         lang/qt/src/qgpgmekeylistjob.h,
5402         lang/qt/src/qgpgmelistallkeysjob.cpp,
5403         lang/qt/src/qgpgmelistallkeysjob.h,
5404         lang/qt/src/qgpgmenewcryptoconfig.cpp,
5405         lang/qt/src/qgpgmenewcryptoconfig.h,
5406         lang/qt/src/qgpgmerefreshkeysjob.cpp,
5407         lang/qt/src/qgpgmerefreshkeysjob.h,
5408         lang/qt/src/qgpgmesecretkeyexportjob.cpp,
5409         lang/qt/src/qgpgmesecretkeyexportjob.h,
5410         lang/qt/src/qgpgmesignencryptjob.cpp,
5411         lang/qt/src/qgpgmesignencryptjob.h,
5412         lang/qt/src/qgpgmesignjob.cpp,
5413         lang/qt/src/qgpgmesignjob.h,
5414         lang/qt/src/qgpgmesignkeyjob.cpp,
5415         lang/qt/src/qgpgmesignkeyjob.h,
5416         lang/qt/src/qgpgmeverifydetachedjob.cpp,
5417         lang/qt/src/qgpgmeverifydetachedjob.h,
5418         lang/qt/src/qgpgmeverifyopaquejob.cpp,
5419         lang/qt/src/qgpgmeverifyopaquejob.h,
5420         lang/qt/src/refreshkeysjob.h,
5421         lang/qt/src/signencryptjob.h,
5422         lang/qt/src/signjob.h,
5423         lang/qt/src/signkeyjob.h,
5424         lang/qt/src/specialjob.h,
5425         lang/qt/src/threadedjobmixin.cpp,
5426         lang/qt/src/threadedjobmixin.h,
5427         lang/qt/src/verifydetachedjob.h,
5428         lang/qt/src/verifyopaquejob.h: New.
5429         * lang/qt/src/Makefile.am:
5430
5431 2016-03-08  Andre Heinecke  <aheinecke@intevation.de>
5432
5433         Add qgpgme as qt language binding.
5434         + commit 8347f3d5fc3e476aa767fbbaf09a1310a6154280
5435         * configure.ac: Add version defines. Check for qt if neccessary.
5436         * lang/README: Mention qt
5437         * lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove comment. Find qgpgme.
5438         * lang/qt/src/Makefile.am: New. Build qgpgme.
5439         * lang/qt/README,
5440          lang/qt/src/Makefile.am,
5441          lang/qt/src/QGpgmeConfig.cmake.in.in,
5442          lang/qt/src/QGpgmeConfigVersion.cmake.in,
5443          lang/qt/src/dataprovider.cpp,
5444          lang/qt/src/dataprovider.h,
5445          lang/qt/src/qgpgme_export.h,
5446          m4/qt.m4: New.
5447         * lang/cpp/src/GpgmeppConfig.cmake.in.in,
5448          lang/cpp/src/Makefile.am: Fix generated config file.
5449
5450         Remove obsolete w32-qt code.
5451         + commit 58ed9c17f00f420035ecc6973a6c6ed948757a9a
5452         * configure.ac (w32-qt): Remove option and Qt checks.
5453         * src/Makefile.am: Remove BUILD_W32_QT handling.
5454         * src/kdpipeiodevice.cpp,
5455          src/kdpipeiodevice.h,
5456          src/kdpipeiodevice.moc,
5457          src/w32-qt-io.cpp: Removed.
5458
5459 2016-03-02  Andre Heinecke  <aheinecke@intevation.de>
5460
5461         Add version info for gpgmepp.
5462         + commit a06603d75e80aba58df58f9a41770c56b6a1f0b8
5463         * lang/cpp/src/Makefile.am (libgpgmepp_la_LDFLAGS): Add version info.
5464
5465         Add cmake configuration files.
5466         + commit 77c3fb450c7adf36804a55d76ff49a06a71d22a0
5467         * configure.ac: Add libgpgmepp version. Configure cmake files.
5468         * lang/cpp/src/Makefile.am: Add targets for cmake files.
5469          (EXTRA_DIST): Add cmake files.
5470
5471         Fix export header and windows export macros.
5472         + commit 98e5b672422ca1e38ca38ff0357cee6cc936aee0
5473         * lang/cpp/src/gpgme_export.h: Fix variable name. Add Windows ifdefs.
5474
5475         Add header installation.
5476         + commit c5291a88913ace8f2115021b69c7aeb59b4f79d4
5477         * lang/cpp/src/Makefile.am: Add headers as deps and install them.
5478          (AM_CPPFLAGS): Add BUILDING_GPGMEPP to be used in export macros.
5479
5480         Add enable-languages build option.
5481         + commit a313b3e28cc42785365822519b25d6a87dfdf0c9
5482         * acinclude.m4 (LIST_MEMBER): New macro.
5483         * configure.ac (enable-languages): New option. Add info output.
5484         * lang/Makefile.am: Only add enabled language subdirs.
5485
5486 2016-02-22  Andre Heinecke  <aheinecke@intevation.de>
5487
5488         Add README for gpgmepp.
5489         + commit 7286fc7f3d51d475f82c7c9821d031290f5b0066
5490         * lang/README: Note down cpp.
5491         * cpp/README: Add README based on original repo version.
5492
5493         Add buildsystem for Gpgmepp.
5494         + commit f5fd787b5b45cb14d539b5c26f44066eb9ac0f75
5495         * configure.ac: Configure Makefiles.
5496         * lang/Makefile.am: Add cpp subdir
5497         * lang/cpp/Makefile.am: New. Add src subdir.
5498         * lang/cpp/src/Makefile.am: New. Basic buildsystem.
5499
5500         Remove feature check ifdefs.
5501         + commit 433bb8e84b2d1e50b5c5b9f7f2006b60cd7d7785
5502         * lang/cpp/src/assuanresult.cpp,
5503          lang/cpp/src/callbacks.cpp,
5504          lang/cpp/src/configuration.cpp,
5505          lang/cpp/src/context.cpp,
5506          lang/cpp/src/context_glib.cpp,
5507          lang/cpp/src/context_qt.cpp,
5508          lang/cpp/src/context_vanilla.cpp,
5509          lang/cpp/src/data.cpp,
5510          lang/cpp/src/decryptionresult.cpp,
5511          lang/cpp/src/defaultassuantransaction.cpp,
5512          lang/cpp/src/editinteractor.cpp,
5513          lang/cpp/src/encryptionresult.cpp,
5514          lang/cpp/src/engineinfo.cpp,
5515          lang/cpp/src/eventloopinteractor.cpp,
5516          lang/cpp/src/global.h,
5517          lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
5518          lang/cpp/src/importresult.cpp,
5519          lang/cpp/src/interfaces/assuantransaction.h,
5520          lang/cpp/src/key.cpp,
5521          lang/cpp/src/keygenerationresult.cpp,
5522          lang/cpp/src/keylistresult.cpp,
5523          lang/cpp/src/scdgetinfoassuantransaction.cpp,
5524          lang/cpp/src/signingresult.cpp,
5525          lang/cpp/src/trustitem.cpp,
5526          lang/cpp/src/util.h,
5527          lang/cpp/src/verificationresult.cpp,
5528          lang/cpp/src/vfsmountresult.cpp: Remove feature checks.
5529
5530         Initial checkin of gpgmepp sources.
5531         + commit 0855a1296a1908016f011eb5e6552854ac53e63a
5532         Based on git.kde.org/pim/gpgmepp rev. 0e3ebc02
5533
5534         * lang/cpp/src/assuanresult.cpp,
5535          lang/cpp/src/assuanresult.h,
5536          lang/cpp/src/callbacks.cpp,
5537          lang/cpp/src/callbacks.h,
5538          lang/cpp/src/configuration.cpp,
5539          lang/cpp/src/configuration.h,
5540          lang/cpp/src/context.cpp,
5541          lang/cpp/src/context.h,
5542          lang/cpp/src/context_glib.cpp,
5543          lang/cpp/src/context_p.h,
5544          lang/cpp/src/context_qt.cpp,
5545          lang/cpp/src/context_vanilla.cpp,
5546          lang/cpp/src/data.cpp,
5547          lang/cpp/src/data.h,
5548          lang/cpp/src/data_p.h,
5549          lang/cpp/src/decryptionresult.cpp,
5550          lang/cpp/src/decryptionresult.h,
5551          lang/cpp/src/defaultassuantransaction.cpp,
5552          lang/cpp/src/defaultassuantransaction.h,
5553          lang/cpp/src/editinteractor.cpp,
5554          lang/cpp/src/editinteractor.h,
5555          lang/cpp/src/encryptionresult.cpp,
5556          lang/cpp/src/encryptionresult.h,
5557          lang/cpp/src/engineinfo.cpp,
5558          lang/cpp/src/engineinfo.h,
5559          lang/cpp/src/error.h,
5560          lang/cpp/src/eventloopinteractor.cpp,
5561          lang/cpp/src/eventloopinteractor.h,
5562          lang/cpp/src/exception.cpp,
5563          lang/cpp/src/exception.h,
5564          lang/cpp/src/global.h,
5565          lang/cpp/src/gpgadduserideditinteractor.cpp,
5566          lang/cpp/src/gpgadduserideditinteractor.h,
5567          lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
5568          lang/cpp/src/gpgagentgetinfoassuantransaction.h,
5569          lang/cpp/src/gpgmefw.h,
5570          lang/cpp/src/gpgmepp_export.h,
5571          lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
5572          lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
5573          lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
5574          lang/cpp/src/gpgsetownertrusteditinteractor.h,
5575          lang/cpp/src/gpgsignkeyeditinteractor.cpp,
5576          lang/cpp/src/gpgsignkeyeditinteractor.h,
5577          lang/cpp/src/importresult.cpp,
5578          lang/cpp/src/importresult.h,
5579          lang/cpp/src/key.cpp,
5580          lang/cpp/src/key.h,
5581          lang/cpp/src/keygenerationresult.cpp,
5582          lang/cpp/src/keygenerationresult.h,
5583          lang/cpp/src/keylistresult.cpp,
5584          lang/cpp/src/keylistresult.h,
5585          lang/cpp/src/notation.h,
5586          lang/cpp/src/result.h,
5587          lang/cpp/src/result_p.h,
5588          lang/cpp/src/scdgetinfoassuantransaction.cpp,
5589          lang/cpp/src/scdgetinfoassuantransaction.h,
5590          lang/cpp/src/signingresult.cpp,
5591          lang/cpp/src/signingresult.h,
5592          lang/cpp/src/trustitem.cpp,
5593          lang/cpp/src/trustitem.h,
5594          lang/cpp/src/util.h,
5595          lang/cpp/src/verificationresult.cpp,
5596          lang/cpp/src/verificationresult.h,
5597          lang/cpp/src/vfsmountresult.cpp,
5598          lang/cpp/src/vfsmountresult.h,
5599          lang/cpp/src/interfaces/assuantransaction.h,
5600          lang/cpp/src/interfaces/dataprovider.h,
5601          lang/cpp/src/interfaces/passphraseprovider.h,
5602          lang/cpp/src/interfaces/progressprovider.h: New.
5603
5604 2016-01-15  Werner Koch  <wk@gnupg.org>
5605
5606         Fix possible _SC_OPEN_MAX max problem on AIX.
5607         + commit e79199468ac54ce4fe919603ff7bada97267174f
5608         * src/posix-io.c [HAVE_STDINT_H]: Include stdint.h.
5609         (get_max_fds): Limit returned value for too high values.
5610
5611 2015-12-09  Werner Koch  <wk@gnupg.org>
5612
5613         w32: Avoid conflict with Mingw-w64 version 4.0.4-1.
5614         + commit 83415dffaea53611dbce77b50d8ddfb2a50aed2e
5615         * src/w32-util.c (mkstemp): Rename to my_mkstemp.  Change caller.
5616
5617 2015-12-04  Daiki Ueno  <ueno@gnu.org>
5618
5619         Return on user cancellation of delete operation.
5620         + commit 67d7f7a9383763b01daf877c846bf3e32f647fa5
5621         * src/delete.c (delete_status_handler): Return on ERROR status, if the
5622         error location is set to "delete_key.secret" and the code is either
5623         CANCELED or FULLY_CANCELED, which indicates a situation that the user
5624         selected "No" on the confirmation dialog.
5625
5626         doc: Fix minor errors.
5627         + commit 3b6e9a3d0afcdd3c2f1de19f15924c3404c7140a
5628         * doc/gpgme.texi: Fix errors and typos in the cancellation and
5629         gpgme_import_result_t documentation.
5630
5631 2015-10-29  Ben Kibbey  <bjk@luxsci.net>
5632
5633         Make use of user passphrase handler during passwd.
5634         + commit dfa79f9300b837b0f7f2ea44afa589bfcda1dbd9
5635         * src/passwd.c (passwd_start): set engine passphrase command handler.
5636
5637 2015-10-28  Werner Koch  <wk@gnupg.org>
5638
5639         w32: Add extra diagnostic about possible missing gpgme-w32spawn.exe.
5640         + commit bb2d11c1eebd4bcfb0f2cfce728026a7420dca47
5641         * src/w32-io.c (_gpgme_io_spawn): Add a new diagnostic.
5642
5643         w32: Improve locating gpgconf on 64 bit systems.
5644         + commit a82e9b182f62966207cad0972be6fa284329a5a1
5645         * src/w32-util.c (find_program_at_standard_place): Fallback to
5646         CSIDL_PROGRAM_FILESX86.
5647
5648         w32: Add new global flag "w32-inst-dir".
5649         + commit bb600aa8fd2f9575ee7afc64c978e3e7523b1173
5650         * src/gpgme.c (gpgme_set_global_flag): Add flag "w32-inst-dir";
5651         * src/posix-util.c (_gpgme_set_override_inst_dir): New stub.
5652         * src/w32-util.c (override_inst_dir): New var.
5653         (_gpgme_get_inst_dir): Return this var is set.
5654         (_gpgme_set_override_inst_dir): New.
5655
5656 2015-10-16  NIIBE Yutaka  <gniibe@fsij.org>
5657
5658         cleanup: Fix type mismatch around gpgme_error_t.
5659         + commit 0d9d0a6b5b0c6f474a079bbaef11078c5df5f3b5
5660         * src/data-compat.c (gpgme_error_to_errno): Use gpg_err_code
5661         to get error code from gpgme_error_t.
5662         * src/gpgme.c (gpgme_new): Don't use gpgme_error.
5663
5664 2015-08-31  Werner Koch  <wk@gnupg.org>
5665
5666         gpgme-tool: Switch to argparse.c for option parsing.
5667         + commit f0ccce855bd99fca7cfbbcafe3544e3113fedc67
5668         * src/argparse.c, src/argparse.h: New. Taken from current gnupg.
5669         * src/Makefile.am (gpgme_tool_SOURCES): New.
5670         * src/gpgme-tool.c: Remove all argp.h stuff.
5671         (my_strusage): New.
5672         (main): Change to use argparse.
5673
5674 2015-08-30  Werner Koch  <wk@gnupg.org>
5675
5676         Add gpgme_pubkey_algo_string.
5677         + commit c4b6b35bfa98e478f1d13f4ce3e664771f2604c2
5678         * src/gpgme.h.in (GPGME_PK_EDDSA): New.
5679         (gpgme_pubkey_algo_string): New.
5680         * src/conversion.c (_gpgme_map_pk_algo): Add new algo.
5681         * src/gpgme.c (gpgme_pubkey_algo_string): New.
5682         (gpgme_pubkey_algo_name): Reformat.
5683
5684 2015-08-26  Werner Koch  <wk@gnupg.org>
5685
5686         Release 1.6.0.
5687         + commit 107bff70edb611309f627058dd4777a5da084b1a
5688         * configure.ac: Set LT version to C25/A14/R0.
5689
5690         Make use of GPGRT macros is available.
5691         + commit c4f4b5c0a6fc172f7ceedc1a0021169e7f31b941
5692         * src/gpgme.h.in (_GPGME_INLINE): Define using GPGRT_INLINE if
5693         possible.  Fix problem with -Wundef by adding an extra "defined()".
5694         (_GPGME_GCC_VERSION): Define using GPGRT_ macro if possible.
5695
5696 2015-08-25  Werner Koch  <wk@gnupg.org>
5697
5698         Avoid -Wundef warnings if gpgme.h is used by g++.
5699         + commit 3f53d3d5d9e73a053b1e89073ef8f7cf01bfc8e6
5700         * src/gpgme.h.in (_GPGME_INLINE): Move definition into the
5701         extern-C-scope.
5702
5703         Add configure option --enable-build-timestamp.
5704         + commit ff91e699f7c14ea6cbc27b487cb40e9f6bd58901
5705         * configure.ac (BUILD_TIMESTAMP): Set to "<none>" by default.
5706
5707 2015-08-25  Daiki Ueno  <ueno@gnu.org>
5708
5709         Relax ttyname_r error checks.
5710         + commit 028a0ef3336c5180797fb247448683195376c007
5711         * src/engine-assuan.c (llass_new): Don't treat ttyname_r error as
5712         fatal.
5713         * src/engine-g13.c (g13_new): Likewise.
5714         * src/engine-gpg.c (gpg_new): Likewise.
5715         * src/engine-gpgsm.c (gpgsm_new): Likewise.
5716         * src/engine-uiserver.c (uiserver_new): Likewise.
5717
5718 2015-08-25  Werner Koch  <wk@gnupg.org>
5719
5720         Cleanup layout of gpgme.h.
5721         + commit 97f1f3e883808743da5ee144abab25de062f34ac
5722         * src/gpgme.h.in: Reorder prototypes.  Chnage some comments.
5723
5724         Improve error return by checking the FAILURE status.
5725         + commit 8ddc5801ade02297924447df5745c8877a96e5e3
5726         * src/gpgme.h.in (GPGME_STATUS_FAILURE): New.
5727         * src/status-table.c (FAILURE): New.
5728         * src/op-support.c (_gpgme_parse_failure): New.
5729         * src/passphrase.c (_gpgme_passphrase_status_handler): Forward FAILURE
5730         status line to the status callback.
5731
5732         * src/decrypt.c (op_data_t): Add field failure_code.
5733         (_gpgme_decrypt_status_handler): Parse that code and act upon it on EOF.
5734         * src/encrypt.c (op_data_t): Add field failure_code.
5735         (_gpgme_encrypt_status_handler): Parse that code and act upon it on EOF.
5736         * src/genkey.c (op_data_t): Add field failure_code.
5737         (genkey_status_handler): Parse that code and act upon it on EOF.
5738         * src/passwd.c (op_data_t): Add field failure_code.
5739         (passwd_status_handler): Parse that code and act upon it on EOF.
5740         * src/sign.c (op_data_t): Add field failure_code.
5741         (_gpgme_sign_status_handler): Parse that code and act upon it on EOF.
5742         * src/verify.c (op_data_t): Add field failure_code.
5743         (_gpgme_verify_status_handler): Parse that code and act upon it on EOF.
5744
5745         tests: Allow using run-sign to test loopback pinentry problems.
5746         + commit 491fcd91b84564232d5d061942baa50b99e166c0
5747         * tests/run-sign.c: Add options --status and --loopback.
5748
5749 2015-08-24  Werner Koch  <wk@gnupg.org>
5750
5751         Call status_cb for an ERROR status seen in the passphrase handler.
5752         + commit ad46f4f655e653580343c15f1b0b365b7d307d1b
5753         * src/passphrase.c (_gpgme_passphrase_status_handler): Call status_cb.
5754
5755         w32: Look for gpgconf in the new GnuPG 2.1 install dir.
5756         + commit a7dbab23ea4976d106d649aa515ffb2968a085ed
5757         * src/w32-util.c (_gpgme_get_gpgconf_path): Try another location of
5758         gpgconf.exe.
5759
5760         w32: Expect gpgme-w32spawn.exe only in the gpgme installation dir.
5761         + commit 06d6fd8ca01354c8f7cfc847c4ac1b868268cbaa
5762         * src/w32-util.c (find_program_at_standard_place): Remove.
5763         (_gpgme_get_gpg_path): Make the search order more explicit.
5764         (_gpgme_get_gpgconf_path): Ditto.
5765         (_gpgme_get_w32spawn_path): Search only in the inst_dir.
5766
5767         w32: Print the installation directory in debug mode.
5768         + commit df098d6a437109c57516db75addf3764a6dfda81
5769         * src/debug.c (debug_init) [W32]: Show libgpgme installation dir.
5770
5771         Add an export secret key feature.
5772         + commit 2b632bbb78eee2b94c122f66d171a7c80e9c4fb0
5773         * src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET): New.
5774         (GPGME_EXPORT_MODE_RAW): New.
5775         (GPGME_EXPORT_MODE_PKCS12): New.
5776         * src/export.c (export_start, export_ext_start): Allow new flags.
5777         * src/engine-gpg.c (export_common): Support secret key export.
5778         * src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Ditto.
5779
5780         * src/gpgme-tool.c (cmd_export): Add options --secret, --raw,
5781         and --pkcs12.
5782         * tests/run-export.c (main): Likewise.
5783
5784 2015-08-16  Ben Kibbey  <bjk@luxsci.net>
5785
5786         Parse INQUIRE_MAXLEN in the passphrase callback.
5787         + commit ccbaccbf2e0ba582d181b9ee4d8543d7c1248b2c
5788         * src/passphrase.c (_gpgme_passphrase_status_handler): Parse
5789         GPGME_STATUS_INQUIRE_MAXLEN.
5790         * src/passphrase.c (_gpgme_passphrase_command_handler): Send the
5791         INQUIRE_MAXLEN status message.
5792
5793         Fix gpgme_{get,set}_status_cb to match documentation.
5794         + commit 70b3e5964ea0592bd09d1877d720b2c63f501970
5795         * doc/gpgme.texi: Minor fixes.
5796         * src/gpgme.c (gpgme_get_status_cb): Set return variables to NULL and
5797         check for a valid ctx pointer.
5798
5799         Parse the INQUIRE_MAXLEN status message.
5800         + commit 6dd24c3c6133ec54f75abd056191a8027fe01de0
5801         * src/gpgme.h.in: (gpgme_status_code_t): Add INQUIRE_MAXLEN.
5802         * src/status-table.c (status_table_s): Ditto.
5803         * src/genkey.c (genkey_status_handler): Parse INQUIRE_MAXLEN.
5804         * src/decrypt.c (_gpgme_decrypt_status_handler): Ditto.
5805         * src/sign.c (_gpgme_sign_status_handler): Ditto.
5806
5807         This status message informs the client of the maximum length of an
5808         inquired line. It is sent from gpg and forwarded to the client via
5809         gpgme_status_cb_t.
5810
5811         Add gpgme_set/get_status_cb().
5812         + commit 4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9
5813         * src/gpgme.h.in (gpgme_set_status_cb): New.
5814         (gpgme_get_status_cb): New.
5815         (gpgme_status_cb_t): New.
5816         * src/gpgme.c (gpgme_set_status_cb): New.
5817         (gpgme_get_status_cb): New.
5818         * src/context.h (status_cb): New.
5819         (status_cb_value): New.
5820         * src/gpgme.def: Export new symbols.
5821         * src/libgpgme.vers: Ditto.
5822         * doc/gpgme.texi: Document these new functions.
5823
5824         Make use of user passphrase handler during genkey.
5825         + commit 2b6ae3dadf4432f7a72fd119144b835f7b1adcc4
5826         * src/genkey.c (genkey_start): set engine passphrase command handler.
5827
5828 2015-08-12  Ben Kibbey  <bjk@luxsci.net>
5829
5830         Also check the return code in gpg_sign().
5831         + commit e07d38f5f9f3b94e403f1265ff7fd3d7009dd557
5832         * src/engine-gpg.c (gpg_sign): Check return value from start().
5833
5834 2015-08-11  Ben Kibbey  <bjk@luxsci.net>
5835
5836         Check the return value when starting gpg.
5837         + commit 8f28e3caf95d7bc99e9271bfc2b44080166af31f
5838         * src/engine-gpg.c (gpg_decrypt, gpg_delete, gpg_passwd): Check return
5839         value of start().
5840
5841 2015-08-02  Ben McGinnes  <ben@adversary.org>
5842
5843         More GTK2 removal.
5844         + commit a7fbd5293ed0ba2c179837a4a2b859376d30e35e
5845         * Missed a couple of files, these 2 go for the same reason as the
5846           previous 3.
5847
5848         Removed GUI examples.
5849         + commit 1cd0aef0afb196094d90673002d4c210a04911c9
5850         * GUI examples written with pygtk, which has not been ported to Python
5851           3 and won't be as it is for GTK2 and GNOME is moving to GTK3.
5852         * New GUI examples may be required in future using any of several GUI
5853           frameworks (e.g. wxPython, PyQt, PySide, PyGObject, etc.).
5854
5855 2015-07-31  Andre Heinecke  <aheinecke@intevation.de>
5856
5857         Add offline mode support for CMS keylisting.
5858         + commit 08086dd6901740e155e4361212b4e9cff8a47296
5859         * doc/gpgme.texi: Document offline mode.
5860         * src/context.h (gpgme_context): Add offline.
5861         * src/engine-backend.h (keylist, keylist_ext): Add engine_flags.
5862         * src/engine.c, src/engine.h (_gpgme_engine_op_keylist): Ditto.
5863           (_gpgme_engine_op_keylist_ext): Ditto.
5864         * src/engine.h (GPGME_ENGINE_FLAG_OFFLINE): New.
5865         * src/engine-gpg.c (gpg_keylist, gpg_keylist_ext): Ditto.
5866         * src/engine-gpgsm.c (gpgsm_keylist): Handle engine_flags.
5867           (gpgsm_keylist_ext): Ditto.
5868         * src/gpgme.c (gpgme_set_offline, gpgme_get_offline): New.
5869         * src/gpgme.def (gpgme_set_offline, gpgme_get_offline): New.
5870         * src/gpgme.h.in (gpgme_set_offline, gpgme_get_offline): New.
5871         * src/libgpgme.vers (gpgme_set_offline, gpgme_get_offline): New.
5872         * src/keylist.c (gpgme_op_keylist_start): Set offline flag.
5873           (gpgme_op_keylist_ext_start): Ditto.
5874         * tests/run-keylist.c (show_usage, main): Add offline argument.
5875
5876 2015-07-23  Peter Wu  <peter@lekensteyn.nl>
5877
5878         build: ignore scissor line for the commit-msg hook.
5879         + commit 157c8be183153ff588f98874a3205aa483d0fd23
5880         * build-aux/git-hooks/commit-msg: Stop processing more lines when the
5881           scissor line is encountered.
5882
5883 2015-07-23  Werner Koch  <wk@gnupg.org>
5884
5885         Add option --lib-version to gpgme-tool.
5886         + commit c23f8897105ce2bb6e62d9c44ca0779fcc08a919
5887         * src/gpgme-tool.c (options, parse_options):  Add --lib-version
5888         (CMD_LIBVERSION): New.
5889         (main): Implement.
5890
5891 2015-06-08  Werner Koch  <wk@gnupg.org>
5892
5893         Release 1.5.5.
5894         + commit 052a9e3c5671d1ab69551f7b0abd0bbf859d4aba
5895
5896
5897         Fix regression with gpgsm 2.0 due to "OPTION with-secret".
5898         + commit ddbd54ef881bd2c3481d62b89bef7241667b64ee
5899         * src/engine-gpgsm.c (gpgsm_assuan_simple_command): Do not terminate
5900         on a status lines.
5901
5902         tests: Add option --secret to run-keylist.
5903         + commit 7addffc0826e7f36afcc7f66268e9ee2a37e2042
5904
5905
5906         Fix compiler warnings about unused value in TRACE macros.
5907         + commit 8b9f84828cd04a7dab37e219123edc1905da8e6b
5908         * src/debug.h: Change macros to not have a literal 0 as last
5909         expression of the comma operator.
5910         * src/debug.c (_gpgme_debug_frame_end): Return 0.
5911         (_gpgme_debug): Return 0.
5912
5913         Fix test suite for GnuPG 2.1 which uses pubring.kbx.
5914         + commit a5b040cc57c65b3d105666b90c7eb59ee6ff3882
5915         * tests/gpgsm/final.test: New.
5916         * tests/gpgsm/initial.test: New.
5917         * tests/gpg/start-stop-agent: Move to ../.
5918         * tests/gpgsm/Makefile.am (TESTS_ENVIRONMENT): Export top_srcdir.
5919         (TESTS): Add intial.test and final.test.
5920         (AM_LDFLAGS): Add -no-install.
5921         (clean-local): Use start-stop-agent
5922         (initial.test): Add dependency.
5923         * tests/gpg/Makefile.am (top_srcdir): Export top_srcdir.
5924         (AM_LDFLAGS): Add -no-install.
5925         (check-local): Depend on pubring-stamp instead of pubring.gpg.
5926         (initial.test): Depend on check-local.
5927         (./pubring-gpg): Replace by rule for ./pubring-stamp.
5928
5929 2015-06-05  Matthew Barnes  <mbarnes@redhat.com>
5930
5931         Set GPGME_SIGSUM_KEY_REVOKED also for gpg.
5932         + commit 87d713ff41454bd08a345c63605f6fc7ac854dd4
5933         * src/verify.c (calc_sig_summary): Handle GPG_ERR_CERT_REVOKED.
5934
5935 2015-06-05  Werner Koch  <wk@gnupg.org>
5936
5937         Fix segv for userids with a backslash.
5938         + commit 0d28a696163677d6b34a802b6beddecd805d0fc7
5939         * src/engine-gpg.c (gpg_keylist_preprocess): Increment SRC for a
5940         backslash.
5941
5942 2015-05-16  Ben McGinnes  <ben@adversary.org>
5943
5944         Python 3 port of PyME.
5945         + commit 90405ac84b78ba7e5458ea09986749594a01195a
5946         * Port of PyME 0.9.0 for Python 2 to Python 3 along with most of the
5947           example scripts.
5948         * Intended to be developed in parallel with the original Python 2
5949           version until such time as a rewrite of GPGME leads to developing an
5950           IO API in Python 3 from scratch.
5951         * Python 3 PyME and API maintainer has entered, stage left with current
5952           GPG key ID 0x321E4E2373590E5D, primary fingerprint is "DB47 24E6 FA42
5953           86C9 2B4E  55C4 321E 4E23 7359 0E5D" and signing subkey fingerprint is
5954           "B7F0 FE75 9387 430D D0C5  8BDB 7FF2 D371 35C7 553C" for future
5955           reference with git commit signatures.
5956
5957         Explaining why not all scripts work.
5958         + commit 29887c9b28c0db14bf75e227a8082d23a2c151d2
5959         * Some of them cannot be properly tested on OS X, especially with GTK in
5960           the mix (it works on OS X, but is unlikely to be as easily accessible
5961           as Cocoa or Qt).
5962         * Most major functions are showcased and do work, albeit sometimes with
5963           false positives of error messages, at least on OS X.
5964
5965         Byte encoding.
5966         + commit c39cea7a07cec9ab34cd2026f47b6fba80fea3c8
5967         * More string updates.
5968         * verifydetails.py still fails, but as Bernhard is still contactable, it
5969           might be worth him checking on it instead.
5970
5971         No change, note added to explain why.
5972         + commit 0e6e6689ef1aea36c1cb3cb47e94f1f2ebbd97cb
5973
5974
5975         Strings vs. Bytes.
5976         + commit 40290507bcdc63ab9023393d071167d455d70737
5977         * CLI input must be byte encoded.
5978
5979         More byte changes and passphrase changes.
5980         + commit 325b0ca341ae3ac8c3232f557ea2c381b4843969
5981         * exportimport works, but will still segfault for an as yet unknown
5982           reason.
5983         * genkey produces a traceback error, but does create the key as
5984           intended.
5985         * matched passphrase in signverify.
5986
5987         More bytes good.
5988         + commit ba3c9f2617955dc828309a4800e4f5b3f1c3a949
5989         * Another string to byte change.
5990
5991         Updated encrypt-to-all.
5992         + commit 1c87ecb86ae364b18f69bca726021271fefaa1c1
5993         * Changed plaintext string to byte literal.
5994         * Nested key selection in a try/except statement in case of
5995           UnicodeEncodeError instances.
5996         * Tested successfully on over 9,000 keys.
5997
5998         Passphrase update.
5999         + commit 24c738f5bb5c253a17962c62867d6c847250b41e
6000         * Changed example passphrase to something that meets the current minimum
6001           requirements.
6002
6003         example email.
6004         + commit 8345bf6f43c4f671124eaa1b713a7f5ac5780cbd
6005         * changed joe@foo.bar to joe@example.org as it is only a matter of time
6006           before ICANN actually creates bar as a gTLD, if they haven't already.
6007
6008         Updated string and key data.
6009         + commit 4fc123981514c7087114e08ee8ca63de1a1db59f
6010         * Text changed to byte literals.
6011         * Changed key type to RSA/RSA.
6012         * Changed expiry to the future (2020).
6013
6014 2015-05-08  Ben McGinnes  <ben@adversary.org>
6015
6016         String type.
6017         + commit 90079786c5cde4dd8ceb2e0fcda7605b08ccd021
6018         * the plain text string must be bytes and not unicode.
6019         * Expect most of the example code to have similar issues at present.
6020
6021 2015-05-05  Ben McGinnes  <ben@adversary.org>
6022
6023         Python 3 port of PyME.
6024         + commit ebd8734ad705afa4edc409787a00d4968d25e018
6025         * The entirety of the Python 3 port of PyME up to commit
6026           2145348ec54c6027f2ea20f695de0277e2871405
6027         * The old commit log has been saved as
6028           lang/py3-pyme/docs/old-commits.log
6029         * Can be viewed as a normal (separate) git repository at
6030           https://github.com/adversary-org/pyme3
6031         * Utilising the submodule feature of git was deliberately skipped on
6032           humanitarian grounds (in order to prevent pain and suffering on the
6033           part of anyone having to manage this repository).
6034
6035 2015-04-13  Werner Koch  <wk@gnupg.org>
6036
6037         Release 1.5.4.
6038         + commit d2712d9f6f086911184453219a096c61f6829d3b
6039
6040
6041         w32: Use -static-libgcc to avoid linking to libgcc_s_sjlj-1.dll.
6042         + commit 524dacfbb6bb131f05a4ecab3d7bcd91c1b43d33
6043         * src/Makefile.am (extra_ltoptions): New.
6044         (libgpgme_la_LDFLAGS): Use it.
6045         (libgpgme_pthread_la_LDFLAGS): Ditto.
6046         (libgpgme_glib_la_LDFLAGS): Ditto.
6047
6048 2015-03-16  Werner Koch  <wk@gnupg.org>
6049
6050         Fix potential crash in trace macro.
6051         + commit 8cfcdfe5564f87362e5ec1bfdca5c14aed9c45f0
6052         * src/signers.c (gpgme_signers_add): Avoid deref of a NULL KEY in the
6053         trace macro.
6054         * src/engine-spawn.c (engspawn_release): Remove always true condition.
6055         * src/engine-gpg.c (gpg_release): Ditto.
6056
6057         Fix one byte too short malloc.
6058         + commit 119f27032b822ace8c012b96f9e41bcf23251a54
6059         * src/engine-spawn.c (add_data): Fix malloc
6060
6061 2015-01-30  Werner Koch  <wk@gnupg.org>
6062
6063         Switch to automake 1.14 and update  build-aux files.
6064         + commit 428ea7696585bc24d127b903840554ca659069b6
6065
6066
6067 2014-12-11  Werner Koch  <wk@gnupg.org>
6068
6069         Release 1.5.3.
6070         + commit 37d927a9706fff6d8ef8d45073984ea2f92afb31
6071         * configure.ac: Set LT version to C24/A13/R2.
6072
6073 2014-12-08  Werner Koch  <wk@gnupg.org>
6074
6075         Return an error for some export key operations.
6076         + commit 05258d427513a933f01d4df13aca834d797f91e7
6077         * src/context.h (OPDATA_EXPORT): New.
6078         * src/export.c (op_data_t): New.
6079         (release_op_data): New.
6080         (parse_error): New.
6081         (export_status_handler): New.
6082         (export_start, export_ext_start): Prepare op_data.
6083         (gpgme_op_export_ext, gpgme_op_export_keys): Return an error from the
6084         status handler.
6085
6086 2014-11-21  Werner Koch  <wk@gnupg.org>
6087
6088         Release 1.5.2.
6089         + commit c62ce32b9c01ee9ceb1d69e7344fb79a9162d232
6090         * configure.ac: Set LT version to C24/A13/R1.
6091
6092         Update the previous commit.
6093         + commit 81ce87111f5a3f966188629abb07a4d0702e6db0
6094         * src/sign.c (gpgme_op_sign_result): Reformat and take care of failed
6095         malloc.
6096
6097 2014-11-21  Ben Kibbey  <bjk@luxsci.net>
6098
6099         Fix returning new signatures when there are none.
6100         + commit 5942b0c7e0593b82b4c4a142c214d7a2649de104
6101         * src/sign.c (gpgme_op_sign_result): Test that invalid and valid
6102         signatures add up to gpgme_signers_count().
6103
6104 2014-11-06  Werner Koch  <wk@gnupg.org>
6105
6106         Improve the debug output a bit.
6107         + commit 8031341283f4fcb1f226aa6f66bc5a6042586815
6108         * src/debug.h (TRACE_ERR): Include the line number in the output.
6109
6110 2014-10-02  Werner Koch  <wk@gnupg.org>
6111
6112         build: Implement SYSROOT feature.
6113         + commit 4027a0a89724df3aeef8a964c529548d724b6a5a
6114         * configure.ac: Document SYSROOT.
6115         * m4/gpg-error.m4: Update from libgpg-error master.
6116         * src/gpgme.m4: Implement SYSROOT stuff.
6117
6118 2014-09-24  Werner Koch  <wk@gnupg.org>
6119
6120         tests: Delay some test file extraction until "make check".
6121         + commit 2e8ecc24cf74f918c303c315da3bb18636a5e288
6122         * tests/gpg/Makefile.am (all-local): Change to check-local.
6123         * tests/gpgsm/Makefile.am (all-local): Ditto.
6124
6125 2014-09-24  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>
6126
6127         Clean up gpgme's tests/gpg when gpg2.1 is available.
6128         + commit 36997e0f746ce2d38de997055141542583cc0f52
6129         * tests/gpg/Makefile.am: Clean up .gpg-v21-migrated
6130
6131 2014-08-12  Werner Koch  <wk@gnupg.org>
6132
6133         gpgme-tool: Print fingerprint and keyid with keyservers.
6134         + commit 4160ef90a1b1b778c735f31f98a6966ba3b3ea90
6135         * src/gpgme-tool.c (cmd_keylist): Print keyid.  Print FPR only if
6136         available.
6137
6138         Handle modern keyserver output which may emit the fingerprint.
6139         + commit 3450bff52baef2c14118958cf79ead46940d58f0
6140         * src/engine-gpg.c (read_colon_line): Split preprocessed lines.
6141         (gpg_keylist_preprocess): Limit keyid field and print fingerprint.
6142
6143         gpgme-tool: Install gpgme-tool.
6144         + commit 488e44cdb531035fa8813b95b212f9728abc7e62
6145         * src/Makefile.am (bin_PROGRAMS): New.  Add gpgme-tools.
6146         (noinst_PROGRAMS): Remove.
6147
6148         gpgme-tool: Fix segv for external key listing.
6149         + commit e5ab11607281b9838da2728268a8f9f0daa2b04d
6150         * src/gpgme-tool.c (result_xml_escape): Allow for DATA being NULL.
6151
6152 2014-07-30  Werner Koch  <wk@gnupg.org>
6153
6154         Release 1.5.1.
6155         + commit 16835c3b5d1cea18512b2c93e884d8ca513a2ee7
6156         * configure.ac: Change LT version to C24/A13/R0.
6157
6158         Fix possible realloc overflow for gpgsm and uiserver engines.
6159         + commit 2cbd76f7911fc215845e89b50d6af5ff4a83dd77
6160         * src/engine-gpgsm.c (status_handler):
6161         * src/engine-uiserver.c (status_handler):
6162
6163 2014-06-26  Werner Koch  <wk@gnupg.org>
6164
6165         w32: Get IOSPAWN flag back in sync with spawn helper.
6166         + commit 68116fa5f67238a60bb8be375cc959262fa021d3
6167         * src/gpgme-w32spawn.c: Include priv-io.h.
6168
6169 2014-06-10  Werner Koch  <wk@gnupg.org>
6170
6171         Add new reason codes to the INV_RECP status code.
6172         + commit 86260b47c9e306e325103d1af767842357647e60
6173         * src/op-support.c (_gpgme_parse_inv_recp): Add codes 13 and 14.
6174
6175 2014-06-04  Werner Koch  <wk@gnupg.org>
6176
6177         Add new keylist mode GPGME_KEYLIST_MODE_WITH_SECRET.
6178         + commit 4dc9af24156b4fd52c7b76e7522b9b7a64e5386a
6179         * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_SECRET): New.
6180         * src/engine-gpg.c (gpg_keylist_build_options): Handle new mode.
6181         * src/engine-gpgsm.c (gpgsm_keylist, gpgsm_keylist_ext): Ditto.
6182         * src/keylist.c (parse_sec_field15): Add arg key and take care of
6183         --with-secret output.
6184
6185         * src/gpgme-tool.c (gt_get_keylist_mode, cmd_keylist_mode): Add
6186         "with_secret".  Print card info and and secret flag for subkeys.
6187
6188 2014-05-21  Werner Koch  <wk@gnupg.org>
6189
6190         Release 1.5.0.
6191         + commit 0eca21113c1d1ab2aea58e1ea21075f472f99c23
6192         * configure.ac: Change LT version to C22/A11/R0.
6193
6194 2014-05-13  Werner Koch  <wk@gnupg.org>
6195
6196         Add 6 new GPGME_STATUS_ codes.
6197         + commit de6caeed6d6432101c673c35717f152d5facf823
6198         * src/status-table.c: Also add missing DECRYPTION_INFO entry.
6199
6200 2014-05-08  Werner Koch  <wk@gnupg.org>
6201
6202         Add field CURVE to the key info.
6203         + commit 88f15336ec0eadde68ff2618349efb9006b8e801
6204         * src/gpgme.h.in (struct _gpgme_subkey): Add field CURVE.
6205         * src/key.c (gpgme_key_unref): Free CURVE.
6206         * src/keylist.c (keylist_colon_handler): Set CURVE.
6207
6208         * src/gpgme.c (gpgme_release): For failsafe reasons reset engine and
6209         engine info after freeing.
6210
6211         Fix a memory access and a double slash bug.
6212         + commit de4a1ea684e1591975feb801e7651309e1ee2c49
6213         * src/engine-spawn.c (engspawn_start): Allocate space for list
6214         terminator.
6215         * src/posix-util.c (walk_path): Fix trailing slash detection.
6216
6217         Map public key algos returned by gpg to gpgme values.
6218         + commit d5fb92cdaed21eea2f1a921e4f11df72635a8462
6219         * src/conversion.c (_gpgme_map_pk_algo): New.
6220         * src/decrypt.c (parse_enc_to): Add arg PROTOCOL and map pubkey algo.
6221         (_gpgme_decrypt_status_handler): Map pubkey algo.
6222         * src/keylist.c (keylist_colon_handler): Map pubkey algo.
6223         * src/sign.c (parse_sig_created): Add arg PROTOCOL and map pubkey
6224         algo.
6225         * src/verify.c (parse_new_sig): Ditto.
6226         (parse_valid_sig): Ditto.
6227
6228         * src/gpgme.h.in (GPGME_PK_ECC): New.
6229         (GPGME_MD_SHA224): New.
6230         * src/gpgme.c (gpgme_pubkey_algo_name): Add GPGME_PK_ECC case.
6231         (gpgme_hash_algo_name): Add GPGME_MD_SHA224.
6232
6233         Add GPGME_ENCRYPT_NO_COMPRESS flag.
6234         + commit 991cde9e79fec70aad093ded383c5574d30f9388
6235         * src/gpgme.h.in (GPGME_ENCRYPT_NO_COMPRESS): New.
6236         * src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign): Implement it.
6237         * src/gpgme-tool.c (_cmd_sign_encrypt): Add option --no-compress.
6238
6239 2014-04-16  Werner Koch  <wk@gnupg.org>
6240
6241         w32: Fix another memleak on error.
6242         + commit 62711e5614e44e65a7c7bb7d21493d09d3081271
6243         * src/w32-io.c (create_reader): free CTX.
6244
6245 2014-04-15  Werner Koch  <wk@gnupg.org>
6246
6247         w32: Fix memleak in an error code paths.
6248         + commit 85a07ca7e3dffdefc8ae74beebb59e47a6e6bd1b
6249         * src/w32-io.c (create_writer): Free CTX in cased of bad FD.
6250         * src/w32-util.c (_gpgme_mkstemp): Free TMPNAME in case of a failed
6251         mkstemp.
6252
6253         Fix possible zombie processes.
6254         + commit 2bb26185e3b9a048033c559517d6ba7d2eb47066
6255         * src/posix-io.c (_gpgme_io_waitpid): Protect waitpid agains EINTR.
6256         (_gpgme_io_dup): Likewise.
6257         (_gpgme_io_connect): Likewise.
6258
6259 2014-04-10  Werner Koch  <wk@gnupg.org>
6260
6261         Actually implement flags for gpgme_op_spawn.
6262         + commit d3bd8fff863f62b6d0e228aea754efbbde861e9a
6263         * src/spawn.c (gpgme_op_spawn_start, gpgme_op_spawn): Pass FLAGS dow
6264         to spawn_start and add FLAGS args along the call path.
6265         * src/engine-spawn.c (engspawn_start): Hack to automagically provide
6266         argv[0].
6267
6268         Add GPGME_PROTOCOL_SPAWN and gpgme_op_spawn.
6269         + commit 4f2d652e60700e03809307a10015ff9003ac3579
6270         * src/gpgme.h.in (GPGME_PROTOCOL_SPAWN): New.
6271         (GPGME_SPAWN_DETACHED, GPGME_SPAWN_ALLOW_SET_FG): New.
6272         * src/gpgme.c (gpgme_set_protocol): Add new protocol.
6273         (gpgme_get_protocol_name): Ditto.
6274         * src/spawn.c: New.
6275         * src/libgpgme.vers, src/gpgme.def: Add new public functions.
6276         * src/engine-spawn.c: New.
6277         * src/Makefile.am: Add new files.
6278         * src/engine-backend.h (struct engine_ops): Add OPSPAWN.
6279         * src/engine.c (engine_ops): Add _gpgme_engine_ops_spawn.
6280         (gpgme_get_engine_info): Add Spawn to the list of protocols.
6281         (_gpgme_engine_op_spawn): New.
6282
6283         * src/gpgme-tool.c (gt_protocol_from_name): Add new protocol.
6284         (gt_spawn, cmd_spawn): New.
6285
6286         Add gpgme_get_dirinfo.
6287         + commit 77931a9a1468b0cfbaafd4153867d90764a6d258
6288         * src/dirinfo.c (gpgme_get_dirinfo): New.
6289         * tests/t-engine-info.c (main): Print results from that function.
6290
6291         Make use of internal iospawn flags more flexible.
6292         + commit 443f6b76a964b77e2e61c03592a83ffa0a6da4b1
6293         * src/priv-io.h (IOSPAWN_FLAG_DETACHED): New. Renumber the others.
6294         * src/w32-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS process only if
6295         IOSPAWN_FLAG_DETACHED is given.
6296         * src/w32-qt-io.cpp (_gpgme_io_spawn): Ditto.
6297         * src/w32-glib-io.c (_gpgme_io_spawn): Ditto.
6298         * src/assuan-support.c (my_spawn): Pass IOSPAWN_FLAG_DETACHED flags.
6299         * src/dirinfo.c (read_gpgconf_dirs): Ditto.
6300         * src/engine-gpg.c (start): Ditto.
6301         * src/engine-gpgconf.c (gpgconf_read, gpgconf_write): Ditto.
6302         * src/version.c (_gpgme_get_program_version): Ditto.
6303
6304         Make sure a spawned process has all standard fds connected.
6305         + commit 617d3be629229cbebfdc2d26a4e854bc4fe38a68
6306         * src/posix-io.c (_gpgme_io_spawn): dup /dev/null also to unsued
6307         stdout.
6308
6309 2014-03-13  Werner Koch  <wk@gnupg.org>
6310
6311         Add configure option --enable-fixed-path.
6312         + commit 766355b5d4f63261c428531fdbdafb8b67de9369
6313         * configure.ac: Add option --enable-fixed-path.
6314         (FIXED_SEARCH_PATH): New ac_define.
6315         * src/posix-util.c (walk_path): Make use of the option.  Remove
6316         current directory from fallback PATH.
6317
6318 2014-03-11  Werner Koch  <wk@gnupg.org>
6319
6320         Avoid pointer arithmetic on void pointer.
6321         + commit dd9c8c56719db093b8daa23aa40b2be71bbd1526
6322         * src/gpgme.c (gpgme_io_writen): Use new var buffer.
6323
6324         Change implementation return type to match the definition.
6325         + commit 75a6255935f450d56f3637cbb2b6c8161ace57ab
6326         * src/gpgme.c (gpgme_get_sub_protocol): Change return type to
6327         gpgme_protocol_t.
6328
6329 2014-03-05  Daiki Ueno  <ueno@gnu.org>
6330
6331         doc: Fix documentation of struct data types.
6332         + commit 40938feb3f3393b0cdc6ec61ca2e77ff0b82c69a
6333         * gpgme.texi (Key Management): Document is_cardkey and card_number
6334         members of gpgme_subkey_t.
6335         (Decrypt): Remove description of the non-existent wrong_key_usage
6336         member of gpgme_recipient_t.
6337         (Verify): Document pka_address member of gpgme_signature_t.
6338         (Creating a Signature): Add missing member names in
6339         gpgme_new_signature_t.
6340         (Registering I/O Callbacks): Fix reference of gpgme_io_cbs struct.
6341
6342 2014-02-21  Werner Koch  <wk@gnupg.org>
6343
6344         Always pass correct name to argv[0].  Ignore GPG_AGENT_INFO for gpg2.
6345         + commit 651d9e1c6bc1cab248024c3850ef64698247588f
6346         * src/dirinfo.c (WANT_GPG_ONE_MODE): New.
6347         (struct dirinfo): Add field "gpg_one_mode".
6348         (get_gpgconf_item): Set that field and return it if requested.
6349         (_gpgme_in_gpg_one_mode): New.
6350         * src/engine-gpg.c (build_argv): Check GPG_AGENT_INFO only in gpg-1
6351         mode.
6352
6353         * src/dirinfo.c (_gpgme_get_basename): New.
6354         * src/engine-g13.c (g13_new): Take argv[0] from the pgmname.
6355         * src/engine-gpgsm.c (gpgsm_new): Ditto.
6356         * src/engine-gpg.c (build_argv): Ditto. Add arg PGMNAME.
6357         (start): Pass PGMNAME to buildargv.
6358
6359 2014-02-12  Werner Koch  <wk@gnupg.org>
6360
6361         Fix type inconsistency between gpgme.h and gpgme.c.
6362         + commit f916ab753b7d17210cd455666870038949f72851
6363         * src/gpgme.c (gpgme_set_pinentry_mode): Fix type of MODE.
6364
6365 2014-01-10  Werner Koch  <wk@gnupg.org>
6366
6367         Use the generic autogen.sh script.
6368         + commit 1a504aab384947c1a6e949affd14bc696297fc8d
6369         * autogen.rc: New.
6370         * Makefile.am (EXTRA_DIST): Add it.
6371         * autogen.sh: Update from GnuPG.
6372
6373         * configure.ac (AM_SILENT_RULES): New.
6374
6375 2014-01-07  Werner Koch  <wk@gnupg.org>
6376
6377         Make gpgconf engine work again - fixes 02ba35c1.
6378         + commit ab6e718327451e418782990c5a0a4e72588e3f0b
6379         * src/gpgconf.c: Remove ENABLE_GPGCONF and move prototypes to ...
6380         * src/engine-backend.h: ... here.
6381
6382         Make gpgme_new return a proper error if no engines are installed.
6383         + commit 121efcc5618374a1b4450b1d6a18bb3c35edb1fd
6384         * src/engine.c (gpgme_get_engine_info): Improve error handling.
6385         (_gpgme_engine_info_copy): Ditto.
6386         * src/gpgme.c (gpgme_new): Return error GPG_ERR_NO_ENGINE.
6387
6388         Print the full PATH in the log if gpg was not found.
6389         + commit d63058b852b83515e7715103c04a684ecf59838a
6390         * src/posix-util.c (walk_path): Keep a copy of PATH.
6391
6392 2014-01-06  Werner Koch  <wk@gnupg.org>
6393
6394         Add global flags disable-gpgconf, gpgconf-name, and gpg-name.
6395         + commit 6564e5e78e8c6e5a120675a5699b5b75248cfbc7
6396         * src/gpgme.c (gpgme_set_global_flag): Add names "disable-gpgconf",
6397         "gpgconf-name", and "gpg-name".
6398         * src/dirinfo.c (_gpgme_dirinfo_disable_gpgconf): New.
6399         (get_gpgconf_item): Minor debug info change.
6400         * src/posix-util.c (default_gpg_name, default_gpgconf_name): Add vars.
6401         (_gpgme_set_default_gpg_name): New.
6402         (_gpgme_set_default_gpgconf_name): New.
6403         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
6404         (walk_path): Add debug output on failure.
6405         * src/w32-util.c (default_gpg_name, default_gpgconf_name): Add vars.
6406         (replace_slashes): New.
6407         (get_basename): New.
6408         (_gpgme_set_default_gpg_name): New.
6409         (_gpgme_set_default_gpgconf_name): New.
6410         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
6411
6412         * tests/t-engine-info.c (main): Add --verbose and --set-global-flag
6413         options.
6414
6415 2013-12-27  Werner Koch  <wk@gnupg.org>
6416
6417         Locate engine names only at runtime and prefer GnuPG-2.
6418         + commit 02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b
6419         * configure.ac (NEED_GPG_VERSION, NEED_GPGSM_VERSION)
6420         (NEED_G13_VERSION, NEED_GPGCONF_VERSION): Remove vars and all related
6421         checks.  Do not check for any engine version.
6422         (HAVE_ASSUAN): Remove AM conditional.
6423         * src/Makefile.am: Remove separate component vars and always build all
6424         engines but uiserver.
6425         * src/dirinfo.c (WANT_GPGCONF_NAME): New.
6426         (struct dirinfo): Add field gpgconf_name.
6427         (_gpgme_get_default_gpgconf_name): Use WANT_GPGCONF_NAME.
6428         (get_gpgconf_item): Set gpgconf name and adjust for _gpgme_get_*_path
6429         now returning a malloced string.
6430         * src/engine.c (engine_ops): Always init all engines except for
6431         uiserver.
6432         * src/posix-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path):
6433         Remove unused functions.
6434         (walk_path): New.
6435         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path ): Re-implement using
6436         walk_path.
6437         * src/w32-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path): Remove
6438         unused functions.
6439         (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Return a malloced
6440         string.
6441         * src/engine-g13.c (g13_get_req_version): Use a hardwired string with
6442         the required version.  This info belongs into this file.
6443         * src/engine-gpg.c (gpg_get_req_version): Ditto.
6444         * src/engine-gpgconf.c (gpgconf_get_req_version): Ditto.
6445         * src/engine-gpgsm.c (gpgsm_get_req_version): Ditto.
6446         * tests/t-engine-info.c: Replace now useless test by an info output.
6447         * tests/gpg/Makefile.am (GPG, GPG_AGENT): Hardwire gpg and gpg-agent.
6448         * tests/gpgsm/Makefile.am (GPGSM): Hardwire gpgsm.
6449
6450 2013-08-19  Werner Koch  <wk@gnupg.org>
6451
6452         Document API change for GPGME_EVENT_DONE from 2009.
6453         + commit b0aaa3f9aef36634b5c391812362f016114f02ba
6454         * doc/gpgme.texi (I/O Callback Interface): Fix description for the
6455         event arg.
6456
6457         Fix possible segv in the gpgme_op_card_edit.
6458         + commit 372bd439834c69d502668007c8c683233d676bd5
6459         * src/edit.c (gpgme_op_edit_start, gpgme_op_card_edit_start): Do not
6460         deref a NULL KEY in TRACE_BEG.
6461
6462         tests: Fix NULL ptr deref in gpgsm/t-verify.
6463         + commit eae9c32bd9c80ca4a4ecf794808211808f2ebbdd
6464         * tests/gpgsm/t-verify.c (check_result): Do not dereference a sig or
6465         sig->fpr if NULL.
6466
6467 2013-08-12  Werner Koch  <wk@gnupg.org>
6468
6469         Release 1.4.3.
6470         + commit d788c35e19df9eade8eb0b880ca1dc47ae7928ad
6471         * configure.ac: Change LT version to C22/A11/R0.
6472
6473         Make test suite workable with GnuPG 2.1.
6474         + commit 3ca7e96e384d5872c71ceb3b2e2a05b0c1b7e1a0
6475         * tests/gpg/start-stop-agent: New.
6476         * tests/gpg/initial.test: New.
6477         * tests/gpg/final.test: New.
6478         * tests/gpg/Makefile.am (c_tests): New.
6479         (TESTS): Move all to c_tests.  Add initial.test, final.test, and
6480         c_tests.
6481         (TESTS_ENVIRONMENT): Add C_ALL=C
6482         (private_keys): New.
6483         (EXTRA_DIST): Add new files.
6484         (./private-keys-v1.d/gpg-sample.stamp): Copy private keys.
6485         (all-local): Depend on gpg-sample.stamp.
6486         * tests/gpg/13CBE3758AFE42B5E5E2AE4CED27AFA455E3F87F: New.
6487         * tests/gpg/13CD0F3BDF24BE53FE192D62F18737256FF6E4FD: New.
6488         * tests/gpg/76F7E2B35832976B50A27A282D9B87E44577EB66: New.
6489         * tests/gpg/7A030357C0F253A5BBCD282FFC4E521B37558F5C: New.
6490         * tests/gpg/A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD: New.
6491
6492         Improve detection of default gpg by configure.
6493         + commit 069ac580373923f5635b7172ecff79eb189f6944
6494         * configure.ac: Move test for gpgconf before test for gpg.
6495         (GPG, GPGSM, G13): Use gpgconf instead of AC_PATH_PROG if possible.
6496
6497 2013-08-09  Werner Koch  <wk@gnupg.org>
6498
6499         Add function gpgme_data_identify.
6500         + commit 8579091c4f6a36e6bb06fcfbd147a776166fd3ea
6501         * src/gpgme.h.in (gpgme_data_type_t): New.
6502         (gpgme_data_identify): New prototype.
6503         * src/data-identify.c: New.
6504         * src/parsetlv.c, src/parsetlv.h: New.  Take from gpa.
6505         * src/libgpgme.vers, src/gpgme.def: Add gpgme_data_identify.
6506         * src/gpgme-tool.c (status): Add STATUS_IDENTIFY_RESULT.
6507         (gt_identify): New.
6508         (cmd_identify): New.
6509
6510         (hlp_passwd): Move close to cmd_passwd.
6511
6512 2013-08-02  Werner Koch  <wk@gnupg.org>
6513
6514         Prefer GnuPG-2 engines over GnuPG-1.
6515         + commit a4c80126ae4754c8478c69a8a24a6ffd975485fc
6516         * src/util.h: Move some prototypes to ...
6517         * src/sys-util.h: New.
6518         * src/Makefile.am (main_sources): Add sys-util.h.
6519         * configure.ac (AH_VERBATIM): Add DIRSEP_C and DIRSEP_S.
6520         * src/dirinfo.c: Include sys-util.h.
6521         (WANT_GPG_NAME, WANT_GPGSM_NAME, WANT_G13_NAME)
6522         (WANT_UISRV_SOCKET): New.
6523         (dirinfo): Add corresponding fields.
6524         (parse_output): Add arg COMPONENTS and set new fields.
6525         (read_gpgconf_dirs): Add arg components and act upon it.
6526         (get_gpgconf_item): Call read_gpgconf_dirs two times.  Add debug
6527         output.
6528         (_gpgme_get_default_gpg_name): New.
6529         (_gpgme_get_default_gpgsm_name): New.
6530         (_gpgme_get_default_g13_name): New.
6531         (_gpgme_get_default_gpgconf_name): New.
6532         (_gpgme_get_default_uisrv_socket): New.
6533         * src/engine-gpg.c, src/engine-g13.c, src/engine-gpgconf.c
6534         * src/engine-gpgsm.c, src/engine-uiserver.c: Change to use
6535         _gpgme_get_default_ instead of those from sys-util.h.
6536         * src/posix-util.c (_gpgme_get_gpg_path): Include sys-util.h.
6537         (_gpgme_get_uiserver_socket_path): Remove.
6538         * src/w32-util.c (_gpgme_get_gpg_path): Include sys-util.h.
6539         (_gpgme_get_uiserver_socket_path): Remove.
6540
6541         w32: Try to locate gpg in the gpgme installation dir.
6542         + commit 3881ea4e83d1533ef497b7332398fc1850e29205
6543         * src/w32-util.c (my_hmodule): New.
6544         (wchar_to_utf8): New.
6545         (DllMain): New.
6546         (_gpgme_get_inst_dir): New.
6547         (find_program_in_dir): New.
6548         (find_program_in_inst_dir): Add arg INST_DIR.
6549         (_gpgme_get_gpg_path): Get inst_dir before acquiring the lock.
6550         (_gpgme_get_gpgconf_path): Ditto.
6551         (_gpgme_get_g13_path): Ditto.
6552         (_gpgme_get_w32spawn_path): Ditto.
6553
6554 2013-07-31  Werner Koch  <wk@gnupg.org>
6555
6556         doc: Add --binary option for the OUTPUT command of an uiserver.
6557         + commit 393a9471f2f3ac0a5b14f3534a5bfc7ffe948567
6558
6559
6560 2013-06-18  Werner Koch  <wk@gnupg.org>
6561
6562         Add function gpgme_signers_count.
6563         + commit f2eeccbdfaf855a81abb92abe5ab4c702712bac7
6564         * src/signers.c (gpgme_signers_count): New.
6565         * src/libgpgme.vers, src/gpgme.def: Add as external symbol.
6566         * src/gpgme.h.in: Add prototype.
6567
6568 2013-05-28  Werner Koch  <wk@gnupg.org>
6569
6570         Release 1.4.2.
6571         + commit 009e26a989f8a251563303f155c51fe012af52a4
6572         * configure.ac: Set LT version to C21/A10/R0.
6573
6574         Add convenience macro GPGME_PROTOCOL_OPENPGP.
6575         + commit 2e8feb6016dede400053f76fc3a418e1dd567bef
6576         * src/gpgme.h.in (GPGME_PROTOCOL_OPENPGP): New.
6577
6578 2013-05-23  Werner Koch  <wk@gnupg.org>
6579
6580         w32: Fix installing of .def file.
6581         + commit c29dad2315406bed75b9547103650bef642e6aa7
6582         * src/Makefile.am (install-def-file): Create libdir first.
6583
6584         Fix libtool 2.4.2 to correctly detect .def files.
6585         + commit d739d4d8cf9c873b0f3bb7836aaf3d0ba31a7b7f
6586         * build-aux/ltmain.sh (sed_uncomment_deffile): New.
6587         (orig_export_symbols): Uncomment def file before testing for EXPORTS.
6588         * m4/libtool.m4: Do the same for the generated code.
6589
6590 2013-05-22  Werner Koch  <wk@gnupg.org>
6591
6592         Support --no-encrypt-to also with gpgme_op_encrypt_sign.
6593         + commit d4371ed30da2e8b3d9f440613af299a952bde2b1
6594         * src/engine-gpg.c (gpg_encrypt_sign): Support the
6595         GPGME_ENCRYPT_NO_ENCRYPT_TO flag.
6596
6597 2013-05-22  Werner Koch  <wk@gnupg.org>
6598             Kyle L. Huff  <g10bts@curetheitch.com>
6599
6600         Allow symmetric encryption with gpgme_op_encrypt_sign.
6601         + commit 567e6481d767af60390d649897b897a8b0e7e9a5
6602         * src/encrypt-sign.c (encrypt_sym_status_handler): New.
6603         (encrypt_sign_start): Handle recp == NULL case.
6604         * src/engine-gpg.c (gpg_encrypt_sign): Implement symmetric encryption.
6605         * tests/gpg/t-encrypt-sign.c (main): Add a test case for this.
6606
6607 2013-05-22  Werner Koch  <wk@gnupg.org>
6608
6609         gpgme-tool: Allow for symmetric encryption.
6610         + commit 0c1de7abd57b677998792e6cd5df5ddfb6e451b7
6611         * src/gpgme-tool.c (gt_sign_encrypt): Pass NULL for recp if no
6612         recipients are given.
6613
6614         tests: Print auditlog in plain text format.
6615         + commit 18254f88f82da7542a986dca60917fb48d5bccd3
6616         * tests/gpgsm/t-verify.c (show_auditlog): Use plain text format.
6617
6618 2013-05-18  Werner Koch  <wk@gnupg.org>
6619
6620         Improve C++ compatibility of previous patch.
6621         + commit e99356306d7bda61802530ebeb07d9ba73c4dec0
6622         * src/gpgme.h.in: Move gpgme_sssize_t and gpgme_off_t typedefs into
6623         the extern "C" scope.
6624
6625 2013-05-16  Werner Koch  <wk@gnupg.org>
6626
6627         Make definition of off_t robust against misbehaving w32 toolchains.
6628         + commit 6d0d8e7ba0bb989c251545fa8af35b97d1a703ba
6629         * configure.ac (NEED__FILE_OFFSET_BITS): Change to define gpgme_off_t
6630         and gpgme_ssize_t.
6631         (API__OFF_T, API__SSIZE_T): New ac_subst.
6632         * src/gpgme.h.in: Replace all ssize_t and off_t by ac_subst macros.
6633         * src/assuan-support.c, src/ath-pthread.c, src/ath.c, src/ath.h
6634         * src/data-compat.c, src/data-fd.c, src/data-mem.c, src/data-stream.c
6635         * src/data-user.c, src/data.c, src/data.h, src/engine-gpgsm.c
6636         * src/engine-uiserver.c, src/gpgme-tool.c, src/gpgme.c: Replace off_t
6637         by gpgme_off_t and sszie_t by gpgme_ssize_t.
6638         * src/ath-pthread.c, src/ath.h: Include gpgme.h.
6639
6640 2013-05-11  Werner Koch  <wk@gnupg.org>
6641
6642         w32: Change the way the I/O threads are cleaned up.
6643         + commit 9e7df9aa6d81f0abbabb03a2346d80eb5d375f81
6644         * src/w32-io.c (reader_context_s, create_reader)
6645         (writer_context_s, create_writer): Rename STOPPED to CLOSE_EV.
6646         (reader, writer): Remove setting of STOPPED.  Wait for CLOSE_EV and
6647         then release the context.
6648         (destroy_reader, destroy_writer): Do not wait but set the CLOSE_EV.
6649         (kill_reader, kill_writer): Remove.
6650         (_gpgme_io_close): Add code from kill_reader and kill_writer.
6651
6652 2013-05-08  Werner Koch  <wk@gnupg.org>
6653
6654         Fix hang in socket closing.
6655         + commit 9f330be8210d2498fe93d4166b6f6c02fca76475
6656         * src/w32-io.c (destroy_reader): Call shutdown.
6657         (reader): Do not print an error in the shutdown case.
6658
6659         Improve debug output of the I/O reader and writer.
6660         + commit 2118f497010a9a41c29d062a7605ff2e136f8f4e
6661         * src/w32-io.c (reader, writer): Also print file_sock.
6662
6663 2013-05-06  Werner Koch  <wk@gnupg.org>
6664
6665         Simplify a debug code function.
6666         + commit a7e5f1096f02af7bfb678b0bea8da6ccfc28cc79
6667         * src/debug.c (_gpgme_debug): Remove static space string.
6668
6669 2013-05-01  Werner Koch  <wk@gnupg.org>
6670
6671         Release 1.4.1.
6672         + commit 5075c0da7c464af2a45cd36db134ed7e88f155af
6673         * configure.ac: Bump LT version to C20/A9/R1.
6674
6675         Disable fd-passing for Apple.
6676         + commit ef5b4ae37d13142e89a051908dc080cda3d24baa
6677         * configure.ac: Disable fd-passing by default for Apple.
6678
6679 2013-04-30  Werner Koch  <wk@gnupg.org>
6680
6681         Allow reading of long gpgconf output lines.
6682         + commit f623a6b94c527795d0b6f7e66a3966e5d9e1c454
6683         * src/engine-gpgconf.c (gpgconf_read): Rewrite to allow for line
6684         lengths up to 64k.
6685
6686 2013-04-29  Werner Koch  <wk@gnupg.org>
6687
6688         Fix for i686-w64-mingw32.
6689         + commit 867b950b9306904a0ff522d0ef4a43789393cfc4
6690         * configure.ac (NEED__FILE_OFFSET_BITS): Do not define under Windows.
6691
6692 2013-02-26  Werner Koch  <wk@gnupg.org>
6693
6694         Release 1.4.0.
6695         + commit ef5cd38123dfbef7843f374ee697b0b5e8730c46
6696         * configure.ac: Bump LT version to C20/A9/R0.
6697
6698         Enable FD passing and thus building of the UI-server.
6699         + commit 5090f6f246bfad2eb80f3cc222963f73996d8028
6700         * configure.ac: Make --enable-fd-passing the default.
6701         * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Syntax fix.
6702
6703         w32: Hacks for building with 32 bit mingw64.
6704         + commit cdae524b282ef0ea67c3880b3e0f852c84c351ce
6705         * configure.ac (INSERT__TYPEDEFS_FOR_GPGME_H): Add hacks for 32 bit
6706         mingw64.
6707         * src/util.h [W32]: Include winsock2.h before windows to make mingw64
6708         happy.
6709         * src/w32-util.c (_WIN32_IE): Need to use 5.1 for mingw64.
6710
6711         Improve missing libgpg-error reporting in configure.
6712         + commit 787b5f14b933e5cee2624f79a23a60947f8134c8
6713         * configure.ac (NEED_GPG_ERROR_VERSION): New.  Improve reporting for
6714         missing libgpg-error.
6715
6716         Change the various version numbers to the new scheme.
6717         + commit d8b46c919f45666af0d541e00dcedf57e6c4b66f
6718         * configure.ac: Rename my_foo variables to mym4_foo variables to make
6719         clear that they are processed by m4.
6720         (VERSION_NUMBER): New ac_subst.
6721         (AH_BOTTOM): Add CRIGHTBLURB macro.
6722         (BUILD_REVISION, BUILD_FILEVERSION, BUILD_TIMESTAMP): Change them to
6723         work similar to libgpg-error et al.
6724         * src/versioninfo.rc.in: Remove use of BUILD_NUMBER and get it in line
6725         with gpg-error et al.
6726         * src/version.c (cright_blurb): New.
6727         (gpgme_check_version_internal): Add magic to display the above
6728         information.
6729         * tests/t-version.c (main): Add option --verbose.
6730
6731         Update GnuPG related m4 files.
6732         + commit 863c0f2a3eaf2a5d46c5518e5ac3486cc1a49bd3
6733         * m4/gpg-error.m4: Update from libgpg-error.
6734         * m4/libassuan.m4: Update from libassuan.
6735
6736         Update helper scripts.
6737         + commit fdcd5736e610cd64e47da73dcafe8bc4a6a67666
6738         * configure.ac: Use AC_CONFIG_AUX_DIR.  Remove args from
6739         AM_INIT_AUTOMAKE.  Replace AM_CONFIG_HEADER by AC_CONFIG_HEADER.
6740         * compile, config.guess, config.sub, depcomp, install-sh, ltmain.sh
6741         * mkinstalldirs, texinfo.texi: Move to build-aux/ and update from
6742         gnulib (c042abf).
6743         * build-aux/mdate-sh, build-aux/missing: Install via automake -a -c.
6744         Update autogen.sh for changed config dir.
6745         * autogen.sh: Adjust for scripts dir change.  Update W32 toolprefix
6746         list.
6747
6748 2013-02-25  Werner Koch  <wk@gnupg.org>
6749
6750         Remove included gitlog-to-changelog.
6751         + commit 967e043ac42330ee692f23d05ce3a0dd457f2119
6752         * build-aux/gitlog-to-changelog: Remove.
6753         * configure.ac (GITLOG_TO_CHANGELOG): Default to just
6754         gitlog-to-changelog.
6755
6756 2013-02-12  Werner Koch  <wk@gnupg.org>
6757
6758         Add macro GPGME_VERSION_NUMBER.
6759         + commit f48f75b1e812d33b76e439412efffa8277ab9abe
6760         * src/gpgme.h.in (GPGME_VERSION_NUMBER): New.
6761         * configure.ac (my_version_major, my_version_minor)
6762         (my_version_micro): New m4 macros.
6763         (my_version): Build from new m4 macros.
6764         (VERSION_NUMBER): New ac_subst.
6765
6766         Add public function gpgme_get_pinentry_mode.
6767         + commit 4f381554411ef019d79492f1751543f145604bcf
6768         * src/gpgme.c (gpgme_get_pinentry_mode): New.
6769
6770 2013-02-07  Werner Koch  <wk@gnupg.org>
6771
6772         gpgme_tool: Support GPG's new pinentry-mode.
6773         + commit 02a2cf0ccb4d01700adf6d18316d7705d519a048
6774         * src/gpgme-tool.c (log_error): Do not always print the error source.
6775         (gt_set_pinentry_mode): New.
6776         (server_passphrase_cb): New.
6777         (cmd_pinentry_mode): New.
6778         (register_commands): Add cmd_pinentry_mode.
6779         (options): Add option --gpg-binary.
6780         (struct args): Add field gpg-binary.
6781         (parse_options, main): Implement that option.
6782
6783         Add public function gpgme_set_pinentry_mode.
6784         + commit 61a0d92b679f248505f1bf16386bc41a5bf2ba1d
6785         * src/gpgme.c (gpgme_set_pinentry_mode): New.
6786         * src/gpgme.h.in (gpgme_pinentry_t): New.
6787         (gpgme_set_pinentry_mode): New.
6788         * src/context.h (struct gpgme_context): Add field pinentry_mode.
6789         * src/engine-backend.h (struct engine_ops): Add field
6790         set_pinentry_mode.
6791         * src/engine-gpg.c (struct engine_gpg): Add field pinentry_mode.
6792         (build_argv): Implement pinentry_mode.
6793         (gpg_set_pinentry_mode): New.
6794         (_gpgme_engine_ops_gpg): Register gpg_set_pinentry_mode.
6795
6796         Add public function gpgme_io_writen.
6797         + commit 29eced50687dd8a39dafe704102ae09ea8e8533a
6798         * src/gpgme.c (gpgme_io_read): New.
6799
6800 2012-11-16  Werner Koch  <wk@gnupg.org>
6801
6802         Improve parsing of the GIT revision number.
6803         + commit 322552a88db47896881e55c00ca301137cd160c6
6804         * configure.ac (git_revision): Use git rev-parse.
6805
6806         Fix non-portable use of chmod in autogen.sh.
6807         + commit cd6de92f42cb6e5b85bc376d5544496cb4d6a88a
6808         * autogen.sh: Remove option -c from chmod.
6809
6810 2012-11-15  Werner Koch  <wk@gnupg.org>
6811
6812         Make _gpgme_encode_percent_string work for memory buffers.
6813         + commit 1a17acd8e9b7c0ef924f98bfb1502fe12e83c363
6814         * src/conversion.c (D_gpgme_encode_percent_string): Remove stray
6815         semicolon.  Reported by Xi Wang.
6816
6817 2012-10-24  Werner Koch  <wk@gnupg.org>
6818
6819         Make local variables configure hack more robust.
6820         + commit c97d067f27899d890a99036fcbed9263f4f68875
6821         * configure.ac (emacs_local_vars_begin): Use extra m4 quoting so that
6822         newer Emscasen won't take it up as Local Variables for this file.
6823
6824         Fix ttyname problem on Android.
6825         + commit 12a0c93433a0b1d7e8019fc35a63476db39327fa
6826         * configure.ac: Define macro and conditional HAVE_ANDROID_SYSTEM.
6827         * m4/gnupg-ttyname.m4: Force use of replacement on Android.
6828         * src/ttyname_r.c: Ditto.
6829
6830         tests: Adhere to the docs and call gpgme_check_version.
6831         + commit cc59b75b21516198b39a56950afbcec140d8ba48
6832         * tests/t-engine-info.c: Call gpgme_check_version.
6833
6834 2012-10-19  Werner Koch  <wk@gnupg.org>
6835
6836         Trace the use of GPG_ERR_INV_ENGINE.
6837         + commit bd24feaa86f8154e550107990392ac9ac05e60d4
6838         * src/debug.h: Include "gpgme.h"
6839         (_gpgme_trace_gpgme_error): New.
6840         (trace_gpg_error): New macro.  Use it in all files where we return
6841         GPG_ERR_INV_ENGINE; also "include debug.h" as needed.
6842
6843         Avoid warning about initialized but not used variable.
6844         + commit 14a8fd4eec126cad282a85c5aa336a6b55229b52
6845         * src/engine-gpgsm.c (gpgsm_set_fd): Do not set DIR if not needed.
6846
6847 2012-10-11  Werner Koch  <wk@gnupg.org>
6848
6849         gpgme-tool: Use membuf functions to build up strings.
6850         + commit e11e7fc5586613525035c3358e15ae24accb96ea
6851         * src/gpgme-tool.c (clear_membuf, init_membuf, put_membuf)
6852         (put_membuf_str, get_membuf, peek_membuf): Add membuf functions.
6853         Take from GnuPG master's common/membuf.[ch] and patch for our use.
6854         (result_xml_escape): Rewrite using new functions.
6855
6856         gpgme-tool: Change license from LPGLv2+ to GPLv3+
6857         + commit aa30b47aa010bf46876f2335e288f8bd8718e396
6858         * src/gpgme-tool.c: Change license notice.
6859
6860 2012-10-11  W. Trevor King  <wking@tremily.us>
6861
6862         gpgme-tool: escape special characters in output XML data (<, >, and &).
6863         + commit 3f1329e1c9b99b1632cc4c4eec2e4399676fd93d
6864
6865         src/gpgme-tool.c (result_xml_escape_replacement, result_xml_escape):
6866         New.
6867         (result_xml_tag_data): Use result_xml_escape() to escape data.
6868         (result_add_error): Use unescaped < and >.
6869
6870         gpgme-tool: Fix chain_id -> chain-id in KEYLIST XML.
6871         + commit c28ebca9f2e21344d68e9fdcec60553f225c2e54
6872
6873         src/gpgme-tool.c (cmd_keylist): Use <chain-id> instead of <chain_id>.
6874
6875 2012-09-28  W. Trevor King  <wking@tremily.us>
6876
6877         gpgme-tool: Return more detailed XML from KEYLIST.
6878         + commit 3d69b51f7f083193db28f364da4590c33b5e44e6
6879         src/gpgme-tool.c (cmd_keylist): Convert output from a list of
6880         to more detailed XML.
6881         (xml_preamble1, xml_preamble2, xml_end): Make global.
6882         (result_add_protocol, result_add_validity): New functions for
6883         generating XML from GPGME types.
6884         (result_add_string): Treat NULL strings as "".
6885         (result_xml_tag_data): Make 'data' a 'const char' so we can use the
6886         value returned by gpgme_get_protocol_name directly.
6887
6888         gpgme-tool: Initialize input_fd and output_fd.
6889         + commit dda3702a9024a08da7bb949e15b63a47d23d59f5
6890         * src/gpgme-tool.c (gpgme_server): Initialize input_fd and output_fd.
6891
6892 2012-09-26  Werner Koch  <wk@gnupg.org>
6893
6894         gpgme-tool: Fix handling of file descriptors.
6895         + commit 193eb62538b9413e0dfbd04c075f871d5aa9130b
6896         * src/gpgme-tool.c (server_reset_fds): Use close/CloseHandle instead
6897         of the assuan close functions.
6898         (_cmd_decrypt_verify, _cmd_sign_encrypt, cmd_verify, cmd_import)
6899         (cmd_export, cmd_genkey, cmd_getauditlog): Use SERVER object instead
6900         of assuan_get_*_fd functions.
6901
6902 2012-09-25  Werner Koch  <wk@gnupg.org>
6903
6904         Document contribution rules.
6905         + commit db33945ab3b8c173a3fc2dd1a0d22d7fc15d8730
6906         * doc/HACKING (License policy): New.
6907         * doc/DCO: New.
6908         * AUTHORS: Change maintainer address.
6909
6910         Add gpgme_set_global_flag to help debugging.
6911         + commit c62b79a1d6e576d94e08cb81c2f5dbcb42ecf8cf
6912         * src/gpgme.c (gpgme_set_global_flag): New.
6913         * src/gpgme.h.in (gpgme_set_global_flag): New.
6914         * src/gpgme.def, src/libgpgme.vers: Add new public function.
6915         * src/debug.c (envvar_override): New.:
6916         (_gpgme_debug_set_debug_envvar): New.
6917         (debug_init): Take ENVVAR_OVERRIDE in account.
6918
6919 2012-07-28  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
6920
6921         Add two recent contributors.
6922         + commit 83e74202cd7c4c975d149c49e2507fdb0e60ef32
6923
6924
6925         Fix sign error in position calculation for mem_seek.
6926         + commit 8384ccbd1a51447dccbd608fc5df3c24cb8999b1
6927         * data-mem.c (mem_seek): Fix sign error in position calculation.
6928
6929         Allow null context on gpgme_set_locale.
6930         + commit 434735f71e6969248651ac01c6bd6f6789a6305d
6931         * gpgme.c (gpgme_set_locale): Allow CTX to be a null pointer.
6932
6933 2012-07-13  Werner Koch  <wk@gnupg.org>
6934
6935         Do not include the removed file status-table.h.
6936         + commit e7aeaebb01395b170c91f290bf3ff5021023420f
6937         * src/engine-uiserver.c: Remove status-table.h which is not anymore
6938         built.  Fixes bug#1412.
6939
6940         Make handling of new conf values more robust (bug#1413).
6941         + commit 9f081da7356288a96e8ea4d81a74ff706c00b0cd
6942         * src/engine-gpgconf.c (arg_to_data): Allow for NULL as value.string.
6943
6944 2012-05-02  Werner Koch  <wk@gnupg.org>
6945
6946         Release 1.3.2.
6947         + commit 9c8608f702ec0f44ae55cd7f33bd8df0a2d48508
6948         * configure.ac: Bump LT version to C19/A8/R1.
6949
6950         * configure.ac (GITLOG_TO_CHANGELOG): Define.
6951         * Makefile.am (gen-ChangeLog): Use it.
6952
6953         Remove unused pth stuff from gpgme-config.
6954         + commit 295dd3f238fa656493d34e8a718958d62226b56c
6955         * src/gpgme-config.in: Remove unused pth stuff.
6956
6957         Update signature summary for the case of missing X.509 keys.
6958         + commit d6402b888fd00b883bbfc00c91a2aa9706e4377e
6959         * src/verify.c (gpgme_op_verify_result): Update summary field.
6960
6961 2012-04-30  Werner Koch  <wk@gnupg.org>
6962
6963         Fix timestamp parsing for y2038 hack.
6964         + commit 1a21574b48ee91eedbf95251ee600648b377d1e7
6965         * src/conversion.c (_gpgme_parse_timestamp): Set ENDP before year 2038
6966         check.
6967
6968 2012-04-20  W. Trevor King  <wking@drexel.edu>
6969
6970         .gitignore: flesh out rules and add subdirectory-.gitignores.
6971         + commit 4cb408d33efe80e7d102049dea244d22907d8395
6972
6973
6974 2012-04-13  W. Trevor King  <wking@drexel.edu>
6975
6976         status-table.c: include string.h for strcmp.
6977         + commit 62bbe58280737d73badbe518f140e40480205176
6978         * status-table.c: include string.h to avoid `warning: implicit
6979         declaration of function 'strcmp'`.
6980
6981 2012-04-03  W. Trevor King  <wking@drexel.edu>
6982
6983         gpgme-tool: add help messages for a number of commands.
6984         + commit c318e69d8fa5f9e92d4aac3dd44fae5adcaade72
6985         * src/gpgme-tool.c (hlp_engine, hlp_sub_protocol, hlp_armor, hlp_textmode,
6986         hlp_include_certs, hlp_keylist_mode, hlp_input, hlp_output, hlp_message,
6987         hlp_recipient, hlp_signer, hlp_signers_clear, hlp_decrypt, hlp_decrypt_verify,
6988         hlp_encrypt, hlp_sign_encrypt, hlp_sign, hlp_verify, hlp_import): New strings.
6989         (hlp_protocol): Fix typo.
6990         (register_commands): Add documentation strings.
6991         (doc): Mention Assuan.
6992
6993         uiserver.texi: fix decryption -> encryption typo in PREP_ENCRYPT discussion.
6994         + commit bb62104adf78e8416b3c56b8b2621edd723b56cd
6995         * doc/uiserver.texi (PREP_ENCRYPT): Fix documentation.
6996
6997         Update Werner Koch's distribution signing key in the README.
6998         + commit 6ec9e21dd1ea2f8509700bce018aef6ad7e9a927
6999         * README: Update signing key.
7000
7001 2012-03-12  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
7002
7003         Do not rely on glibc name of syscall.
7004         + commit ff0a640a18e7b7457e6c2edfdc8307bf44628b60
7005         * src/ath.c (ath_self): Use __NR_gettid, not SYS_gettid.
7006
7007         Update config.guess and config.sub to latest version.
7008         + commit ced1ad01aed32d1e4c5000f3b901db018ef7bf1e
7009         * config.guess, config.sub: Update to latest version.
7010
7011 2012-02-14  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>
7012
7013         Rework status table to be less dynamically generated.
7014         + commit 885243e05467e79e2375b3febe7904053ab45dfc
7015         * src/Makefile.am (EXTRA_DIST): Remove mkstatus.
7016         (BUILT_SOURCE, MOSTLYCLEANFILES): Remove.
7017         (main_sources): Remove status-table.h, extra-stati.h.
7018         Add status-table.c.
7019         (status-table.h): Remove rules for built source.
7020         * src/decrypt.c: Don't include extra-stati.h.
7021         * src/engine-gpg.c: Don't include status-table.h.
7022         (status_cmp): Remove function.
7023         (read_status): Use _gpgme_parse_status.
7024         * src/engine-gpgsm.c: Don't include status-table.h.
7025         (status_cmp, parse_status): Remove function.
7026         (gpgsm_assuan_simple_command, status_handler): Use _gpgme_parse_status.
7027         * src/engine-uiserver.c: Don't include status-table.h.
7028         (status_cmp, parse_status): Remove function.
7029         (uiserver_assuan_simple_command, status_handler): Use
7030         _gpgme_parse_status.
7031         * src/gpgme.h.in (gpgme_status_code_t): Add
7032         GPGME_STATUS_DECRYPTION_INFO.
7033         * src/util.h (_gpgme_status_init,_gpgme_parse_status): New declaration.
7034         * src/status-table.c: New file.
7035         * src/extra-stati.h, src/mkstatus: Files removed.
7036         * version.c (do_subsystem_inits): Call _gpgme_status_init.
7037
7038 2012-02-08  Marcus Brinkmann  <mb@g10code.com>
7039
7040         Use gpgme interface for error handling to avoid linking with gpg-error.
7041         + commit dae3073aaa8b7feb1c844fdaf711f79141b9cc65
7042         * tests/t-data.c, tests/run-export.c, tests/run-keylist.c,
7043         tests/run-support.h, tests/run-verify.c, tests/gpg/t-decrypt-verify.c,
7044         tests/gpg/t-edit.c, tests/gpg/t-eventloop.c, tests/gpg/t-keylist-sig.c,
7045         tests/gpg/t-keylist.c, tests/gpg/t-support.h, tests/gpg/t-trustlist.c,
7046         tests/gpg/t-verify.c, tests/gpg/t-wait.c, tests/gpgsm/cms-decrypt.c,
7047         tests/gpgsm/cms-keylist.c, tests/gpgsm/t-keylist.c,
7048         tests/gpgsm/t-support.h, tests/gpgsm/t-verify.c,
7049         tests/opassuan/t-command.c: Use gpgme interface for gpg-error functions.
7050
7051         Link the thread test to pthread.
7052         + commit 0052a72f89c6830818e354358fdd84702d3494c8
7053         * tests/gpg/Makefile.am (t_thread1_LDADD): Add -lpthread.
7054
7055         Link gpgme-tool directly to libassuan, as it uses its interface.
7056         + commit 3f03897cbd223d4a75eb62c3b7bdfeb800661641
7057         * src/Makefile.am (gpgme_tool_LDADD): Add @LIBASSUAN_LIBS@.
7058
7059 2012-01-19  Werner Koch  <wk@gnupg.org>
7060
7061         Support the mingw-w64 toolchain.
7062         + commit 24a10a4af948ebb1c767b69a92fa5bbe933a417c
7063         * autogen.sh (build-w32): Add i686-w64-mingw32 to the toolprefix.
7064
7065         Fix Solaris problems with ttyname_r.
7066         + commit 2f304957f5122a5d9da643dc9951ee67ece06eaf
7067         * m4/gnupg-ttyname.m4: New.  Based on ttyname_r from gnulib.
7068         * src/ttyname_r.c (_gpgme_ttyname_r): Rename from ttyname_r.
7069         Implement hacks required for Solaris and possible other non-fully
7070         Posix systems.
7071         * src/util.h: Include unistd.h.  Redefine ttyname_r depending on
7072         REPLACE_TTYNAME_R and put it into the gpgme name space.
7073
7074         Try to make configure.ac a bit smaller.
7075         + commit c96778297f5477448a676fcf0c61044bdbccc86d
7076         * configure.ac: Move header checks.
7077
7078         For W32 use a build number instead of abbreviated commit id.
7079         + commit 574b087e84f5652cf9d8eba8aa16b8d6bb988035
7080         We would need to use a shortened commit id so that it fits into an 16
7081         bit Windows variable.  Further it is a random number and not something
7082         increasing.  Thus a build number made up from the day of the year and
7083         the hour is much more useful to describe a build number for a specific
7084         revision.
7085         * configure.ac [W32]: Replace BUILD_REVISION by BUILD_NUMBER.
7086         * src/versioninfo.rc.in: Ditto.
7087
7088         Adjust configure.ac for modern autoconf.
7089         + commit a0149630ce6d3e17a7475e20e8b2e31ed5ba57fd
7090         * configure.ac: Minor cleanups.
7091
7092         Update to libtool 2.4.2.
7093         + commit 4cfddadcd0a569f0b204dccea3c975ce0bdfb232
7094         * ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4,
7095         * m4/lt~obsolete.m4: Update.
7096
7097         Add ttyname_r check macro from gnulib.
7098         + commit 3ef528b63679df912551d5d21fc36e465cf50c40
7099         * m4/gnupg-ttyname.m4: New. Taken from current gnulib.
7100
7101 2011-12-02  Werner Koch  <wk@gnupg.org>
7102
7103         Generate the ChangeLog from commit logs.
7104         + commit a4c4ee1aaea4359432bdf60dd572f549ef8dee83
7105         * build-aux/gitlog-to-changelog: New script.  Taken from gnulib.
7106         * build-aux/git-log-fix: New file.
7107         * build-aux/git-log-footer: New file.
7108         * build-aux/git-hook/commit-msg: New script.
7109         * doc/HACKING: New file.
7110         * ChangeLog: New file.
7111         * Makefile.am (EXTRA_DIST): Add new files.
7112         (gen-ChangeLog): New.
7113         (dist-hook): Run gen-ChangeLog.
7114         * autogen.sh: Install commit-msg hook for git.
7115
7116         Rename all ChangeLog files to ChangeLog-2011.
7117
7118 2011-12-02  Werner Koch  <wk@gnupg.org>
7119
7120         NB: Changes done before December 1st, 2011 are described in
7121         per directory files named ChangeLog-2011.  See doc/HACKING for
7122         details.
7123
7124         -----
7125         Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
7126                       2010, 2011, 2012, 2013 g10 Code GmbH
7127
7128         Copying and distribution of this file and/or the original GIT
7129         commit log messages, with or without modification, are
7130         permitted provided the copyright notice and this notice are
7131         preserved.