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.
This commit is contained in:
Maximilian Krambach 2018-04-23 19:15:40 +02:00
parent d62f66b1fb
commit 727340b295
3 changed files with 24 additions and 30 deletions

View File

@ -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);
}

View File

@ -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');
}
}

View File

@ -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');