| 
									
										
										
										
											2017-10-21 21:10:33 -04:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 23:31:44 -04:00
										 |  |  | const sql = require('./sql'); | 
					
						
							|  |  |  | const scrypt = require('scrypt'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function getVerificationHash(password) { | 
					
						
							|  |  |  |     const salt = await sql.getOption('password_verification_salt'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return getScryptHash(password, salt); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function getPasswordDerivedKey(password) { | 
					
						
							|  |  |  |     const salt = await sql.getOption('password_derived_key_salt'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return getScryptHash(password, salt); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function getScryptHash(password, salt) { | 
					
						
							|  |  |  |     const hashed = scrypt.hashSync(password, | 
					
						
							|  |  |  |         {N: 16384, r:8, p:1}, | 
					
						
							|  |  |  |         32, | 
					
						
							|  |  |  |         salt); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return hashed; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							|  |  |  |     getVerificationHash, | 
					
						
							|  |  |  |     getPasswordDerivedKey | 
					
						
							|  |  |  | }; |