Fix: use worker for CFB w/ webcrypto support

This commit is contained in:
Tankred Hase 2016-03-24 13:24:18 +08:00
parent c8569e0cd5
commit f4fc274f14
2 changed files with 12 additions and 3 deletions

View File

@ -158,7 +158,7 @@ export function decryptKey({ privateKey, passphrase }) {
export function encrypt({ data, publicKeys, privateKeys, passwords, filename, armor=true }) {
checkData(data); publicKeys = toArray(publicKeys); privateKeys = toArray(privateKeys); passwords = toArray(passwords);
if (!util.getWebCrypto() && asyncProxy) { // use web worker if web crypto apis are not supported
if (!useAEAD() && asyncProxy) { // use web worker if web crypto apis are not supported
return asyncProxy.delegate('encrypt', { data, publicKeys, privateKeys, passwords, filename, armor });
}
@ -200,7 +200,7 @@ export function encrypt({ data, publicKeys, privateKeys, passwords, filename, ar
export function decrypt({ message, privateKey, publicKeys, sessionKey, password, format='utf8' }) {
checkMessage(message); publicKeys = toArray(publicKeys);
if (!util.getWebCrypto() && asyncProxy) { // use web worker if web crypto apis are not supported
if (!useAEAD() && asyncProxy) { // use web worker if web crypto apis are not supported
return asyncProxy.delegate('decrypt', { message, privateKey, publicKeys, sessionKey, password, format });
}
@ -473,3 +473,12 @@ function onError(message, error) {
// rethrow new high level error for api users
throw new Error(message + ': ' + error.message);
}
/**
* Check for AES-GCM support and configuration by the user. Note that only browsers that
* implement the current WebCrypto specification support AES-GCM.
* @return {Boolean} If authenticated encryption should be used
*/
function useAEAD() {
return util.getWebCrypto() && config.aead_protect;
}

View File

@ -450,7 +450,7 @@ export default {
},
/**
* Get native Web Cryptography api, only the current versioon of the spec.
* Get native Web Cryptography api, only the current version of the spec.
* The default configuration is to use the api when available. But it can
* be deactivated with config.useNative
* @return {Object} The SubtleCrypto api or 'undefined'