js: update getDefaultKey to more precise logic

--

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

View File

@ -221,7 +221,12 @@ export class GPGME_Keyring {
reject(gpgme_error('KEY_NO_DEFAULT')); reject(gpgme_error('KEY_NO_DEFAULT'));
} else { } else {
for (let i=0; i< result.keys.length; i++ ) { for (let i=0; i< result.keys.length; i++ ) {
if (result.keys[i].invalid === false) { if (
result.keys[i].invalid === false &&
result.keys[i].expired === false &&
result.keys[i].revoked === false &&
result.keys[i].can_sign === true
) {
let k = createKey( let k = createKey(
result.keys[i].fingerprint, result.keys[i].fingerprint,
!prepare_sync, !prepare_sync,