js: encrypt improvement and decrypt method
[gpgme.git] / lang / js / src / Helpers.js
1 /* gpgme.js - Javascript integration for gpgme
2  * Copyright (C) 2018 Bundesamt für Sicherheit in der Informationstechnik
3  *
4  * This file is part of GPGME.
5  *
6  * GPGME is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as
8  * published by the Free Software Foundation; either version 2.1 of
9  * the License, or (at your option) any later version.
10  *
11  * GPGME is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
18  * SPDX-License-Identifier: LGPL-2.1+
19  */
20
21 /**
22  * Tries to return an array of fingerprints, either from input fingerprints or
23  * from Key objects
24  * @param {String|Array<String>} input Input value.
25  * @returns {Array<String>} Array of fingerprints.
26  */
27 export function toKeyIdArray(input){
28     if (!input){
29         return [];
30         // TODO: Warning or error here? Did we expect something or is "nothing" okay?
31     }
32     if (input instanceof Array){
33         let result = [];
34         for (let i=0; i < input.length; i++){
35             if (isFingerprint(input[i]) === true){
36                 result.push(input[i]);
37             } else {
38                 //TODO error?
39                 console.log('gpgmejs/Helpers.js Warning: '+
40                     input[i] +
41                     ' is not a valid key fingerprint and will not be used');
42             }
43         }
44         return result;
45     } else if (isFingerprint(input) === true) {
46         return [input];
47     }
48     console.log('gpgmejs/Helpers.js Warning: ' + input +
49                     ' is not a valid key fingerprint and will not be used');
50     return [];
51 };
52
53 /**
54  * check if values are valid hexadecimal values of a specified length
55  * @param {*} key input value.
56  * @param {int} len the expected length of the value
57  */
58 function hextest(key, len){
59     if (!key || typeof(key) !== "string"){
60         return false;
61     }
62     if (key.length !== len){
63         return false;
64     }
65     let regexp= /^[0-9a-fA-F]*$/i;
66     return regexp.test(key);
67 };
68
69 /**
70  * check if the input is a valid Hex string with a length of 40
71  */
72 export function isFingerprint(string){
73     return hextest(string, 40);
74 };
75
76 //TODO needed anywhere?
77 function isLongId(string){
78     return hextest(string, 16);
79 };
80
81 //TODO needed anywhere?
82 function isShortId(string){
83     return hextest(string, 8);
84 };