js: update decrypt/verify results
authorMaximilian Krambach <maximilian.krambach@intevation.de>
Tue, 21 Aug 2018 13:26:17 +0000 (15:26 +0200)
committerMaximilian Krambach <maximilian.krambach@intevation.de>
Tue, 21 Aug 2018 13:26:17 +0000 (15:26 +0200)
--

* src/gpgmejs.js: Decrypt now parses additional optional dec_info
  information, as well as any verify information, if present

* src/permittedOperations: Now decrypt also expect the new return
  object dec_inf (containing info such as is_mime and file_name)

lang/js/BrowserTestExtension/tests/decryptTest.js
lang/js/BrowserTestExtension/tests/inputvalues.js
lang/js/src/gpgmejs.js
lang/js/src/permittedOperations.js

index a3f48da..ea88749 100644 (file)
@@ -59,4 +59,20 @@ describe('Decryption', function () {
                 });
         });
     }).timeout(5000);
+
+
+    it('decrypt/verify operations return proper information', function (done){
+        const data = inputvalues.encryptSignedMessage;
+        context.decrypt(data).then(function (result){
+            expect(result).to.be.an('object');
+            expect(result.signatures).to.be.an('object');
+            expect(result.signatures.all_valid).to.be.true;
+            expect(result.signatures.count).to.equal(1);
+            expect(result.signatures.signatures.good).to.be.an('array');
+            expect(
+                result.signatures.signatures.good[0].fingerprint).to.equal(
+                good_fpr);
+            done();
+        });
+    });
 });
\ No newline at end of file
index f84ac95..5c2abf3 100644 (file)
@@ -86,9 +86,27 @@ const inputvalues = {// eslint-disable-line no-unused-vars
         'CfhY40nMXSYdfl8mDOhvnKcCvy8qxetFv9uCX06OqepAamu/bvxslrzocRyJ/eq0\n' +
         'T2JfzEN+E7Y3PB8UwLgp/ZRmG8zRrQ==\n' +
         '=ioB6\n' +
-        '-----END PGP SIGNATURE-----\n',
+        '-----END PGP SIGNATURE-----\n'
     },
-
+    encryptSignedMessage: '-----BEGIN PGP MESSAGE-----\n'+
+        '\n'+
+        'hQEMA6B8jfIUScGEAQf/bmQ+xNMGTjPvQCktkxR4Svt2dVNVdSzKsCmvSv24QOQF\n'+
+        'yBMK5w51S/6DTdiZI12IYD7hjvkr9NqxXXupjrVKwqEVpg4Pkwckac0OcElJIBsL\n'+
+        '3htr4iYsr8dhSgSS4BO0azcu4wZQTXy5v2P7yYPECMEagNEXnW+tE7sHLCq8Ysqz\n'+
+        'LVxG0R0IUijKeEd3xQC2Tt20e1Z1j5tnqaPhE/9Smqf5OjSUDqpXxvRnSNRk/zEs\n'+
+        'cGVgCF+cv68nUJM9lwEAbBQChplwL6ebnhunC6DsRCxnjLHVyKm127hmhSiMGC0e\n'+
+        'Ns31mGeP1dxpDv6Gi2/oKmq67vG3i4fKeckj7bt30tLA1wH0Qn5Mn6Tzxzve0W0q\n'+
+        'Ghqn9PY9qNK8EkrkzqaFk9dzu5tfSbaJBLS/uIhX2Wj70EMEBbFSkN0qlgOfLgGw\n'+
+        '5mwRvCgj4nvV1ByFhnx7uwgQixvOwLH4JLKvwCQpJm+O2R0eC7M6CzR/b9iL/oaO\n'+
+        'JTkoD9hcLhxF7j+3ZYg7rbNwofuHST097vFjzItsucb0jHOzjlkCqbhdczICILTa\n'+
+        'H76Q6YGdMLyG9a3s4yZUMruaeQyWGeXlryzLDvdEoSgoD5YrolsFOM+Z2apbzVs2\n'+
+        'k5CltwtanjjWGnpAqSyr49C6CSU8G1QHpNygx5frtAS8bojR2ovB9OJp2wUklDvC\n'+
+        'LtU7dLpTY/BIvfB1vzwcW/aNgmPadNHX8mAzlqTQJjeLoo69Wp804t+u36sgfd/J\n'+
+        'ser7vdJJUm+86Q9csefItvFmHhqjMg5XXHoa8WZWJOHIQMxZkaIwKAzcEt/oEOdJ\n'+
+        'rbVNVabhTdbmS5I1ok16wg5jMF07ZDM7nXWMcQNjwT646XKP+pp2N6YQROVidNXj\n'+
+        'COyRyiXE/csr\n'+
+        '=Ik7G\n'+
+        '-----END PGP MESSAGE-----\n',
     someInputParameter: 'bad string',
 
     publicKeyNonAscii: {
index 9a0925b..3be5cdd 100644 (file)
@@ -192,18 +192,21 @@ export class GpgME {
             msg.post().then(function (result){
                 let _result = { data: result.data };
                 _result.base64 = result.base64 ? true: false;
-                _result.is_mime = result.is_mime ? true: false;
-                if (result.file_name){
-                    _result.file_name = result.file_name;
-                } else {
+                if (result.hasOwnProperty('dec_info')){
+                    _result.is_mime = result.dec_info.is_mime ? true: false;
+                    if (result.dec_info.file_name) {
+                        _result.file_name = result.dec_info.file_name;
+                    }
+                }
+                if (!result.file_name) {
                     _result.file_name = null;
                 }
-                if (
-                    result.hasOwnProperty('signatures') &&
-                    Array.isArray(result.signatures)
+                if (result.hasOwnProperty('info')
+                    && result.info.hasOwnProperty('signatures')
+                    && Array.isArray(result.info.signatures)
                 ) {
                     _result.signatures = collectSignatures(
-                        result.signatures);
+                        result.info.signatures);
                 }
                 resolve(_result);
             }, function (error){
index 3142725..6c05fc6 100644 (file)
@@ -127,8 +127,8 @@ export const permittedOperations = {
                 'data': 'string',
                 'base64': 'boolean',
                 'mime': 'boolean',
-                'signatures': 'object',
-                'info': 'object'
+                'info': 'object',
+                'dec_info': 'object'
             }
         }
     },