added check to see if browser is gcm compliant

This commit is contained in:
Abhinav Adduri 2017-07-10 13:27:01 -07:00
parent 2031158336
commit 64998de423
3 changed files with 55 additions and 2 deletions

View file

@ -1,10 +1,18 @@
const FileSender = require('./fileSender');
const { notify } = require('./utils');
const { notify, gcmCompliant } = require('./utils');
const $ = require('jquery');
const Raven = window.Raven;
$(document).ready(function() {
// added as a print statement for now, eventually move init stuff
// into here and display an error page if it's not compliant
gcmCompliant().catch(err => {
$('#page-one').hide();
$('#compliance-error').show();
})
// reset copy button
const $copyBtn = $('#copy-btn');
$copyBtn.attr('disabled', false);
@ -15,6 +23,7 @@ $(document).ready(function() {
$('#upload-progress').hide();
$('#share-link').hide();
$('#upload-error').hide();
$('#compliance-error').hide();
if (localStorage.length === 0) {
toggleHeader();

View file

@ -32,8 +32,42 @@ function notify(str) {
}
}
function gcmCompliant() {
try {
return window.crypto.subtle.generateKey(
{
name: 'AES-GCM',
length: 128
},
true,
['encrypt', 'decrypt']
).then(key => {
return window.crypto.subtle.encrypt(
{
name: 'AES-GCM',
iv: window.crypto.getRandomValues(new Uint8Array(12)),
additionalData: window.crypto.getRandomValues(new Uint8Array(6))
},
key,
new ArrayBuffer(8)
)
.then(() => {
return Promise.resolve()
})
.catch(err => {
return Promise.reject()
})
}).catch(err => {
return Promise.reject();
})
} catch(err) {
return Promise.reject();
}
}
module.exports = {
arrayToHex,
hexToArray,
notify
notify,
gcmCompliant
};

View file

@ -100,6 +100,16 @@
</div>
</div>
<div id="compliance-error">
<div class="title">
Encryption error<br>
Your browser does not support gcm encryption.
</div>
<div class="send-new">
Send another file
</div>
</div>
</div>
</body>