From 60dc499abd89f7e62a7b9cad943a96faa65187d5 Mon Sep 17 00:00:00 2001 From: Maximilian Krambach Date: Thu, 23 Aug 2018 11:28:18 +0200 Subject: [PATCH] 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. --- lang/js/src/Keyring.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lang/js/src/Keyring.js b/lang/js/src/Keyring.js index d6ba1d6f..d8fd8c81 100644 --- a/lang/js/src/Keyring.js +++ b/lang/js/src/Keyring.js @@ -221,7 +221,12 @@ export class GPGME_Keyring { reject(gpgme_error('KEY_NO_DEFAULT')); } else { 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( result.keys[i].fingerprint, !prepare_sync,