aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lang/js/BrowserTestExtension/tests/encryptTest.js5
-rw-r--r--lang/js/src/Keyring.js52
-rw-r--r--lang/js/unittests.js14
3 files changed, 46 insertions, 25 deletions
diff --git a/lang/js/BrowserTestExtension/tests/encryptTest.js b/lang/js/BrowserTestExtension/tests/encryptTest.js
index 2cb4e58b..1114125e 100644
--- a/lang/js/BrowserTestExtension/tests/encryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/encryptTest.js
@@ -133,7 +133,7 @@ describe('Encryption', function () {
});
}).timeout(5000);
- it('Overly large message ( > 65MB) is rejected', function (done) {
+ it('Overly large message ( > 64MB) is rejected', function (done) {
let prm = Gpgmejs.init();
prm.then(function (context) {
context.encrypt(
@@ -142,10 +142,11 @@ describe('Encryption', function () {
expect(answer).to.be.undefined;
}, function(error){
expect(error).to.be.an.instanceof(Error);
- // expect(error.code).to.equal('GNUPG_ERROR');
// TODO: there is a 64 MB hard limit at least in chrome at:
// chromium//extensions/renderer/messaging_util.cc:
// kMaxMessageLength
+ // The error will be a browser error, not from gnupg or from
+ // this library
done();
});
});
diff --git a/lang/js/src/Keyring.js b/lang/js/src/Keyring.js
index 358757b0..09c43f73 100644
--- a/lang/js/src/Keyring.js
+++ b/lang/js/src/Keyring.js
@@ -56,28 +56,46 @@ export class GPGME_Keyring {
}
msg.post().then(function(result){
let resultset = [];
- let promises = [];
if (result.keys.length === 0){
resolve([]);
} else {
- for (let i=0; i< result.keys.length; i++){
- let k = createKey(result.keys[i].fingerprint);
- k.setKeyData(result.keys[i]);
- if (prepare_sync === true){
- promises.push(k.getArmor());
- promises.push(k.getHasSecret());
- }
- resultset.push(k);
- }
- if (promises.length > 0) {
- Promise.all(promises).then(function() {
- resolve(resultset);
- }, function(error){
- reject(error);
- });
+ let secondrequest;
+ if (prepare_sync === true) {
+ secondrequest = function() {
+ msg.setParameter('secret', true);
+ return msg.post();
+ };
} else {
- resolve(resultset);
+ secondrequest = function() {
+ return Promise.resolve(true);
+ };
}
+ secondrequest().then(function(answer) {
+ for (let i=0; i < result.keys.length; i++){
+ if (prepare_sync === true){
+ result.keys[i].hasSecret = false;
+ if (answer && answer.keys) {
+ for (let j=0; j < answer.keys.length; j++ ){
+ if (result.keys[i].fingerprint ===
+ answer.keys[j].fingerprint
+ ) {
+ if (answer.keys[j].secret === true){
+ result.keys[i].hasSecret = true;
+ }
+ break;
+ }
+ }
+ // TODO getArmor() to be used in sync
+ }
+ }
+ let k = createKey(result.keys[i].fingerprint);
+ k.setKeyData(result.keys[i]);
+ resultset.push(k);
+ }
+ resolve(resultset);
+ }, function(error){
+ reject(error);
+ });
}
});
});
diff --git a/lang/js/unittests.js b/lang/js/unittests.js
index 169e8ebc..04e15ef3 100644
--- a/lang/js/unittests.js
+++ b/lang/js/unittests.js
@@ -272,9 +272,9 @@ function unittests (){
keyring.getKeys(null, true).then(function(result){
expect(result).to.be.an('array');
expect(result[0]).to.be.an.instanceof(GPGME_Key);
- expect(result[0].get('armored')).to.be.a('string');
- expect(result[0].get('armored')).to.include(
- '-----END PGP PUBLIC KEY BLOCK-----');
+ expect(result[0].get('hasSecret')).to.be.a('boolean');
+ // expect(result[0].get('armored')).to.include(
+ // '-----END PGP PUBLIC KEY BLOCK-----');
done();
});
}
@@ -287,9 +287,11 @@ function unittests (){
function(result){
expect(result).to.be.an('array');
expect(result[0]).to.be.an.instanceof(GPGME_Key);
- expect(result[0].get('armored')).to.be.a('string');
- expect(result[0].get('armored')).to.include(
- '-----END PGP PUBLIC KEY BLOCK-----');
+ expect(result[0].get('hasSecret')).to.be.a('boolean');
+ // TODO: preparing sync for armored is still in discussion
+ // expect(result[0].get('armored')).to.be.a('string');
+ // expect(result[0].get('armored')).to.include(
+ // '-----END PGP PUBLIC KEY BLOCK-----');
done();
}
);