aboutsummaryrefslogtreecommitdiffstats
path: root/lang/js/src
diff options
context:
space:
mode:
authorMaximilian Krambach <[email protected]>2018-04-23 17:15:40 +0000
committerMaximilian Krambach <[email protected]>2018-04-23 17:15:40 +0000
commit727340b295f25e04cb595022ba143cda48364697 (patch)
tree81d54f26c2dfcdd324382119486b6681a529aed2 /lang/js/src
parentjs: Key handling stubs, Error handling, refactoring (diff)
downloadgpgme-727340b295f25e04cb595022ba143cda48364697.tar.gz
gpgme-727340b295f25e04cb595022ba143cda48364697.zip
js: don't allow message operation changes
-- Once an operation is changed, their set of allowed/required parameters will change. So we shouldn't set/change the operation later.
Diffstat (limited to '')
-rw-r--r--lang/js/src/Keyring.js3
-rw-r--r--lang/js/src/Message.js42
-rw-r--r--lang/js/src/gpgmejs.js9
3 files changed, 24 insertions, 30 deletions
diff --git a/lang/js/src/Keyring.js b/lang/js/src/Keyring.js
index 52fa7f71..d8cb84b2 100644
--- a/lang/js/src/Keyring.js
+++ b/lang/js/src/Keyring.js
@@ -49,8 +49,7 @@ export class GPGME_Keyring {
*
*/
getKeys(pattern, include_secret){
- let msg = new GPGME_Message;
- msg.operation = 'listkeys';
+ let msg = new GPGME_Message('listkeys');
if (pattern && typeof(pattern) === 'string'){
msg.setParameter('pattern', pattern);
}
diff --git a/lang/js/src/Message.js b/lang/js/src/Message.js
index 6a93b6f4..f5e21e00 100644
--- a/lang/js/src/Message.js
+++ b/lang/js/src/Message.js
@@ -23,28 +23,7 @@ export class GPGME_Message {
//TODO getter
constructor(operation){
- if (operation){
- this.operation(operation);
- }
- }
-
- /**
- * Defines the operation this message will have
- * @param {String} operation Must be defined in permittedOperations
- * TODO: move to constructor?
- */
- set operation (operation){
- if (!operation || typeof(operation) !== 'string'){
- return new GPGMEJS_Error('WRONGPARAM');
- }
- if (operation in permittedOperations){
- if (!this._msg){
- this._msg = {};
- }
- this._msg.op = operation;
- } else {
- return new GPGMEJS_Error('WRONG_OP');
- }
+ setOperation(this, operation);
}
get operation(){
@@ -110,4 +89,23 @@ export class GPGME_Message {
}
}
+}
+
+/**
+ * Defines the operation this message will have
+ * @param {String} operation Must be defined in permittedOperations
+ * TODO: move to constructor?
+ */
+function setOperation (scope, operation){
+ if (!operation || typeof(operation) !== 'string'){
+ return new GPGMEJS_Error('WRONGTYPE');
+ }
+ if (permittedOperations.hasOwnProperty(operation)){
+ if (!scope._msg){
+ scope._msg = {};
+ }
+ scope._msg.op = operation;
+ } else {
+ return new GPGMEJS_Error('WRONG_OP');
+ }
} \ No newline at end of file
diff --git a/lang/js/src/gpgmejs.js b/lang/js/src/gpgmejs.js
index c23a356b..b15477f0 100644
--- a/lang/js/src/gpgmejs.js
+++ b/lang/js/src/gpgmejs.js
@@ -76,8 +76,7 @@ export class GpgME {
*/
encrypt (data, publicKeys, wildcard=false){
- let msg = new GPGME_Message;
- msg.operation = 'encrypt';
+ let msg = new GPGME_Message('encrypt');
// TODO temporary
msg.setParameter('armor', true);
@@ -108,8 +107,7 @@ export class GpgME {
if (data === undefined){
return Promise.reject(new GPGMEJS_Error ('EMPTY_MSG'));
}
- let msg = new GPGME_Message;
- msg.operation = 'decrypt';
+ let msg = new GPGME_Message('decrypt');
putData(msg, data);
return this._connection.post(msg);
@@ -117,8 +115,7 @@ export class GpgME {
deleteKey(key, delete_secret = false, no_confirm = false){
return Promise.reject(new GPGMEJS_Error ('NOT_YET_IMPLEMENTED'));
- let msg = new GPGME_Message;
- msg.operation = 'deletekey';
+ let msg = new GPGME_Message('deletekey');
let key_arr = toKeyIdArray(key);
if (key_arr.length !== 1){
throw('TODO');