js: add Key lookup
authorMaximilian Krambach <maximilian.krambach@intevation.de>
Wed, 4 Jul 2018 10:11:35 +0000 (12:11 +0200)
committerMaximilian Krambach <maximilian.krambach@intevation.de>
Wed, 4 Jul 2018 10:11:35 +0000 (12:11 +0200)
--

* 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

lang/js/DemoExtension/maindemo.js
lang/js/DemoExtension/mainui.html
lang/js/src/Keyring.js
lang/js/src/permittedOperations.js

index d0127c7..4cae934 100644 (file)
@@ -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);
+                });
+            });
     });
 });
index b639036..c773c9b 100644 (file)
                 </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>&nbsp;
+                        <button id="searchkey">
+                            Look up Key
+                        </button>
                 </li>
             </ul>
         </div>
index 8bec1ce..0d7643f 100644 (file)
@@ -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 = [];
index 312eaa5..e7f5396 100644 (file)
@@ -188,6 +188,9 @@ export const permittedOperations = {
             'local':{
                 allowed: ['boolean']
             },
+            'locate': {
+                allowed: ['boolean']
+            },
             'sigs':{
                 allowed: ['boolean']
             },