diff options
author | Omair Majid <[email protected]> | 2011-02-28 13:40:12 -0500 |
---|---|---|
committer | Omair Majid <[email protected]> | 2011-02-28 13:40:12 -0500 |
commit | 05dd25bd43df11fc874d857ced49bbe3c6e72a74 (patch) | |
tree | d8c54c16a4769b0861741e5960c694490d150526 /netx/net/sourceforge/jnlp/security/SecurityWarning.java | |
parent | 07456720398f6e19a68e500493f731ae46a8303a (diff) |
Rename security warning classes to security dialog classes.
Some of the security dialogs that are shown are not warning dialogs.
2011-02-28 Omair Majid <[email protected]>
Rename files
* netx/net/sourceforge/jnlp/security/PasswordAuthenticationDialog.java:
Rename to ...
* netx/net/sourceforge/jnlp/security/PasswordAuthenticationPane.java: New
file.
* netx/net/sourceforge/jnlp/security/SecurityWarningDialog.java: Rename
to...
* netx/net/sourceforge/jnlp/security/SecurityDialog.java: New file.
* netx/net/sourceforge/jnlp/security/SecurityWarning.java: Rename to...
* netx/net/sourceforge/jnlp/security/SecurityDialogs.java: New file.
* netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java,
* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java,
* netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java,
* netx/net/sourceforge/jnlp/security/AccessWarningPane.java,
* netx/net/sourceforge/jnlp/security/AppletWarningPane.java,
* netx/net/sourceforge/jnlp/security/CertWarningPane.java,
* netx/net/sourceforge/jnlp/security/CertsInfoPane.java,
* netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java,
* netx/net/sourceforge/jnlp/security/MoreInfoPane.java,
* netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java,
* netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java,
* netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java,
* netx/net/sourceforge/jnlp/security/SecurityDialogPanel.java,
* netx/net/sourceforge/jnlp/security/SingleCertInfoPane.java,
* netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java,
* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java,
* netx/net/sourceforge/jnlp/services/ServiceUtil.java,
* netx/net/sourceforge/jnlp/services/XClipboardService.java,
* netx/net/sourceforge/jnlp/services/XExtendedService.java,
* netx/net/sourceforge/jnlp/services/XFileOpenService.java,
* netx/net/sourceforge/jnlp/services/XFileSaveService.java: Update class
names to the new classes.
Diffstat (limited to 'netx/net/sourceforge/jnlp/security/SecurityWarning.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/security/SecurityWarning.java | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/netx/net/sourceforge/jnlp/security/SecurityWarning.java b/netx/net/sourceforge/jnlp/security/SecurityWarning.java deleted file mode 100644 index f3d6dfb..0000000 --- a/netx/net/sourceforge/jnlp/security/SecurityWarning.java +++ /dev/null @@ -1,331 +0,0 @@ -/* SecurityWarningDialogFactory.java - Copyright (C) 2010 Red Hat, Inc. - -This file is part of IcedTea. - -IcedTea is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 2. - -IcedTea is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with IcedTea; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA. - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. -*/ - -package net.sourceforge.jnlp.security; - -import java.awt.Dialog.ModalityType; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.concurrent.Semaphore; - -import javax.swing.JDialog; -import javax.swing.SwingUtilities; - -import net.sourceforge.jnlp.JNLPFile; -import net.sourceforge.jnlp.config.DeploymentConfiguration; -import net.sourceforge.jnlp.runtime.JNLPRuntime; - -/** - * A factory for showing many possible types of security warning to the user.<p> - * - * This contains all the public methods that classes outside this package should - * use instead of using {@link SecurityWarningDialog} directly. - * - * All of these methods post a message to the - * {@link SecurityDialogMessageHandler} and block waiting for a response. - */ -public class SecurityWarning { - /** Types of dialogs we can create */ - public static enum DialogType { - CERT_WARNING, - MORE_INFO, - CERT_INFO, - SINGLE_CERT_INFO, - ACCESS_WARNING, - NOTALLSIGNED_WARNING, - APPLET_WARNING - } - - /** The types of access which may need user permission. */ - public static enum AccessType { - READ_FILE, - WRITE_FILE, - CREATE_DESTKOP_SHORTCUT, - CLIPBOARD_READ, - CLIPBOARD_WRITE, - PRINTER, - NETWORK, - VERIFIED, - UNVERIFIED, - NOTALLSIGNED, - SIGNING_ERROR - } - - /** - * Shows a warning dialog for different types of system access (i.e. file - * open/save, clipboard read/write, printing, etc). - * - * @param accessType the type of system access requested. - * @param file the jnlp file associated with the requesting application. - * @return true if permission was granted by the user, false otherwise. - */ - public static boolean showAccessWarningDialog(AccessType accessType, JNLPFile file) { - return showAccessWarningDialog(accessType, file, null); - } - - /** - * Shows a warning dialog for different types of system access (i.e. file - * open/save, clipboard read/write, printing, etc). - * - * @param accessType the type of system access requested. - * @param file the jnlp file associated with the requesting application. - * @param extras an optional array of Strings (typically) that gets - * passed to the dialog labels. - * @return true if permission was granted by the user, false otherwise. - */ - public static boolean showAccessWarningDialog(final AccessType accessType, - final JNLPFile file, final Object[] extras) { - - if (!shouldPromptUser()) { - return false; - } - - final SecurityDialogMessage message = new SecurityDialogMessage(); - - message.dialogType = DialogType.ACCESS_WARNING; - message.accessType = accessType; - message.file = file; - message.extras = extras; - - Object selectedValue = getUserResponse(message); - - if (selectedValue == null) { - return false; - } else if (selectedValue instanceof Integer) { - if (((Integer) selectedValue).intValue() == 0) - return true; - else - return false; - } else { - return false; - } - } - - /** - * Shows a warning dialog for when the main application jars are signed, - * but extensions aren't - * - * @return true if permission was granted by the user, false otherwise. - */ - public static boolean showNotAllSignedWarningDialog(JNLPFile file) { - - if (!shouldPromptUser()) { - return false; - } - - final SecurityDialogMessage message = new SecurityDialogMessage(); - message.dialogType = DialogType.NOTALLSIGNED_WARNING; - message.accessType = AccessType.NOTALLSIGNED; - message.file = file; - message.extras = new Object[0]; - - Object selectedValue = getUserResponse(message); - - if (selectedValue == null) { - return false; - } else if (selectedValue instanceof Integer) { - if (((Integer) selectedValue).intValue() == 0) { - return true; - } else { - return false; - } - } else { - return false; - } - } - - /** - * Shows a security warning dialog according to the specified type of - * access. If <code>type</code> is one of AccessType.VERIFIED or - * AccessType.UNVERIFIED, extra details will be available with regards - * to code signing and signing certificates. - * - * @param accessType the type of warning dialog to show - * @param file the JNLPFile associated with this warning - * @param jarSigner the JarSigner used to verify this application - */ - public static boolean showCertWarningDialog(AccessType accessType, - JNLPFile file, CertVerifier jarSigner) { - - if (!shouldPromptUser()) { - return false; - } - - final SecurityDialogMessage message = new SecurityDialogMessage(); - message.dialogType = DialogType.CERT_WARNING; - message.accessType = accessType; - message.file = file; - message.certVerifier = jarSigner; - - Object selectedValue = getUserResponse(message); - - if (selectedValue == null) { - return false; - } else if (selectedValue instanceof Integer) { - if (((Integer) selectedValue).intValue() == 0) - return true; - else - return false; - } else { - return false; - } - } - - /** - * FIXME This is unused. Remove it? - * @return (0, 1, 2) => (Yes, No, Cancel) - */ - public static int showAppletWarning() { - - if (!shouldPromptUser()) { - return 2; - } - - SecurityDialogMessage message = new SecurityDialogMessage(); - message.dialogType = DialogType.APPLET_WARNING; - - Object selectedValue = getUserResponse(message); - - // result 0 = Yes, 1 = No, 2 = Cancel - if (selectedValue == null) { - return 2; - } else if (selectedValue instanceof Integer) { - return ((Integer) selectedValue).intValue(); - } else { - return 2; - } - } - - /** - * Posts the message to the SecurityThread and gets the response. Blocks - * until a response has been recieved. It's safe to call this from an - * EventDispatchThread. - * - * @param message the SecuritDialogMessage indicating what type of dialog to - * display - * @return The user's response. Can be null. The exact answer depends on the - * type of message, but generally an Integer corresponding to the value 0 - * indicates success/proceed, and everything else indicates failure - */ - private static Object getUserResponse(final SecurityDialogMessage message) { - /* - * Want to show a security warning, while blocking the client - * application. This would be easy except there is a bug in showing - * modal JDialogs in a different AppContext. The source EventQueue - - * that sends the message to the (destination) EventQueue which is - * supposed to actually show the dialog - must not block. If the source - * EventQueue blocks, the destination EventQueue stops responding. So we - * have a hack here to work around it. - */ - - /* - * If this is the event dispatch thread the use the hack - */ - if (SwingUtilities.isEventDispatchThread()) { - /* - * Create a tiny modal dialog (which creates a new EventQueue for - * this AppContext, but blocks the original client EventQueue) and - * then post the message - this makes the source EventQueue continue - * running - but dot not allow the actual applet/application to - * continue processing - */ - final JDialog fakeDialog = new JDialog(); - fakeDialog.setSize(0, 0); - fakeDialog.setResizable(false); - fakeDialog.setModalityType(ModalityType.APPLICATION_MODAL); - fakeDialog.addWindowListener(new WindowAdapter() { - - @Override - public void windowOpened(WindowEvent e) { - message.toDispose = fakeDialog; - message.lock = null; - AccessController.doPrivileged(new PrivilegedAction<Void>() { - @Override - public Void run() { - JNLPRuntime.getSecurityDialogHandler().postMessage(message); - return null; - } - }); - } - }); - - /* this dialog will be disposed/hidden when the user closes the security prompt */ - fakeDialog.setVisible(true); - } else { - /* - * Otherwise do it the normal way. Post a message to the security - * thread to make it show the security dialog. Wait until it tells us - * to proceed. - */ - message.toDispose = null; - message.lock = new Semaphore(0); - JNLPRuntime.getSecurityDialogHandler().postMessage(message); - - boolean done = false; - while (!done) { - try { - message.lock.acquire(); - done = true; - } catch (InterruptedException e) { - // ignore; retry - } - } - - } - - return message.userResponse; - } - - /** - * Returns whether the current runtime configuration allows prompting user - * for security warnings. - * - * @return true if security warnings should be shown to the user. - */ - private static boolean shouldPromptUser() { - return AccessController.doPrivileged(new PrivilegedAction<Boolean >() { - @Override - public Boolean run() { - return Boolean.valueOf(JNLPRuntime.getConfiguration() - .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER)); - } - }); - } - -} |