added check to see if browser is gcm compliant
This commit is contained in:
parent
2031158336
commit
64998de423
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue