2017-11-15 10:54:12 +08:00
|
|
|
"use strict";
|
|
|
|
|
2017-11-10 12:25:23 +08:00
|
|
|
const utils = require('./utils');
|
2017-11-30 12:30:35 +08:00
|
|
|
const session = {};
|
2017-11-10 12:25:23 +08:00
|
|
|
|
|
|
|
function setDataKey(req, decryptedDataKey) {
|
2017-11-30 12:30:35 +08:00
|
|
|
session.decryptedDataKey = Array.from(decryptedDataKey); // can't store buffer in session
|
|
|
|
session.protectedSessionId = utils.randomSecureToken(32);
|
2017-11-10 12:25:23 +08:00
|
|
|
|
2017-11-30 12:30:35 +08:00
|
|
|
return session.protectedSessionId;
|
2017-11-10 12:25:23 +08:00
|
|
|
}
|
|
|
|
|
2017-11-15 10:54:12 +08:00
|
|
|
function getProtectedSessionId(req) {
|
|
|
|
return req.headers['x-protected-session-id'];
|
|
|
|
}
|
|
|
|
|
2017-11-11 11:55:19 +08:00
|
|
|
function getDataKey(req) {
|
2017-11-15 10:54:12 +08:00
|
|
|
const protectedSessionId = getProtectedSessionId(req);
|
2017-11-11 11:55:19 +08:00
|
|
|
|
2017-11-30 12:30:35 +08:00
|
|
|
if (protectedSessionId && session.protectedSessionId === protectedSessionId) {
|
|
|
|
return session.decryptedDataKey;
|
2017-11-10 12:25:23 +08:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-11-15 10:54:12 +08:00
|
|
|
function isProtectedSessionAvailable(req) {
|
|
|
|
const protectedSessionId = getProtectedSessionId(req);
|
|
|
|
|
2017-11-30 12:30:35 +08:00
|
|
|
return protectedSessionId && session.protectedSessionId === protectedSessionId;
|
2017-11-15 10:54:12 +08:00
|
|
|
}
|
|
|
|
|
2017-11-10 12:25:23 +08:00
|
|
|
module.exports = {
|
|
|
|
setDataKey,
|
2017-11-15 10:54:12 +08:00
|
|
|
getDataKey,
|
|
|
|
isProtectedSessionAvailable
|
2017-11-10 12:25:23 +08:00
|
|
|
};
|