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 FileSender = require('./fileSender');
const { notify } = require('./utils'); const { notify, gcmCompliant } = require('./utils');
const $ = require('jquery'); const $ = require('jquery');
const Raven = window.Raven; const Raven = window.Raven;
$(document).ready(function() { $(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 // reset copy button
const $copyBtn = $('#copy-btn'); const $copyBtn = $('#copy-btn');
$copyBtn.attr('disabled', false); $copyBtn.attr('disabled', false);
@ -15,6 +23,7 @@ $(document).ready(function() {
$('#upload-progress').hide(); $('#upload-progress').hide();
$('#share-link').hide(); $('#share-link').hide();
$('#upload-error').hide(); $('#upload-error').hide();
$('#compliance-error').hide();
if (localStorage.length === 0) { if (localStorage.length === 0) {
toggleHeader(); 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 = { module.exports = {
arrayToHex, arrayToHex,
hexToArray, hexToArray,
notify notify,
gcmCompliant
}; };

View File

@ -100,6 +100,16 @@
</div> </div>
</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> </div>
</body> </body>