mirror of
https://github.com/haiwen/seahub.git
synced 2025-07-07 04:00:06 +00:00
* repo create: myhome, pubrepo, group * handled 'is_password_set' etc. * view-online is not offered for file in enc repo in 'passwd local' mode * removed 'open local file' * added 'v2 tip' in seafile_access_check page
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
importScripts('CryptoJS/rollups/aes.js');
|
|
importScripts('CryptoJS/rollups/sha1.js');
|
|
importScripts('CryptoJS/components/lib-typedarrays-min.js');
|
|
|
|
self.onmessage = function (e) {
|
|
if (e.data.encrypt) {
|
|
encrypt(e);
|
|
} else {
|
|
decrypt(e);
|
|
}
|
|
}
|
|
|
|
function encrypt(e) {
|
|
var encrypted = {index: e.data.index};
|
|
var fReader = new FileReaderSync();
|
|
var block = fReader.readAsArrayBuffer(e.data.block),
|
|
key = e.data.key,
|
|
iv = e.data.iv;
|
|
|
|
try {
|
|
var enc_obj = CryptoJS.AES.encrypt(CryptoJS.lib.WordArray.create(block), CryptoJS.enc.Hex.parse(key), {iv: CryptoJS.enc.Hex.parse(iv)});
|
|
encrypted.block = enc_obj.ciphertext;
|
|
encrypted.block_id = CryptoJS.SHA1(enc_obj.ciphertext).toString(CryptoJS.enc.Hex);
|
|
postMessage(encrypted);
|
|
} catch (e){
|
|
postMessage("Error");
|
|
}
|
|
}
|
|
|
|
function decrypt(e) {
|
|
var decrypted = {index: e.data.index};
|
|
var block = e.data.block,
|
|
key = e.data.key,
|
|
iv = e.data.iv;
|
|
|
|
try {
|
|
var d_block = CryptoJS.AES.decrypt(CryptoJS.lib.WordArray.create(block).toString(CryptoJS.enc.Base64), CryptoJS.enc.Hex.parse(key), {iv: CryptoJS.enc.Hex.parse(iv)});
|
|
decrypted.block = d_block;
|
|
postMessage(decrypted);
|
|
} catch (e){
|
|
postMessage("Error");
|
|
}
|
|
}
|