You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											11 years ago
										 | /* vim: ts=4:sw=4 | ||
|  |  * | ||
|  |  * This program is free software: you can redistribute it and/or modify | ||
|  |  * it under the terms of the GNU Lesser General Public License as published by | ||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||
|  |  * (at your option) any later version. | ||
|  |  * | ||
|  |  * This program is distributed in the hope that it will be useful, | ||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||
|  |  * GNU Lesser General Public License for more details. | ||
|  |  * | ||
|  |  * You should have received a copy of the GNU Lesser General Public License | ||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||
|  |  */ | ||
|  | 
 | ||
|  | 'use strict'; | ||
|  | 
 | ||
|  | /* | ||
|  | *  Load this script in a Web Worker to generate new prekeys without | ||
|  | *  tying up the main thread. | ||
|  | *  https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API
 | ||
|  | * | ||
|  | *  Because workers don't have access to the window or localStorage, we | ||
|  | *  create our own version that proxies back to the caller for actual | ||
|  | *  storage. | ||
|  | * | ||
|  | *  Example usage: | ||
|  | * | ||
|  |     var myWorker = new Worker('/js/key_worker.js'); | ||
|  |     myWorker.onmessage = function(e) { | ||
|  |         switch(e.data.method) { | ||
|  |             case 'set': | ||
|  |                 localStorage.setItem(e.data.key, e.data.value); | ||
|  |                 break; | ||
|  |             case 'remove': | ||
|  |                 localStorage.removeItem(e.data.key); | ||
|  |                 break; | ||
|  |             case 'done': | ||
|  |                 console.log(e.data.keys); | ||
|  |         } | ||
|  |     }; | ||
|  | */ | ||
|  | var store = {}; | ||
|  | window.textsecure.storage.impl = { | ||
|  |     /***************************** | ||
|  |     *** Override Storage Routines *** | ||
|  |     *****************************/ | ||
|  |     put: function(key, value) { | ||
|  |         if (value === undefined) | ||
|  |             throw new Error("Tried to store undefined"); | ||
|  |         store[key] = value; | ||
|  |         postMessage({method: 'set', key: key, value: value}); | ||
|  |     }, | ||
|  | 
 | ||
|  |     get: function(key, defaultValue) { | ||
|  |         if (key in store) { | ||
|  |             return store[key]; | ||
|  |         } else { | ||
|  |             return defaultValue; | ||
|  |         } | ||
|  |     }, | ||
|  | 
 | ||
|  |     remove: function(key) { | ||
|  |         delete store[key]; | ||
|  |         postMessage({method: 'remove', key: key}); | ||
|  |     }, | ||
|  | }; | ||
|  | onmessage = function(e) { | ||
|  |     store = e.data; | ||
|  |     textsecure.protocol_wrapper.generateKeys().then(function(keys) { | ||
|  |         postMessage({method: 'done', keys: keys}); | ||
|  |         close(); | ||
|  |     }); | ||
|  | } |