Revert "Revert "Revert "Rotate sso"""

pull/378/head
Matthijs van Henten 2016-10-21 14:38:26 +02:00 zatwierdzone przez GitHub
rodzic ceaaad7bb9
commit 1dad6c0950
2 zmienionych plików z 19 dodań i 60 usunięć

19
node_modules/c9/crypt.js wygenerowano vendored
Wyświetl plik

@ -1,11 +1,7 @@
var crypto = require("crypto"); var crypto = require("crypto");
exports.crypt = function(sessionId, secret) { exports.crypt = function(sessionId, secret) {
secret = [].concat(secret);
secret = secret[1] || secret[0];
var cipher = crypto.createCipher("aes256", secret); var cipher = crypto.createCipher("aes256", secret);
return ( return (
cipher.update(sessionId, "ascii", "base64") + cipher.update(sessionId, "ascii", "base64") +
cipher.final("base64") cipher.final("base64")
@ -13,23 +9,14 @@ exports.crypt = function(sessionId, secret) {
}; };
exports.decrypt = function(encrypted, secret) { 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); var cipher = crypto.createDecipher("aes256", secret);
try { var data = [
data = [
cipher.update(encrypted, "base64", "ascii"), cipher.update(encrypted, "base64", "ascii"),
cipher.final("ascii") cipher.final("ascii")
]; ];
}
catch (err) { /** ignore failed decrypt **/ } return data.join("").replace(/\=+$/, "");
if (data) return data.join("").replace(/\=+$/, "");
}
}; };
exports.uid = function(length) { exports.uid = function(length) {

46
node_modules/c9/crypt_test.js wygenerowano vendored
Wyświetl plik

@ -1,13 +1,15 @@
"use strict"; "use strict";
"use server";
require("c9/inline-mocha")(module); "use server";
var assert = require("assert"); var assert = require("assert");
var crypt = require("./crypt"); var crypt = require("./crypt");
describe("c9/crypt", function() { module.exports = {
it("encrpyt and decrypt should return input", function() {
name: "cookie crypt",
"test encrpyt and decrypt should return input" : function() {
var sessionId = "vOcRVvhaBBauiYexVvWyJpPb.AqmabaXkhpmlR8AUkORJHu%2FB7WA57EsDqzled0VoKAg"; var sessionId = "vOcRVvhaBBauiYexVvWyJpPb.AqmabaXkhpmlR8AUkORJHu%2FB7WA57EsDqzled0VoKAg";
var secret = "geheim"; var secret = "geheim";
@ -17,37 +19,7 @@ describe("c9/crypt", function() {
crypt.decrypt(crypt.crypt(sessionId, secret), secret), crypt.decrypt(crypt.crypt(sessionId, secret), secret),
sessionId sessionId
); );
}); }
};
!module.parent && require("asyncjs").test.testcase(module.exports).exec();
it("Should accept an array for decrypt", function() {
var message = Math.random().toString(36);
var secret = "swordfish";
var crypted = crypt.crypt(message, secret);
var plaintext = crypt.decrypt(crypted, [Math.random().toString(36), Math.random().toString(36), secret]);
assert.equal(plaintext, message, "Got message back");
});
it("Should accept an array for crypt", function() {
var message = Math.random().toString(36);
var secret = ["letmein", "swordfish"];
var crypted = crypt.crypt(message, secret);
var plaintext = crypt.decrypt(crypted, secret);
assert.equal(plaintext, message, "Got message back");
});
it("Should prefer the #1st secret", function() {
var message = Math.random().toString(36);
var secret = ["letmein", "swordfish", "princess"];
var crypted = crypt.crypt(message, secret);
assert.ok(!crypt.decrypt(crypted, secret[0]), "String was not encrypted with the #1st secret");
assert.ok(!crypt.decrypt(crypted, secret[2]), "String was not encrypted with the #3rd secret");
assert.equal(crypt.decrypt(crypted, secret[1]), message, "Got message back");
});
});