changeset 941:fb2309dfa598

CertWarningPane SecurityDelegate reference Passing a reference to SecurityDelegate to CertWarningPane, so that UI elements can be added later to allow the applet to be run Sandboxed + some temporary permissions * netx/net/sourceforge/jnlp/security/JNLPAppVerifier.java: (checkTrustWithUser) pass SecurityDelegate reference to SecurityDialogs.showCertWarningDialog * netx/net/sourceforge/jnlp/security/PluginAppVerifier.java: same * netx/net/sourceforge/jnlp/security/SecurityDialog.java: pass SecurityDelegate reference from extras into CertWarningPane constructor * netx/net/sourceforge/jnlp/security/SecurityDialogs.java: (showCertWarningDialog) added SecurityDelegate parameter, add to extras array. * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java: (askUser) pass null for SecurityDelegate reference * netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java: (CertWarningPane) added SecurityDelegate constructor parameter and (securityDelegate) field
author Andrew Azores <aazores@redhat.com>
date Thu, 20 Mar 2014 15:23:33 -0400
parents 674128ef4394
children 022f56ff692f
files ChangeLog netx/net/sourceforge/jnlp/security/JNLPAppVerifier.java netx/net/sourceforge/jnlp/security/PluginAppVerifier.java netx/net/sourceforge/jnlp/security/SecurityDialog.java netx/net/sourceforge/jnlp/security/SecurityDialogs.java netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java
diffstat 7 files changed, 33 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Mar 20 15:20:58 2014 -0400
+++ b/ChangeLog	Thu Mar 20 15:23:33 2014 -0400
@@ -1,5 +1,24 @@
 2014-03-20  Andrew Azores  <aazores@redhat.com>
 
+	Passing a reference to SecurityDelegate to CertWarningPane, so that UI
+	elements can be added later to allow the applet to be run Sandboxed + some
+	temporary permissions
+	* netx/net/sourceforge/jnlp/security/JNLPAppVerifier.java: (checkTrustWithUser)
+	pass SecurityDelegate reference to SecurityDialogs.showCertWarningDialog
+	* netx/net/sourceforge/jnlp/security/PluginAppVerifier.java: same
+	* netx/net/sourceforge/jnlp/security/SecurityDialog.java: pass SecurityDelegate
+	reference from extras into CertWarningPane constructor
+	* netx/net/sourceforge/jnlp/security/SecurityDialogs.java: (showCertWarningDialog)
+	added SecurityDelegate parameter, add to extras array.
+	* netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java: (askUser)
+	pass null for SecurityDelegate reference
+	* netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java: (CertWarningPane)
+	added SecurityDelegate constructor parameter and (securityDelegate) field 
+
+2014-03-20  Andrew Azores  <aazores@redhat.com>
+
+	SecurityDelegate can be used to add permissions to JNLPClassLoader during
+	run. This is useful for adding temporary extra permissions to an applet.
 	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (SecurityDelegate
 	addPermission, addPermissions) new methods. (SecurityDelegateImpl addPermission,
 	addPermissions) implement previous.
--- a/netx/net/sourceforge/jnlp/security/JNLPAppVerifier.java	Thu Mar 20 15:20:58 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/JNLPAppVerifier.java	Thu Mar 20 15:23:33 2014 -0400
@@ -121,7 +121,7 @@
                 }
 
                 AppletAction action = SecurityDialogs.showCertWarningDialog(
-                        dialogType, file, jcv);
+                        dialogType, file, jcv, securityDelegate);
                 if (action != AppletAction.CANCEL) {
                     if (action == AppletAction.SANDBOX) {
                         securityDelegate.setRunInSandbox();
--- a/netx/net/sourceforge/jnlp/security/PluginAppVerifier.java	Thu Mar 20 15:20:58 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/PluginAppVerifier.java	Thu Mar 20 15:23:33 2014 -0400
@@ -168,7 +168,7 @@
                     }
 
                     AppletAction action = SecurityDialogs.showCertWarningDialog(
-                            dialogType, file, jcv);
+                            dialogType, file, jcv, securityDelegate);
                     if (action != AppletAction.CANCEL) {
                         if (action == AppletAction.SANDBOX) {
                             securityDelegate.setRunInSandbox();
--- a/netx/net/sourceforge/jnlp/security/SecurityDialog.java	Thu Mar 20 15:20:58 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialog.java	Thu Mar 20 15:23:33 2014 -0400
@@ -48,6 +48,7 @@
 import javax.swing.JDialog;
 
 import net.sourceforge.jnlp.JNLPFile;
+import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate;
 import net.sourceforge.jnlp.security.SecurityDialogs.AccessType;
 import net.sourceforge.jnlp.security.SecurityDialogs.DialogType;
 import net.sourceforge.jnlp.security.dialogs.AccessWarningPane;
@@ -302,7 +303,7 @@
     private void installPanel() {
 
         if (dialogType == DialogType.CERT_WARNING)
-            panel = new CertWarningPane(this, this.certVerifier);
+            panel = new CertWarningPane(this, this.certVerifier, (SecurityDelegate) extras[0]);
         else if (dialogType == DialogType.MORE_INFO)
             panel = new MoreInfoPane(this, this.certVerifier);
         else if (dialogType == DialogType.CERT_INFO)
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogs.java	Thu Mar 20 15:20:58 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialogs.java	Thu Mar 20 15:23:33 2014 -0400
@@ -52,10 +52,11 @@
 
 import net.sourceforge.jnlp.JNLPFile;
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
+import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate;
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
+import net.sourceforge.jnlp.security.appletextendedsecurity.ExecuteAppletAction;
+import net.sourceforge.jnlp.security.dialogs.apptrustwarningpanel.AppTrustWarningPanel.AppSigningWarningAction;
 import net.sourceforge.jnlp.util.UrlUtils;
-import net.sourceforge.jnlp.security.dialogs.apptrustwarningpanel.AppTrustWarningPanel.AppSigningWarningAction;
-import net.sourceforge.jnlp.security.appletextendedsecurity.ExecuteAppletAction;
 
 /**
  * <p>
@@ -197,7 +198,7 @@
      * user did not accept running the applet
      */
     public static AppletAction showCertWarningDialog(AccessType accessType,
-            JNLPFile file, CertVerifier certVerifier) {
+            JNLPFile file, CertVerifier certVerifier, SecurityDelegate securityDelegate) {
 
         if (!shouldPromptUser()) {
             return AppletAction.CANCEL;
@@ -208,6 +209,7 @@
         message.accessType = accessType;
         message.file = file;
         message.certVerifier = certVerifier;
+        message.extras = new Object[] { securityDelegate };
 
         Object selectedValue = getUserResponse(message);
 
--- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java	Thu Mar 20 15:20:58 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java	Thu Mar 20 15:23:33 2014 -0400
@@ -425,7 +425,7 @@
                         AccessType.UNVERIFIED, null,
                         new HttpsCertVerifier(chain, authType,
                                               isTrusted, hostMatched,
-                                hostName)) == AppletAction.RUN;
+                                hostName), null) == AppletAction.RUN;
             }
         });
     }
--- a/netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java	Thu Mar 20 15:20:58 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java	Thu Mar 20 15:23:33 2014 -0400
@@ -65,6 +65,7 @@
 
 import net.sourceforge.jnlp.JNLPFile;
 import net.sourceforge.jnlp.PluginBridge;
+import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate;
 import net.sourceforge.jnlp.security.CertVerifier;
 import net.sourceforge.jnlp.security.CertificateUtils;
 import net.sourceforge.jnlp.security.HttpsCertVerifier;
@@ -89,10 +90,12 @@
 
     JCheckBox alwaysTrust;
     CertVerifier certVerifier;
+    SecurityDelegate securityDelegate;
 
-    public CertWarningPane(SecurityDialog x, CertVerifier certVerifier) {
+    public CertWarningPane(SecurityDialog x, CertVerifier certVerifier, SecurityDelegate securityDelegate) {
         super(x, certVerifier);
         this.certVerifier = certVerifier;
+        this.securityDelegate = securityDelegate;
         addComponents();
     }