aboutsummaryrefslogtreecommitdiffstats
path: root/lang/js/src/gpgmejs.js
diff options
context:
space:
mode:
Diffstat (limited to 'lang/js/src/gpgmejs.js')
-rw-r--r--lang/js/src/gpgmejs.js371
1 files changed, 187 insertions, 184 deletions
diff --git a/lang/js/src/gpgmejs.js b/lang/js/src/gpgmejs.js
index f587e854..720490d6 100644
--- a/lang/js/src/gpgmejs.js
+++ b/lang/js/src/gpgmejs.js
@@ -107,204 +107,207 @@ export class GpgME {
return _Keyring;
};
- /**
- * Encrypt (and optionally sign) data
- * @param {String|Object} data text/data to be encrypted as String. Also
- * accepts Objects with a getText method
- * @param {inputKeys} publicKeys
- * Keys used to encrypt the message
- * @param {inputKeys} secretKeys (optional) Keys used to sign the message.
- * If Keys are present, the operation requested is assumed to be 'encrypt
- * and sign'
- * @param {Boolean} base64 (optional) The data will be interpreted as
- * base64 encoded data.
- * @param {Boolean} armor (optional) Request the output as armored block.
- * @param {Boolean} wildcard (optional) If true, recipient information will
- * not be added to the message.
- * @param {Object} additional use additional valid gpg options as defined
- * in {@link permittedOperations}
- * @returns {Promise<encrypt_result>} Object containing the encrypted
- * message and additional info.
- * @async
- */
- this.encrypt = function (data, publicKeys, secretKeys, base64=false,
- armor=true, wildcard=false, additional = {}
- ){
- let msg = createMessage('encrypt');
- if (msg instanceof Error){
- return Promise.reject(msg);
- }
- msg.setParameter('armor', armor);
- msg.setParameter('always-trust', true);
- if (base64 === true) {
- msg.setParameter('base64', true);
- }
- let pubkeys = toKeyIdArray(publicKeys);
- msg.setParameter('keys', pubkeys);
- let sigkeys = toKeyIdArray(secretKeys);
- if (sigkeys.length > 0) {
- msg.setParameter('signing_keys', sigkeys);
- }
- putData(msg, data);
- if (wildcard === true){
- msg.setParameter('throw-keyids', true);
- }
- if (additional){
- let additional_Keys = Object.keys(additional);
- for (let k = 0; k < additional_Keys.length; k++) {
- msg.setParameter(additional_Keys[k],
- additional[additional_Keys[k]]);
+ /**
+ * Encrypt (and optionally sign) data
+ * @param {String|Object} data text/data to be encrypted as String. Also
+ * accepts Objects with a getText method
+ * @param {inputKeys} publicKeys
+ * Keys used to encrypt the message
+ * @param {inputKeys} secretKeys (optional) Keys used to sign the
+ * message. If Keys are present, the operation requested is assumed
+ * to be 'encrypt and sign'
+ * @param {Boolean} base64 (optional) The data will be interpreted as
+ * base64 encoded data.
+ * @param {Boolean} armor (optional) Request the output as armored
+ * block.
+ * @param {Boolean} wildcard (optional) If true, recipient information
+ * will not be added to the message.
+ * @param {Object} additional use additional valid gpg options as
+ * defined in {@link permittedOperations}
+ * @returns {Promise<encrypt_result>} Object containing the encrypted
+ * message and additional info.
+ * @async
+ */
+ this.encrypt = function (data, publicKeys, secretKeys, base64=false,
+ armor=true, wildcard=false, additional = {}
+ ){
+ let msg = createMessage('encrypt');
+ if (msg instanceof Error){
+ return Promise.reject(msg);
}
- }
- if (msg.isComplete() === true){
- return msg.post();
- } else {
- return Promise.reject(gpgme_error('MSG_INCOMPLETE'));
- }
- };
+ msg.setParameter('armor', armor);
+ msg.setParameter('always-trust', true);
+ if (base64 === true) {
+ msg.setParameter('base64', true);
+ }
+ let pubkeys = toKeyIdArray(publicKeys);
+ msg.setParameter('keys', pubkeys);
+ let sigkeys = toKeyIdArray(secretKeys);
+ if (sigkeys.length > 0) {
+ msg.setParameter('signing_keys', sigkeys);
+ }
+ putData(msg, data);
+ if (wildcard === true){
+ msg.setParameter('throw-keyids', true);
+ }
+ if (additional){
+ let additional_Keys = Object.keys(additional);
+ for (let k = 0; k < additional_Keys.length; k++) {
+ msg.setParameter(additional_Keys[k],
+ additional[additional_Keys[k]]);
+ }
+ }
+ if (msg.isComplete() === true){
+ return msg.post();
+ } else {
+ return Promise.reject(gpgme_error('MSG_INCOMPLETE'));
+ }
+ };
- /**
- * Decrypts a Message
- * @param {String|Object} data text/data to be decrypted. Accepts Strings
- * and Objects with a getText method
- * @param {Boolean} base64 (optional) false if the data is an armored block,
- * true if it is base64 encoded binary data
- * @returns {Promise<decrypt_result>} Decrypted Message and information
- * @async
- */
- this.decrypt = function (data, base64=false){
- if (data === undefined){
- return Promise.reject(gpgme_error('MSG_EMPTY'));
- }
- let msg = createMessage('decrypt');
+ /**
+ * Decrypts a Message
+ * @param {String|Object} data text/data to be decrypted. Accepts
+ * Strings and Objects with a getText method
+ * @param {Boolean} base64 (optional) false if the data is an armored
+ * block, true if it is base64 encoded binary data
+ * @returns {Promise<decrypt_result>} Decrypted Message and information
+ * @async
+ */
+ this.decrypt = function (data, base64=false){
+ if (data === undefined){
+ return Promise.reject(gpgme_error('MSG_EMPTY'));
+ }
+ let msg = createMessage('decrypt');
- if (msg instanceof Error){
- return Promise.reject(msg);
- }
- if (base64 === true){
- msg.setParameter('base64', true);
- }
- putData(msg, data);
- if (base64 === true){
- msg.setParameter('base64', true);
- }
- return new Promise(function(resolve, reject){
- msg.post().then(function(result){
- let _result = {data: result.data};
- _result.base64 = result.base64 ? true: false;
- _result.is_mime = result.mime ? true: false;
- if (result.file_name){
- _result.file_name = result.file_name;
- }
- if (
- result.hasOwnProperty('signatures') &&
- Array.isArray(result.signatures)
- ) {
- _result.signatures = collectSignatures(result.signatures);
- }
- resolve(_result);
- }, function(error){
- reject(error);
+ if (msg instanceof Error){
+ return Promise.reject(msg);
+ }
+ if (base64 === true){
+ msg.setParameter('base64', true);
+ }
+ putData(msg, data);
+ if (base64 === true){
+ msg.setParameter('base64', true);
+ }
+ return new Promise(function(resolve, reject){
+ msg.post().then(function(result){
+ let _result = {data: result.data};
+ _result.base64 = result.base64 ? true: false;
+ _result.is_mime = result.mime ? true: false;
+ if (result.file_name){
+ _result.file_name = result.file_name;
+ }
+ if (
+ result.hasOwnProperty('signatures') &&
+ Array.isArray(result.signatures)
+ ) {
+ _result.signatures = collectSignatures(
+ result.signatures);
+ }
+ resolve(_result);
+ }, function(error){
+ reject(error);
+ });
});
- });
- };
+ };
- /**
- * Sign a Message
- * @param {String|Object} data text/data to be signed. Accepts Strings
- * and Objects with a getText method.
- * @param {inputKeys} keys The key/keys to use for signing
- * @param {String} mode The signing mode. Currently supported:
- * 'clearsign':The Message is embedded into the signature;
- * 'detached': The signature is stored separately
- * @param {Boolean} base64 input is considered base64
- * @returns {Promise<signResult>}
- * @async
- */
- this.sign = function (data, keys, mode='clearsign', base64=false) {
- if (data === undefined){
- return Promise.reject(gpgme_error('MSG_EMPTY'));
- }
- let key_arr = toKeyIdArray(keys);
- if (key_arr.length === 0){
- return Promise.reject(gpgme_error('MSG_NO_KEYS'));
- }
- let msg = createMessage('sign');
+ /**
+ * Sign a Message
+ * @param {String|Object} data text/data to be signed. Accepts Strings
+ * and Objects with a getText method.
+ * @param {inputKeys} keys The key/keys to use for signing
+ * @param {String} mode The signing mode. Currently supported:
+ * 'clearsign':The Message is embedded into the signature;
+ * 'detached': The signature is stored separately
+ * @param {Boolean} base64 input is considered base64
+ * @returns {Promise<signResult>}
+ * @async
+ */
+ this.sign = function (data, keys, mode='clearsign', base64=false) {
+ if (data === undefined){
+ return Promise.reject(gpgme_error('MSG_EMPTY'));
+ }
+ let key_arr = toKeyIdArray(keys);
+ if (key_arr.length === 0){
+ return Promise.reject(gpgme_error('MSG_NO_KEYS'));
+ }
+ let msg = createMessage('sign');
- msg.setParameter('keys', key_arr);
- if (base64 === true){
- msg.setParameter('base64', true);
- }
- msg.setParameter('mode', mode);
- putData(msg, data);
- return new Promise(function(resolve,reject) {
- if (mode ==='detached'){
- msg.expect= 'base64';
+ msg.setParameter('keys', key_arr);
+ if (base64 === true){
+ msg.setParameter('base64', true);
}
- msg.post().then( function(message) {
- if (mode === 'clearsign'){
- resolve({
- data: message.data}
- );
- } else if (mode === 'detached') {
- resolve({
- data: data,
- signature: message.data
- });
+ msg.setParameter('mode', mode);
+ putData(msg, data);
+ return new Promise(function(resolve,reject) {
+ if (mode ==='detached'){
+ msg.expect= 'base64';
}
- }, function(error){
- reject(error);
+ msg.post().then( function(message) {
+ if (mode === 'clearsign'){
+ resolve({
+ data: message.data}
+ );
+ } else if (mode === 'detached') {
+ resolve({
+ data: data,
+ signature: message.data
+ });
+ }
+ }, function(error){
+ reject(error);
+ });
});
- });
- };
+ };
- /**
- * Verifies data.
- * @param {String|Object} data text/data to be verified. Accepts Strings
- * and Objects with a getText method
- * @param {String} (optional) A detached signature. If not present, opaque
- * mode is assumed
- * @param {Boolean} (optional) Data and signature are base64 encoded
- * @returns {Promise<verifyResult>}
- *@async
- */
- this.verify= function (data, signature, base64 = false){
- let msg = createMessage('verify');
- let dt = putData(msg, data);
- if (dt instanceof Error){
- return Promise.reject(dt);
- }
- if (signature){
- if (typeof(signature)!== 'string'){
- return Promise.reject(gpgme_error('PARAM_WRONG'));
- } else {
- msg.setParameter('signature', signature);
+ /**
+ * Verifies data.
+ * @param {String|Object} data text/data to be verified. Accepts Strings
+ * and Objects with a getText method
+ * @param {String} (optional) A detached signature. If not present,
+ * opaque mode is assumed
+ * @param {Boolean} (optional) Data and signature are base64 encoded
+ * @returns {Promise<verifyResult>}
+ *@async
+ */
+ this.verify= function (data, signature, base64 = false){
+ let msg = createMessage('verify');
+ let dt = putData(msg, data);
+ if (dt instanceof Error){
+ return Promise.reject(dt);
}
- }
- if (base64 === true){
- msg.setParameter('base64', true);
- }
- return new Promise(function(resolve, reject){
- msg.post().then(function (message){
- if (!message.info || !message.info.signatures){
- reject(gpgme_error('SIG_NO_SIGS'));
+ if (signature){
+ if (typeof(signature)!== 'string'){
+ return Promise.reject(gpgme_error('PARAM_WRONG'));
} else {
- let _result = collectSignatures(message.info.signatures);
- _result.is_mime = message.info.is_mime? true: false;
- if (message.info.filename){
- _result.file_name = message.info.filename;
- }
- _result.data = message.data;
- resolve(_result);
+ msg.setParameter('signature', signature);
}
- }, function(error){
- reject(error);
+ }
+ if (base64 === true){
+ msg.setParameter('base64', true);
+ }
+ return new Promise(function(resolve, reject){
+ msg.post().then(function (message){
+ if (!message.info || !message.info.signatures){
+ reject(gpgme_error('SIG_NO_SIGS'));
+ } else {
+ let _result = collectSignatures(
+ message.info.signatures);
+ _result.is_mime = message.info.is_mime? true: false;
+ if (message.info.filename){
+ _result.file_name = message.info.filename;
+ }
+ _result.data = message.data;
+ resolve(_result);
+ }
+ }, function(error){
+ reject(error);
+ });
});
- });
- };
-}
+ };
+ }
- /**
+ /**
* setter for {@link setKeyring}.
* @param {GPGME_Keyring} keyring A Keyring to use
*/
@@ -332,7 +335,7 @@ export class GpgME {
* @private
*/
function putData(message, data){
- if (!message || !message instanceof GPGME_Message) {
+ if (!message || !(message instanceof GPGME_Message)) {
return gpgme_error('PARAM_WRONG');
}
if (!data){