From 0e1e4a6f6f3a8f227dae91337e2a63c535ad9961 Mon Sep 17 00:00:00 2001 From: Khalid Awwad Date: Sun, 4 Dec 2016 07:43:11 +0200 Subject: [PATCH] Add set secret key api Signed-off-by: Khalid Awwad --- src/android/CordovaAdalPlugin.java | 16 ++++++++++++++++ www/AuthenticationSettings.js | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/android/CordovaAdalPlugin.java b/src/android/CordovaAdalPlugin.java index 4158c02..4864fb7 100644 --- a/src/android/CordovaAdalPlugin.java +++ b/src/android/CordovaAdalPlugin.java @@ -132,6 +132,9 @@ public boolean execute(String action, JSONArray args, final CallbackContext call boolean useBroker = args.getBoolean(0); return setUseBroker(useBroker); + } else if (action.equals("setSecretKey")) { + String key = args.getString(0); + return setSecretKey(key); } return false; @@ -276,6 +279,19 @@ private boolean setUseBroker(boolean useBroker) { return true; } + private boolean setSecretKey(String key) { + try { + SecretKey secretKey = this.createSecretKey(key); + AuthenticationSettings.INSTANCE.setSecretKey(secretKey.getEncoded()); + callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK)); + } catch (Exception e) { + Log.w("CordovaAdalPlugin", "Unable to create secret: " + e.getMessage()); + callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, e.getMessage())); + } + + return true; + } + private void requestBrokerPermissions() { // USE_CREDENTIALS and MANAGE_ACOUNTS are deprecated and not required diff --git a/www/AuthenticationSettings.js b/www/AuthenticationSettings.js index 0b826cd..30ced72 100644 --- a/www/AuthenticationSettings.js +++ b/www/AuthenticationSettings.js @@ -22,5 +22,21 @@ module.exports = { checkArgs('*', 'AuthenticationSettings.setUseBroker', arguments); return bridge.executeNativeMethod('setUseBroker', [!!useBroker]); + }, + + + /** + * Sets flag to use or skip authentication broker. + * By default, the secret key is generated inside the library + * + * @param {String} key Key to use to generate encryption bytes + * + * @returns {Promise} Promise either fulfilled or rejected with error + */ + setSecretKey: function(secretKey) { + + checkArgs('*', 'AuthenticationSettings.setSecretKey', arguments); + + return bridge.executeNativeMethod('setSecretKey', [secretKey]); } }