c9-core/node_modules/c9/crypt.js

41 wiersze
1013 B
JavaScript
Czysty Zwykły widok Historia

2016-06-26 11:53:19 +00:00
var crypto = require("crypto");
exports.crypt = function(sessionId, secret) {
2016-10-21 12:39:16 +00:00
secret = [].concat(secret);
secret = secret[1] || secret[0];
2016-06-26 11:53:19 +00:00
var cipher = crypto.createCipher("aes256", secret);
2016-10-21 12:39:16 +00:00
2016-06-26 11:53:19 +00:00
return (
2016-10-21 12:39:16 +00:00
cipher.update(sessionId, "ascii", "base64") +
2016-06-26 11:53:19 +00:00
cipher.final("base64")
).replace(/\=+$/, "");
};
exports.decrypt = function(encrypted, secret) {
2016-10-21 12:39:16 +00:00
var secrets = [].concat(secret);
var data;
for (var i = 0; i < secrets.length; i++) {
secret = secrets[i];
var cipher = crypto.createDecipher("aes256", secret);
try {
data = [
cipher.update(encrypted, "base64", "ascii"),
cipher.final("ascii")
];
}
catch (err) { /** ignore failed decrypt **/ }
if (data) return data.join("").replace(/\=+$/, "");
}
2016-06-26 11:53:19 +00:00
};
exports.uid = function(length) {
return (require("crypto")
.randomBytes(length)
.toString("base64")
.slice(0, length)
);
};