aboutsummaryrefslogtreecommitdiffstats
path: root/lang/js
diff options
context:
space:
mode:
authorMaximilian Krambach <[email protected]>2018-08-16 10:03:30 +0000
committerMaximilian Krambach <[email protected]>2018-08-16 10:03:30 +0000
commit715cdc0d7d5bc8d39ff3cc49774c59e5db01c1b6 (patch)
tree047a92616deb52bc30b0a8c0f5f5ab8d00c50504 /lang/js
parentjs: simplify getDefaultKey (diff)
downloadgpgme-715cdc0d7d5bc8d39ff3cc49774c59e5db01c1b6.tar.gz
gpgme-715cdc0d7d5bc8d39ff3cc49774c59e5db01c1b6.zip
js: get default key fixes
-- * src/Keyring.js: The answer was not parsed correctly, so a config was being ignored. * If no config is set, we return the first non-invalid key with a secret, instead of the first key (which may be e.g. an expired one)
Diffstat (limited to '')
-rw-r--r--lang/js/src/Keyring.js22
1 files changed, 15 insertions, 7 deletions
diff --git a/lang/js/src/Keyring.js b/lang/js/src/Keyring.js
index c4b89b2e..9fdd53b9 100644
--- a/lang/js/src/Keyring.js
+++ b/lang/js/src/Keyring.js
@@ -176,12 +176,13 @@ export class GPGME_Keyring {
let msg = createMessage('config_opt');
msg.setParameter('component', 'gpg');
msg.setParameter('option', 'default-key');
- msg.post().then(function(response){
- if (response.value !== undefined
- && response.value.hasOwnProperty('string')
- && typeof(response.value.string) === 'string'
- ){
- me.getKeys(response.value.string,true).then(
+ msg.post().then(function(resp){
+ if (resp.option !== undefined
+ && resp.option.hasOwnProperty('value')
+ && resp.option.value.length === 1
+ && resp.option.value[0].hasOwnProperty('string')
+ && typeof(resp.option.value[0].string) === 'string'){
+ me.getKeys(resp.option.value[0].string, true).then(
function(keys){
if(keys.length === 1){
resolve(keys[0]);
@@ -198,7 +199,14 @@ export class GPGME_Keyring {
if (result.keys.length === 0){
reject(gpgme_error('KEY_NO_DEFAULT'));
} else {
- resolve(result.keys[0]);
+ for (let i=0; i< result.keys.length; i++ ) {
+ if (result.keys[i].get('invalid') === false) {
+ resolve(result.keys[i]);
+ break;
+ } else if (i === result.keys.length - 1){
+ reject(gpgme_error('KEY_NO_DEFAULT'));
+ }
+ }
}
}, function(error){
reject(error);