Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Arthorne2009-08-12 19:40:40 +0000
committerJohn Arthorne2009-08-12 19:40:40 +0000
commit8132e43c4cb2b9a72066cb13c0caf23ea5cae627 (patch)
tree5983eb16db757cd2cf43f1126f5fc3a497e15007 /bundles/org.eclipse.equinox.p2.ui
parent2a6150cecdf3bf6ce86eb638a7a72804c8fdd1b3 (diff)
downloadrt.equinox.p2-8132e43c4cb2b9a72066cb13c0caf23ea5cae627.tar.gz
rt.equinox.p2-8132e43c4cb2b9a72066cb13c0caf23ea5cae627.tar.xz
rt.equinox.p2-8132e43c4cb2b9a72066cb13c0caf23ea5cae627.zip
Bug 235526 [security] No prompt for installing unsigned content
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/ValidationDialogServiceUI.java44
3 files changed, 48 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
index 5568fe20f..fc929cb4d 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
@@ -268,6 +268,9 @@ public class ProvUIMessages extends NLS {
public static String ServiceUI_LoginDetails;
public static String ServiceUI_LoginRequired;
public static String ServiceUI_OK;
+ public static String ServiceUI_unsigned_message;
+ public static String ServiceUI_unsigned_title;
+ public static String ServiceUI_warning_title;
public static String UpdateOrInstallWizardPage_Size;
public static String Updates_Label;
public static String UpdateWizardPage_Description;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
index 0788a2940..867d8422d 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
@@ -45,6 +45,9 @@ ServiceUI_Cancel=Cancel
ServiceUI_LoginDetails=Please provide login details for {0}
ServiceUI_LoginRequired=Login required
ServiceUI_OK=OK
+ServiceUI_unsigned_message=Warning: You are installing software that contains unsigned content. The authenticity or validity of this software cannot be established. Do you want to continue with the installation?
+ServiceUI_unsigned_title=Installing unsigned content
+ServiceUI_warning_title=Security Warning
UpdateIUOperationLabel=Update
UpdateIUCommandLabel=Up&date...
UpdateIUCommandTooltip=See if updates are available for the selected items
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/ValidationDialogServiceUI.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/ValidationDialogServiceUI.java
index 6eb6eb946..78078b24f 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/ValidationDialogServiceUI.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/ValidationDialogServiceUI.java
@@ -11,7 +11,7 @@
package org.eclipse.equinox.internal.provisional.p2.ui;
import java.security.cert.Certificate;
-import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.equinox.internal.p2.ui.ProvUIActivator;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
@@ -19,16 +19,36 @@ import org.eclipse.equinox.internal.p2.ui.dialogs.TrustCertificateDialog;
import org.eclipse.equinox.internal.p2.ui.dialogs.UserValidationDialog;
import org.eclipse.equinox.internal.p2.ui.viewers.CertificateLabelProvider;
import org.eclipse.equinox.internal.provisional.p2.core.IServiceUI;
+import org.eclipse.equinox.internal.provisional.p2.core.IServiceUICheckUnsigned;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.window.Window;
import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
/**
* The default GUI-based implementation of {@link IServiceUI}.
*/
-public class ValidationDialogServiceUI implements IServiceUI {
+public class ValidationDialogServiceUI implements IServiceUI, IServiceUICheckUnsigned {
+ /**
+ * Subclassed to add a cancel button to the error dialog.
+ */
+ static class OkCancelErrorDialog extends ErrorDialog {
+
+ public OkCancelErrorDialog(Shell parentShell, String dialogTitle, String message, IStatus status, int displayMask) {
+ super(parentShell, dialogTitle, message, status, displayMask);
+ }
+
+ protected void createButtonsForButtonBar(Composite parent) {
+ // create OK and Details buttons
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, true);
+ createDetailsButton(parent);
+ }
+ }
public static final QualifiedName SUPPRESS_AUTHENTICATION_JOB_MARKER = new QualifiedName(ProvUIActivator.PLUGIN_ID, "SUPPRESS_AUTHENTICATION_REQUESTS"); //$NON-NLS-1$
@@ -128,4 +148,24 @@ public class ValidationDialogServiceUI implements IServiceUI {
}
return result[0];
}
+
+ public boolean promptForUnsignedContent(final String[] details) {
+ final boolean[] result = new boolean[] {false};
+ PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
+ public void run() {
+ Shell shell = ProvUI.getDefaultParentShell();
+ OkCancelErrorDialog dialog = new OkCancelErrorDialog(shell, ProvUIMessages.ServiceUI_warning_title, null, createStatus(), IStatus.WARNING);
+ result[0] = dialog.open() == IDialogConstants.OK_ID;
+ }
+
+ private IStatus createStatus() {
+ MultiStatus parent = new MultiStatus(ProvUIActivator.PLUGIN_ID, 0, ProvUIMessages.ServiceUI_unsigned_message, null);
+ for (int i = 0; i < details.length; i++) {
+ parent.add(new Status(IStatus.WARNING, ProvUIActivator.PLUGIN_ID, details[i]));
+ }
+ return parent;
+ }
+ });
+ return result[0];
+ }
}

Back to the top