diff --git a/app/assets/javascripts/app/app.frontend.js b/app/assets/javascripts/app/app.frontend.js index 901287ace..bd2995417 100644 --- a/app/assets/javascripts/app/app.frontend.js +++ b/app/assets/javascripts/app/app.frontend.js @@ -2,11 +2,17 @@ var Neeto = Neeto || {}; -if(window.crypto && window.crypto.subtle) { +// detect IE8 and above, and edge. +// IE and Edge do not support pbkdf2 in WebCrypto, therefore we need to use CryptoJS +var IEOrEdge = document.documentMode || /Edge/.test(navigator.userAgent); + +if(!IEOrEdge && (window.crypto && window.crypto.subtle)) { + console.log("Using webcrypto"); Neeto.crypto = new SNCryptoWeb(); } else { - Neeto.crypto = new SNCryptoJS(); + console.log("Using CryptoJS"); } +Neeto.crypto = new SNCryptoJS(); angular.module('app.frontend', [ 'ui.router', diff --git a/app/assets/javascripts/app/services/apiController.js b/app/assets/javascripts/app/services/apiController.js index 23c198ed6..7a1843512 100644 --- a/app/assets/javascripts/app/services/apiController.js +++ b/app/assets/javascripts/app/services/apiController.js @@ -90,7 +90,7 @@ angular.module('app.frontend') // if user has high password cost and is using browser that doesn't support WebCrypto, // we want to tell them that they can't login with this browser. if(cost > 5000) { - return (window.crypto && window.crypto.subtle) ? true : false; + return Neeto.crypto instanceof SNCryptoWeb ? true : false; } else { return true; }