c9-core/node_modules/c9/crypt.js

41 wiersze
1013 B
JavaScript

var crypto = require("crypto");
exports.crypt = function(sessionId, secret) {
secret = [].concat(secret);
secret = secret[1] || secret[0];
var cipher = crypto.createCipher("aes256", secret);
return (
cipher.update(sessionId, "ascii", "base64") +
cipher.final("base64")
).replace(/\=+$/, "");
};
exports.decrypt = function(encrypted, secret) {
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(/\=+$/, "");
}
};
exports.uid = function(length) {
return (require("crypto")
.randomBytes(length)
.toString("base64")
.slice(0, length)
);
};