mirror of
https://gitlab.com/timvisee/send.git
synced 2025-12-07 22:50:53 +03:00
updated filelist storage so userid is not used directly
This commit is contained in:
@@ -371,9 +371,9 @@ export function downloadFile(id, keychain, onprogress) {
|
||||
};
|
||||
}
|
||||
|
||||
export async function getFileList(bearerToken) {
|
||||
export async function getFileList(bearerToken, kid) {
|
||||
const headers = new Headers({ Authorization: `Bearer ${bearerToken}` });
|
||||
const response = await fetch(getApiUrl('/api/filelist'), { headers });
|
||||
const response = await fetch(getApiUrl(`/api/filelist/${kid}`), { headers });
|
||||
if (response.ok) {
|
||||
const encrypted = await response.blob();
|
||||
return encrypted;
|
||||
@@ -381,9 +381,9 @@ export async function getFileList(bearerToken) {
|
||||
throw new Error(response.status);
|
||||
}
|
||||
|
||||
export async function setFileList(bearerToken, data) {
|
||||
export async function setFileList(bearerToken, kid, data) {
|
||||
const headers = new Headers({ Authorization: `Bearer ${bearerToken}` });
|
||||
const response = await fetch(getApiUrl('/api/filelist'), {
|
||||
const response = await fetch(getApiUrl(`/api/filelist/${kid}`), {
|
||||
headers,
|
||||
method: 'POST',
|
||||
body: data
|
||||
|
||||
11
app/user.js
11
app/user.js
@@ -159,10 +159,13 @@ export default class User {
|
||||
return this.storage.merge();
|
||||
}
|
||||
let list = [];
|
||||
const key = b64ToArray(this.info.fileListKey);
|
||||
const sha = await crypto.subtle.digest('SHA-256', key);
|
||||
const kid = arrayToB64(new Uint8Array(sha)).substring(0, 16);
|
||||
try {
|
||||
const encrypted = await getFileList(this.bearerToken);
|
||||
const encrypted = await getFileList(this.bearerToken, kid);
|
||||
const decrypted = await streamToArrayBuffer(
|
||||
decryptStream(blobStream(encrypted), b64ToArray(this.info.fileListKey))
|
||||
decryptStream(blobStream(encrypted), key)
|
||||
);
|
||||
list = JSON.parse(textDecoder.decode(decrypted));
|
||||
} catch (e) {
|
||||
@@ -180,9 +183,9 @@ export default class User {
|
||||
textEncoder.encode(JSON.stringify(this.storage.files))
|
||||
]);
|
||||
const encrypted = await streamToArrayBuffer(
|
||||
encryptStream(blobStream(blob), b64ToArray(this.info.fileListKey))
|
||||
encryptStream(blobStream(blob), key)
|
||||
);
|
||||
await setFileList(this.bearerToken, encrypted);
|
||||
await setFileList(this.bearerToken, kid, encrypted);
|
||||
} catch (e) {
|
||||
//
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user