fixed password ui

This commit is contained in:
Danny Coates 2017-12-05 19:41:37 -08:00
parent 7cc94f6829
commit 459499d5f5
No known key found for this signature in database
GPG Key ID: 4C442633C62E00CB
2 changed files with 21 additions and 15 deletions

View File

@ -127,7 +127,9 @@ export default class FileReceiver extends Nanobus {
if (xhr.status === 200) {
return resolve(xhr.response);
}
reject(new Error(xhr.status));
const err = new Error(xhr.status);
err.nonce = nonce;
reject(err);
}
};
xhr.onerror = () => reject(new Error(0));
@ -146,9 +148,11 @@ export default class FileReceiver extends Nanobus {
try {
data = await this.fetchMetadata(nonce);
} catch (e) {
if (e.message === '401') {
if (e.message === '401' && nonce !== e.nonce) {
// allow one retry for changed nonce
data = await this.fetchMetadata(e.nonce);
} else {
throw e;
}
}
const metaKey = await this.metaKeyPromise;
@ -235,8 +239,10 @@ export default class FileReceiver extends Nanobus {
try {
ciphertext = await this.downloadFile(nonce);
} catch (e) {
if (e.message === '401') {
if (e.message === '401' && nonce !== e.nonce) {
ciphertext = await this.downloadFile(e.nonce);
} else {
throw e;
}
}
this.msg = 'decryptingFile';

View File

@ -1,6 +1,17 @@
import Nanobus from 'nanobus';
import { arrayToB64, b64ToArray, bytes } from './utils';
async function getAuthHeader(authKey, nonce) {
const sig = await window.crypto.subtle.sign(
{
name: 'HMAC'
},
authKey,
b64ToArray(nonce)
);
return `send-v1 ${arrayToB64(new Uint8Array(sig))}`;
}
export default class FileSender extends Nanobus {
constructor(file) {
super('FileSender');
@ -224,17 +235,6 @@ export default class FileSender extends Nanobus {
return this.uploadFile(encrypted, metadata, new Uint8Array(rawAuth));
}
async getAuthHeader(authKey, nonce) {
const sig = await window.crypto.subtle.sign(
{
name: 'HMAC'
},
authKey,
b64ToArray(nonce)
);
return `send-v1 ${arrayToB64(new Uint8Array(sig))}`;
}
static async setPassword(password, file) {
const encoder = new TextEncoder();
const secretKey = await window.crypto.subtle.importKey(
@ -259,7 +259,7 @@ export default class FileSender extends Nanobus {
true,
['sign']
);
const authHeader = await this.getAuthHeader(authKey, file.nonce);
const authHeader = await getAuthHeader(authKey, file.nonce);
const pwdKey = await window.crypto.subtle.importKey(
'raw',
encoder.encode(password),