core: Fix expiration time handling when creating keys.
authorJustus Winter <justus@g10code.com>
Wed, 15 Feb 2017 15:17:13 +0000 (16:17 +0100)
committerJustus Winter <justus@g10code.com>
Wed, 15 Feb 2017 15:45:45 +0000 (16:45 +0100)
commitde708e5934cda380dbc3ae51f587c09041de7562
tree27b41754cc3a7fb715051105c355296144768f93
parent27544d0a74267ab6057dc816ea3311bc9149a200
core: Fix expiration time handling when creating keys.

* NEWS: Update.
* doc/gpgme.texi (gpgme_op_createkey): Clarify the meaning of the
'expire' parameter.
(GPGME_CREATE_NOEXPIRE): Document new flag.
(gpgme_op_createsubkey): Clarify the meaning of the 'expire'
parameter.
* src/engine-gpg.c (gpg_add_algo_usage_expire): Fix handling of the
expiration time.
* src/gpgme.h.in (GPGME_CREATE_NOEXPIRE): New macro.
--

Previously, the documentation stated that the expiration time was an
absolute timestamp.  However, this value was passed using the
'seconds=N' syntax to GnuPG which specifies the expiration time in
seconds relative to the creation time.  Fix the documentation.

Furthermore, the documentation stated that using 0 results in keys
that do not expire.  This was communicated to GnuPG by using the
implicit default.  However, as of GnuPG 2.1.17, the default was
changed to create keys that expire within a reasonable timespan.

Fix this discrepancy by aligning the behavior with recent GnuPG
versions: 0 means use a reasonable default, and introduce a flag that
can be used to create keys that do not expire.  Communicate this
explicitly to GnuPG.

Signed-off-by: Justus Winter <justus@g10code.com>
NEWS
doc/gpgme.texi
src/engine-gpg.c
src/gpgme.h.in