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