[git] GPGME - branch, master, updated. gpgme-1.11.1-262-g3201ded

by Maximilian Krambach cvs at cvs.gnupg.org
Thu Aug 30 15:02:21 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".

The branch, master has been updated
       via  3201ded91f91fcdf501ad966380b6ff29d798b09 (commit)
       via  44691995b72c483ee8a91f11767b2bd317072d5a (commit)
      from  a9863717b1b82b3077edd0db85454ba801eac9bd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3201ded91f91fcdf501ad966380b6ff29d798b09
Author: Maximilian Krambach <maximilian.krambach at intevation.de>
Date:   Thu Aug 30 15:00:19 2018 +0200

    js: add tests
    
    --
    
    * BrowserTestExtension/tests:
    
      - decryptTest.js: Check Decryption and return values of binary data
      - encryptTest.js: Return data type of armored/non-armored encryption
      - added a small encoded input png for testing
    
    * DemoExtension/maindemo.js: Fixed unexpected usage of the Demo encrypt
      (non-armored)

diff --git a/lang/js/BrowserTestExtension/tests/decryptTest.js b/lang/js/BrowserTestExtension/tests/decryptTest.js
index 8852cb6..606d96e 100644
--- a/lang/js/BrowserTestExtension/tests/decryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/decryptTest.js
@@ -22,7 +22,7 @@
  */
 
 /* global describe, it, before, expect, Gpgmejs */
-/* global bigString, inputvalues, sabotageMsg*/
+/* global bigString, inputvalues, sabotageMsg, binaryData */
 
 describe('Decryption', function () {
     let context = null;
@@ -76,4 +76,26 @@ describe('Decryption', function () {
             done();
         });
     });
+
+    it('decrypt of a png, result as base64', function (done){
+        const data = binaryData.encryptedArmored;
+        context.decrypt({ data: data, expect: 'base64' })
+            .then(function (result){
+                expect(result.data).to.be.a('String');
+                expect(result.data).to.equal(binaryData.base64);
+                expect(result.format).to.equal('base64');
+                done();
+            });
+    });
+
+    it('decrypt of a png, result as Uint8Array', function (done){
+        const data = binaryData.encryptedArmored;
+        context.decrypt({ data: data, expect: 'uint8' })
+            .then(function (result){
+                expect(result.data).to.be.an('Uint8Array');
+                expect(result.format).to.equal('uint8');
+                done();
+            });
+    });
+
 });
\ No newline at end of file
diff --git a/lang/js/BrowserTestExtension/tests/encryptTest.js b/lang/js/BrowserTestExtension/tests/encryptTest.js
index ccdb499..d97b458 100644
--- a/lang/js/BrowserTestExtension/tests/encryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/encryptTest.js
@@ -22,7 +22,7 @@
  */
 
 /* global describe, it, expect, before, Gpgmejs */
-/* global inputvalues, fixedLengthString */
+/* global inputvalues, fixedLengthString, bigString */
 
 describe('Encryption', function () {
     let context = null;
@@ -47,6 +47,47 @@ describe('Encryption', function () {
             });
     });
 
+
+    it( 'encrypt with \'armor\': true should returned an armored block',
+        function (done){
+            const data = bigString(1000);
+            context.encrypt({ data: data, publicKeys: good_fpr, armor: true })
+                .then(function (answer){
+                    expect(answer).to.not.be.empty;
+                    expect(answer.data).to.be.a('string');
+                    expect(answer.data).to.include('BEGIN PGP MESSAGE');
+                    expect(answer.data).to.include('END PGP MESSAGE');
+                    expect(answer.format).to.equal('ascii');
+                    done();
+                });
+        });
+
+    it( 'encrypt with \'armor\': false and \'expected\': \'uint8\' returns ' +
+    'an Uint8Array', function (done) {
+        const data = bigString(1000);
+        context.encrypt({
+            data: data, publicKeys: good_fpr, armor: false, expect: 'uint8'
+        }).then(function (answer){
+            expect(answer).to.not.be.empty;
+            expect(answer.data).to.be.a('Uint8Array');
+            expect(answer.format).to.equal('uint8');
+            done();
+        });
+    });
+
+    it( 'encrypt with \'armor\': false and \'expected\': \'base64\' returns ' +
+        'a base64 string', function (done) {
+        const data = bigString(1000);
+        context.encrypt({
+            data: data, publicKeys: good_fpr, armor: false, expect: 'base64'
+        }).then(function (answer){
+            expect(answer).to.not.be.empty;
+            expect(answer.data).to.be.a('string');
+            expect(answer.format).to.equal('base64');
+            done();
+        });
+    });
+
     const sizes = [5,20,50];
     for (let i=0; i < sizes.length; i++) {
         it('Successful encrypt a ' + sizes[i] + 'MB message', function (done) {
@@ -114,5 +155,5 @@ describe('Encryption', function () {
             });
     }).timeout(8000);
 
-    // TODO check different valid parameter
+
 });
diff --git a/lang/js/BrowserTestExtension/tests/inputvalues.js b/lang/js/BrowserTestExtension/tests/inputvalues.js
index 5c2abf3..6b66621 100644
--- a/lang/js/BrowserTestExtension/tests/inputvalues.js
+++ b/lang/js/BrowserTestExtension/tests/inputvalues.js
@@ -336,3 +336,73 @@ function sabotageMsg (msg, rate = 0.01, p= [35,35]){
     }
     return msg;
 }
+
+// a simple png
+// eslint-disable-next-line no-unused-vars
+const binaryData = {
+    base64:
+        'iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAEwElEQVQ4y62R228b1xn' +
+        'E51z27I271K64okTqRkuOLRuNHcNBCqTwS//qvvYCtAmQNrETO7akyJJsipRIUeSSez' +
+        'vnfH1IkBboW5F5mpf5ATPDiAi/hTh+I8n/I/NrCcbY/4DI/GKY+E/CGLIWROCccQ7Or' +
+        'bVVXWmttTHKUY6UjuP8jJMggilhVjAluILwIUMwRlpTUVBVQWsoxT1PS3E7v7u6Ho0m' +
+        '48boOIz63V6WdsIgZIxJmBXyMyx/QjWEbCPYReuQRNsWhbm5tqMRFQVPU6x3JlZ/e/r' +
+        'm76+/OR6elbrKovT5/ae/f/L5YGcQeL5EOcHsa8z/hOY1eIbVF6b5o/YeNrnWFxf2+5' +
+        'fs5kY9PDKHdlgu/vrPv/357F95UxLo7G44nk+EEO2orbKuRHOL1feo/wJ8hFEmn5dNv' +
+        'JB8MRP1xYV79j68HrEss1ub15Ph8dXpoil+3lqTPZ+PXp7+8On9x51kXcLUsAtgARBR' +
+        'ZfRpnn93voouxsJM5ptJsp1lfn+HwtDOpAX77/sM2bvVfFUW2hgJJ4bTQ9UH5YA1psz' +
+        'zyYery69ezaihzx883BgM2GDgxFGqq92N3YvltDA1CGDwJU8j3/UYZ1rCTRE+QfMBpQ' +
+        'BdgRzwAFwyKSAV1jvU38HGptvy+4J/8ej5sih+uHq31HUg+ePexvNHg27mcGch4aZY+' +
+        '4wsB23Z4j1XCNeOtr0dG6Eyst3tFV47ZwpQcZQcDR6YUnfD9UWxSBL/06Peo0+67WRC' +
+        'cinBBKmMnE8s98gcQjlh1Nn2sqArxiusyP1Yu8WdyUzVYhVpkiQ2/PX7W4PdQXdvP1x' +
+        'Lx0x9Z8BkXVVU1rQgGjZ2VPNOy9nrxPGmjdRkUs8XuqhEAcOIrCzG1zdv3/x4fn7+2b' +
+        'OngTMIPZfL0mJIsHJyfc3LUlyN5Jt37MfX4uixs96TmcO5MpxqggWKhlaNiUBE1pC2M' +
+        'BaWOOPM40gY7hEq+fLVKx/olOVa07hEgjEwzhnzlYg9GXs2r21L8dgXLddGaWtwtBv1' +
+        '/LgbWE9rzn2khK7FWPT7/Xy5bIVBO03U5qbc2+fdDZkkJBUDlGCh4h2fd0LpKlOw6VQ' +
+        'MF+FQxwvlyziMAyXBJxbH8vjkhKw92N8peplyOcWRE7mMk6t4J1KRJ1arQsIwW1qqKs' +
+        'ymwekV+wcTTKLeNt0OdRwowJEvXrxoJ+1wM8kTNncWQpVtIVLWapEbKIebmvQyv72pl' +
+        '3da2VJMSzOu1RWAnG7KpjC1VOhK/lR++YcvucPIa6biw6V+zSy7J5/6uh3IlrEMpilm' +
+        'N9fvXs0uT4KtnuoHvfBBg4Y46ztHbRvLleSrFpQrDw4OGqpv9Xi0qqf1R1hs6oPaVNp' +
+        'oznlT1+VycXd5cvv2a6JnycaTA/93mRqAsYytp0UoRzO7mLPQlVEUNaY2dZ3RVoVnAN' +
+        'ZExhpRmrJmDYyRXtDePgDQ3r63nuwEaUaKM8CtyZlN6fhEv33DuxtScAHmhIh62I+cx' +
+        'BjDaye/XU3zO85E6HvK9bODo7X+nhdGYdrx/VgoF9ZCL20zqW9v6f17ayEBCCYDGTpc' +
+        'Rc5aXdez5d3Hy/PT41MAh4eH+7s7ydY2Z8xRSjiOVC5jDLDkuBRFYm8fAEvSfwPxgHl' +
+        'kzr8e4QAAAABJRU5ErkJggg==',
+    encryptedArmored: '-----BEGIN PGP MESSAGE-----\n' +
+        '\n' +
+        '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\n' +
+        '=AkaP\n' +
+        '-----END PGP MESSAGE-----\n'
+};
\ No newline at end of file
diff --git a/lang/js/DemoExtension/maindemo.js b/lang/js/DemoExtension/maindemo.js
index b472bcc..c992e7e 100644
--- a/lang/js/DemoExtension/maindemo.js
+++ b/lang/js/DemoExtension/maindemo.js
@@ -29,8 +29,8 @@ document.addEventListener('DOMContentLoaded', function () {
             function (){
                 let data = document.getElementById('inputtext').value;
                 let keyId = document.getElementById('pubkey').value;
-                gpgmejs.encrypt({ data: data, publicKeys: keyId, armor:false }).then(
-                    function (answer){
+                gpgmejs.encrypt({ data: data, publicKeys: keyId, armor: true })
+                    .then(function (answer){
                         if (answer.data){
                             document.getElementById(
                                 'answer').value = answer.data;

commit 44691995b72c483ee8a91f11767b2bd317072d5a
Author: Maximilian Krambach <maximilian.krambach at intevation.de>
Date:   Thu Aug 30 14:46:54 2018 +0200

    js: add encoding parameter for encrypt return
    
    --
    
    * src/gpgme.js: In case the encryption was done unarmored, the result
      is binary data. Added an option to either return the binary data as
      base64-encoded string or as Uint8Array, similar to return values of
      decrypt

diff --git a/lang/js/src/gpgmejs.js b/lang/js/src/gpgmejs.js
index 295cc04..7b835ac 100644
--- a/lang/js/src/gpgmejs.js
+++ b/lang/js/src/gpgmejs.js
@@ -136,6 +136,8 @@ export class GpgME {
      * @param {Boolean} always_trust (optional, default true) This assumes that
      * used keys are fully trusted. If set to false, encryption to a key not
      * fully trusted in gnupg will fail
+     * @param {String} expect in case of armored:false, request how to return
+     * the  binary result. Accepts 'base64' or 'uint8', defaults to 'base64'.
      * @param {Object} additional use additional valid gpg options as
      * defined in {@link permittedOperations}
      * @returns {Promise<encrypt_result>} Object containing the encrypted
@@ -143,7 +145,8 @@ export class GpgME {
      * @async
      */
     encrypt ({ data, publicKeys, secretKeys, base64 = false, armor = true,
-        wildcard, always_trust = true, additional = {} } = {}){
+        wildcard, always_trust = true, expect = 'base64',
+        additional = {} } = {}){
         if (typeof arguments[0] !== 'object') {
             return Promise.reject(gpgme_error('PARAM_WRONG'));
         }
@@ -156,7 +159,11 @@ export class GpgME {
         }
         if (armor === false){
             msg.setParameter('armor', false);
-            msg.expected = 'base64';
+            if (expect === 'uint8' || expect === 'base64') {
+                msg.expected = expect;
+            } else {
+                return Promise.reject(gpgme_error('PARAM_WRONG'));
+            }
         } else if (armor === true) {
             msg.setParameter('armor', true);
         }

-----------------------------------------------------------------------

Summary of changes:
 lang/js/BrowserTestExtension/tests/decryptTest.js | 24 +++++++-
 lang/js/BrowserTestExtension/tests/encryptTest.js | 45 ++++++++++++++-
 lang/js/BrowserTestExtension/tests/inputvalues.js | 70 +++++++++++++++++++++++
 lang/js/DemoExtension/maindemo.js                 |  4 +-
 lang/js/src/gpgmejs.js                            | 11 +++-
 5 files changed, 147 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
GnuPG Made Easy
http://git.gnupg.org




More information about the Gnupg-commits mailing list