-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcrypto.js
53 lines (43 loc) · 1.71 KB
/
crypto.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const exec = require("child_process").execSync;
const fs = require("fs");
function generateKeypair() {
var command = "java -jar verification.jar keys";
stdout = exec(command, {encoding: "utf8"});
//Parsear las claves pública y privada, separadas por un salto de línea
var spl = stdout.split("\n");
var pubKey = spl[0].trim();
var privKey = spl[1].trim();
fs.writeFile("keypair/public.key", pubKey, "utf8", 0o644, error => {
if(error) throw error;
console.log("Clave pública generada.");
});
fs.writeFile("keypair/private.key", privKey, "utf8", 0o600, error => {
if(error) throw error;
console.log("Clave privada generada.");
});
}
function encrypt(data) {
//Comprobar que existe la clave pública
if(!fs.existsSync('keypair/public.key')) {
throw "No se puede encriptar ya que no existe la clave pública";
}
var pubKey = fs.readFileSync("keypair/public.key", "utf-8");
var command = "java -jar verification.jar cipher " + data + " \"" + pubKey + "\"";
return exec(command, {encoding: "utf8"}).trim();
}
function decrypt(data) {
//Comprobar que existe la clave privada
if(!fs.existsSync('keypair/private.key')) {
throw "No se puede desencriptar ya que no existe la clave privada";
}
var privKey = fs.readFileSync("keypair/private.key", "utf-8");
var command = "java -jar verification.jar decipher \"" + data.replace(/(\r\n|\n|\r)/gm,"") + "\" \"" + privKey + "\"";
try {
return exec(command, {encoding: "utf8"}).trim();
} catch(e) {
return 0;
}
}
exports.generateKeypair = generateKeypair;
exports.encrypt = encrypt;
exports.decrypt = decrypt;