diff options
author | Maximilian Krambach <[email protected]> | 2018-07-04 10:11:35 +0000 |
---|---|---|
committer | Maximilian Krambach <[email protected]> | 2018-07-04 10:11:35 +0000 |
commit | 1105fc87a3bd3e1152aff578b7b84871558418e6 (patch) | |
tree | 75aeb36d9f5087b997001b484894e2cab7853c4d | |
parent | js: fixing Key import/export test (diff) | |
download | gpgme-1105fc87a3bd3e1152aff578b7b84871558418e6.tar.gz gpgme-1105fc87a3bd3e1152aff578b7b84871558418e6.zip |
js: add Key lookup
--
* src/Keyring.js: getKeys() now has the option "search", which will
trigger a remote lookup (as configured in gpg) for the string given
as pattern.
* src/permittedOperations: make use of the new 'locate' option in
keylist
* DemoExtension: Add a button for lookup, to demonstrate the
functionality
-rw-r--r-- | lang/js/DemoExtension/maindemo.js | 17 | ||||
-rw-r--r-- | lang/js/DemoExtension/mainui.html | 10 | ||||
-rw-r--r-- | lang/js/src/Keyring.js | 7 | ||||
-rw-r--r-- | lang/js/src/permittedOperations.js | 3 |
4 files changed, 33 insertions, 4 deletions
diff --git a/lang/js/DemoExtension/maindemo.js b/lang/js/DemoExtension/maindemo.js index d0127c73..4cae934e 100644 --- a/lang/js/DemoExtension/maindemo.js +++ b/lang/js/DemoExtension/maindemo.js @@ -98,5 +98,22 @@ document.addEventListener('DOMContentLoaded', function() { alert( errormsg.message); }); }); + document.getElementById('searchkey').addEventListener('click', + function(){ + let data = document.getElementById('inputtext').value; + gpgmejs.Keyring.getKeys(data, true, true).then(function(keys){ + if (keys.length === 1){ + document.getElementById( + 'pubkey').value = keys[0].fingerprint; + } else if (keys.length > 1) { + alert('The pattern was not unambigious enough for a Key. ' + + keys.length + ' Keys were found'); + } else { + alert('No keys found'); + } + }, function(errormsg){ + alert( errormsg.message); + }); + }); }); }); diff --git a/lang/js/DemoExtension/mainui.html b/lang/js/DemoExtension/mainui.html index b6390363..c773c9b9 100644 --- a/lang/js/DemoExtension/mainui.html +++ b/lang/js/DemoExtension/mainui.html @@ -17,9 +17,13 @@ </li> <li> <span class="label">Fingerprint of Key to use: </span> - </li> - <input type="text" id="pubkey" value="" /> <br> - <button id="getdefaultkey">Set to default signing key</button> + <input type="text" id="pubkey" value="" /> + <button id="getdefaultkey"> + Set to default signing key + </button> + <button id="searchkey"> + Look up Key + </button> </li> </ul> </div> diff --git a/lang/js/src/Keyring.js b/lang/js/src/Keyring.js index 8bec1cea..0d7643f0 100644 --- a/lang/js/src/Keyring.js +++ b/lang/js/src/Keyring.js @@ -39,16 +39,21 @@ export class GPGME_Keyring { * inmediately. This allows for full synchronous use. If set to false, * these will initially only be available as Promises in getArmor() and * getHasSecret() + * @param {Boolean} search (optional) retrieve the Keys from servers with + * the method(s) defined in gnupg (e.g. WKD/HKP lookup) * @returns {Promise.<Array<GPGME_Key>>} * */ - getKeys(pattern, prepare_sync){ + getKeys(pattern, prepare_sync, search){ return new Promise(function(resolve, reject) { let msg = createMessage('keylist'); if (pattern !== undefined){ msg.setParameter('keys', pattern); } msg.setParameter('sigs', true); + if (search === true){ + msg.setParameter('locate', true); + } msg.post().then(function(result){ let resultset = []; let promises = []; diff --git a/lang/js/src/permittedOperations.js b/lang/js/src/permittedOperations.js index 312eaa52..e7f53965 100644 --- a/lang/js/src/permittedOperations.js +++ b/lang/js/src/permittedOperations.js @@ -188,6 +188,9 @@ export const permittedOperations = { 'local':{ allowed: ['boolean'] }, + 'locate': { + allowed: ['boolean'] + }, 'sigs':{ allowed: ['boolean'] }, |