diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 2e4d5cbb..b62a258f 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -180,13 +180,30 @@ def ensureValueExists(filePath, props, key) { def addSigningProps(propsFilePath, signingConfig) { def propsFile = file(propsFilePath) + def props = new Properties() propsFile.withReader { reader -> - def props = new Properties() props.load(reader) - signingConfig.keyAlias = ensureValueExists(propsFilePath, props, 'keyAlias') - signingConfig.keyPassword = props.get('keyPassword') - signingConfig.storeFile = RelativePath.parse(true, ensureValueExists(propsFilePath, props, 'storeFile')).getFile(propsFile.getParentFile()) - signingConfig.storePassword = props.get('storePassword') + } + def storeFile = new File(ensureValueExists(propsFilePath, props, 'storeFile')) + if (!storeFile.isAbsolute()) { + storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile()) + } + if (!storeFile.exists()) { + throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath()) + } + signingConfig.keyAlias = ensureValueExists(propsFilePath, props, 'keyAlias') + signingConfig.keyPassword = props.get('keyPassword') + signingConfig.storeFile = storeFile + signingConfig.storePassword = props.get('storePassword') + def storeType = props.get('storeType') + if (!storeType) { + def filename = storeFile.getName().toLowerCase(); + if (filename.endsWith('.p12') || filename.endsWith('.pfx')) { + storeType = 'pkcs12' + } + } + if (storeType) { + signingConfig.storeType = storeType } } diff --git a/framework/src/org/apache/cordova/CordovaBridge.java b/framework/src/org/apache/cordova/CordovaBridge.java index 081127d5..c3f10f3b 100644 --- a/framework/src/org/apache/cordova/CordovaBridge.java +++ b/framework/src/org/apache/cordova/CordovaBridge.java @@ -18,6 +18,8 @@ */ package org.apache.cordova; +import java.security.SecureRandom; + import org.apache.cordova.PluginManager; import org.json.JSONArray; import org.json.JSONException; @@ -107,7 +109,8 @@ public class CordovaBridge { /** Called by cordova.js to initialize the bridge. */ int generateBridgeSecret() { - expectedBridgeSecret = (int)(Math.random() * Integer.MAX_VALUE); + SecureRandom randGen = new SecureRandom(); + expectedBridgeSecret = randGen.nextInt(Integer.MAX_VALUE); return expectedBridgeSecret; }