summaryrefslogtreecommitdiffstats
path: root/pki/base/console/src/com/netscape/admin/certsrv/config/CMSEncryptionPanel.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/console/src/com/netscape/admin/certsrv/config/CMSEncryptionPanel.java')
-rw-r--r--pki/base/console/src/com/netscape/admin/certsrv/config/CMSEncryptionPanel.java840
1 files changed, 840 insertions, 0 deletions
diff --git a/pki/base/console/src/com/netscape/admin/certsrv/config/CMSEncryptionPanel.java b/pki/base/console/src/com/netscape/admin/certsrv/config/CMSEncryptionPanel.java
new file mode 100644
index 000000000..0891c63fc
--- /dev/null
+++ b/pki/base/console/src/com/netscape/admin/certsrv/config/CMSEncryptionPanel.java
@@ -0,0 +1,840 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program 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 of the License.
+//
+// This program 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 this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.admin.certsrv.config;
+
+import com.netscape.admin.certsrv.*;
+import com.netscape.management.client.console.*;
+import com.netscape.admin.certsrv.security.*;
+import com.netscape.admin.certsrv.connection.*;
+import com.netscape.certsrv.common.*;
+import java.awt.*;
+import java.util.*;
+import java.io.*;
+import javax.swing.*;
+import java.awt.event.*;
+import javax.swing.border.*;
+import com.netscape.management.client.util.*;
+import com.netscape.management.nmclf.*;
+import javax.swing.plaf.*;
+import com.netscape.admin.certsrv.keycert.*;
+import com.netscape.admin.certsrv.config.install.*;
+import com.netscape.admin.certsrv.managecert.*;
+
+/**
+ * Encryption panel used for setup server encryption options.
+ * This is a wrapper class that emulates the CMSBaseTab API
+ * calls.
+ *
+ * @author Jack Pan-Chen
+ * @version $Revision$, $Date$
+ * @see com.netscape.admin.certsrv.config
+ */
+public class CMSEncryptionPanel extends CMSBaseTab {
+
+ /*==========================================================
+ * variables
+ *==========================================================*/
+ private static String PANEL_NAME = "ENCRYPTION";
+ private ConsoleInfo mConsoleInfo;
+ private CMSServerInfo mServerInfo;
+ private AdminConnection mConnection;
+ private JPanel mEncryptPane;
+ private JComboBox mSelection, mTokenList, mCertList;
+ private Hashtable mCertMapping; //maps the function list items to tags
+ private String mSelectedItem, mSelectedToken, mSelectedCert;
+ private JButton mWizard, mCipherPref, mSetup;
+ private Hashtable mTokenCertList; //container for tokens and certs (Vector)
+ private boolean mIsDomestic = false;
+ private boolean mHasFortezza = false;
+ private Vector mCipherPrefStore;
+ private CMSCipherPreferenceDialog mCipherDialog;
+ private boolean updateFlag = false;
+ private boolean mSelectionIgnore = false;
+ private boolean mWarningOn = false;
+ private static final String HELPINDEX =
+ "configuration-system-encryption-help";
+
+ /**=========================================================
+ * constructors
+ * @param parent the parent panel
+ * @see com.netscape.admin.certsrv.config.CMSTabPanel
+ *==========================================================*/
+ public CMSEncryptionPanel(CMSTabPanel parent) {
+ super(PANEL_NAME, parent);
+ mConsoleInfo = parent.getResourceModel().getConsoleInfo();
+ mServerInfo = parent.getResourceModel().getServerInfo();
+ mConnection = mServerInfo.getAdmin();
+ mCertMapping = new Hashtable();
+ mTokenCertList = new Hashtable();
+ mCipherPrefStore = new Vector();
+ mHelpToken = HELPINDEX;
+ }
+
+ /*==========================================================
+ * public methods
+ *==========================================================*/
+
+ /**
+ * Actual Instanciation of the UI components
+ */
+ public void init() {
+ Debug.println("EncryptionPanel: init()");
+ GridBagLayout gb = new GridBagLayout();
+ GridBagConstraints gbc = new GridBagConstraints();
+ CMSAdminUtil.resetGBC(gbc);
+ mCenterPanel.setLayout(gb);
+
+ //certificate settings
+ JPanel top = new JPanel();
+ GridBagLayout gb2 = new GridBagLayout();
+ top.setLayout(gb2);
+ top.setBorder( new CompoundBorder(
+ BorderFactory.createTitledBorder(
+ mResource.getString("ENCRYPTION_BORDER_CERT_LABEL")),
+ new EmptyBorder(-3,
+ 0,
+ DIFFERENT_COMPONENT_SPACE - 3,
+ 0)));
+
+ //add selection combobox
+ JLabel label1 = makeJLabel("SELECT");
+ mSelection = new JComboBox();
+ updateCertSelection(); //dynamically generate this list
+ addTopEntryField(top, label1, mSelection, gbc);
+ if (mSelection.getItemCount()>0) {
+ mSelection.setSelectedIndex(0);
+ mSelectedItem = (String) mSelection.getSelectedItem();
+ } else {
+ //disable if nothing there
+ mSelection.setEnabled(false);
+ }
+ mSelection.addItemListener(this);
+
+ //add encryption panel
+ mEncryptPane = createCertEntry();
+ //mEncryptPane = new InnerEncryptionPane(mConsoleInfo);
+ //mEncryptPane.addEncryptionPaneListener(this);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTH;
+ gbc.gridwidth = gbc.REMAINDER;
+ //gbc.gridheight = gbc.REMAINDER;
+ gbc.weightx = 1.0;
+ //gbc.weighty = 1.0;
+ gbc.insets = new Insets(COMPONENT_SPACE,
+ COMPONENT_SPACE,0,COMPONENT_SPACE);
+ gb2.setConstraints(mEncryptPane, gbc);
+ top.add(mEncryptPane);
+
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.weightx = 1.0;
+ gb.setConstraints(top, gbc);
+ mCenterPanel.add(top);
+
+ mWizard = makeJButton("WIZARD");
+ mCipherPref = makeJButton("CIPHERPREF");
+ mSetup = makeJButton("SETUP");
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.gridheight = gbc.REMAINDER;
+ gbc.weighty = 1.0;
+ //addButtonEntryField(mCenterPanel, mSetup, mWizard, mCipherPref, gbc);
+ addButtonEntryField(mCenterPanel, mSetup, mWizard, gbc);
+ //addButtonEntryField(mCenterPanel, mCipherPref, gbc);
+
+ /* retrieve data from server and
+ * feed data into mEncryptionPane for display ...
+ */
+ refresh();
+ }
+
+ /**
+ * Implementation for saving panel information
+ * @return true if save successful; otherwise, false.
+ */
+ public boolean applyCallback() {
+ if (mWarningOn) {
+ String errorMsg =
+ mResource.getString(mPanelName+"_LABEL_WARNING_LABEL");
+ JOptionPane.showMessageDialog(new JFrame(), errorMsg, "Warning",
+ JOptionPane.WARNING_MESSAGE,
+ CMSAdminUtil.getImage(CMSAdminResources.IMAGE_WARN_ICON));
+ mWarningOn = false;
+ return false;
+ }
+
+ //save current changes if modified
+ saveChanges((String) mSelection.getSelectedItem());
+
+ //construct NVP parameters
+ NameValuePairs nvp = new NameValuePairs();
+ for (Enumeration e = mCertMapping.keys() ; e.hasMoreElements() ;) {
+ CipherEntryData data =
+ (CipherEntryData)mCertMapping.get(e.nextElement());
+ nvp.add(data.getTagName(),data.getTokenName()+","+data.getCertName());
+ }
+
+ if (updateCertMap(nvp)) {
+ mWarningOn = false;
+ clearDirtyFlag();
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Implementation for reset values
+ * @return true if reset successful; otherwise, false.
+ */
+ public boolean resetCallback() {
+ refresh();
+ mWarningOn = false;
+ return true;
+ }
+
+ /**
+ * retrieve data from server and
+ * feed data into mEncryptPane for display ...
+ * refresh the panel and update data
+ */
+ public void refresh() {
+
+ //call server to get the encryption settings
+ NameValuePairs response;
+ try {
+ response = updateSecurityInformation();
+ } catch(EAdminException e) {
+ //display error dialog
+ CMSAdminUtil.showErrorDialog(mParent.getResourceModel().getFrame(), mResource,
+ e.getMessage(), CMSAdminUtil.ERROR_MESSAGE);
+ return;
+ }
+
+ //setup the data and UI
+ updateFlag = true;
+ cleanup();
+ setupDataContainer(response);
+ setupComboSelection();
+ updateFlag = false;
+
+ clearDirtyFlag();
+ }
+
+ /*==========================================================
+ * EVNET HANDLER METHODS
+ *==========================================================*/
+
+ //=== ACTIONLISTENER =====================
+ public void actionPerformed(ActionEvent e) {
+/*
+ if (e.getSource().equals(mSetup)) {
+ Debug.println("Configure cert");
+ InstallWizardInfo info = new InstallWizardInfo();
+ InstallWizard wizard = new InstallWizard(
+ mParent.getResourceModel().getFrame(), info);
+ return;
+ }
+*/
+ if (e.getSource().equals(mSetup)) {
+ ManageCertDialog manageDialog =
+ new ManageCertDialog(mParent.getResourceModel().getFrame());
+ manageDialog.showDialog(mParent.getResourceModel().getServerInfo().getAdmin());
+ }
+ if (e.getSource().equals(mWizard)) {
+ Debug.println("Wizard");
+
+ //XXX launch OUR OWN wizard
+ CertSetupWizardInfo info = new
+ CertSetupWizardInfo(mConnection, mConsoleInfo);
+ CertSetupWizard wizard = new CertSetupWizard(mParent.getResourceModel(), info);
+ // mParent.getResourceModel().getFrame(), info);
+ //KeyCertWizard wizard = new KeyCertWizard(mConnection);
+
+ //XXX we should update the settings to reflect the changes
+
+
+ return;
+ }
+ if (e.getSource().equals(mCipherPref)) {
+ Debug.println("Wizard");
+
+ if (mCipherDialog == null) {
+ mCipherDialog = new CMSCipherPreferenceDialog(mParent.mModel.getFrame(),
+ mIsDomestic,
+ mHasFortezza,
+ CMSCipherPreferenceDialog.SSL2|CMSCipherPreferenceDialog.SSL3);
+
+ }
+
+ refresh();
+ setupCipherDialog(mCipherDialog);
+
+ mCipherDialog.show();
+
+ if (!mCipherDialog.isModified())
+ return;
+
+ //Save the cipher settings
+ StringBuffer buf = new StringBuffer();
+
+ if (mCipherDialog.isSSLEnabled(mCipherDialog.SSL2)) {
+ String[] v2 = mCipherDialog.getSSLPreference(mCipherDialog.SSL2);
+ for (int i=0; i< v2.length; i++) {
+ if (mCipherDialog.isCipherEnabled(v2[i])) {
+ if (buf.length()>0)
+ buf.append(",");
+ buf.append(v2[i]);
+ }
+ }
+ }
+
+ if (mCipherDialog.isSSLEnabled(mCipherDialog.SSL3)) {
+ String[] v3 = mCipherDialog.getSSLPreference(mCipherDialog.SSL3);
+ for (int i=0; i< v3.length; i++) {
+ if (mCipherDialog.isCipherEnabled(v3[i])) {
+ if (buf.length()>0)
+ buf.append(",");
+ buf.append(v3[i]);
+ }
+ }
+ }
+
+ updateCipherPref(buf.toString());
+
+ //save the new settings
+ mCipherDialog.setSaved(true);
+
+ return;
+ }
+ }
+
+ //== ItemListener ==
+ public void itemStateChanged(ItemEvent e){
+
+ if (e.getSource().equals(mSelection)) {
+ if (e.getStateChange() == e.SELECTED) {
+ if (!mSelectionIgnore) {
+ updateFlag = true;
+ saveChanges(mSelectedItem);
+ mSelectedItem = (String) mSelection.getSelectedItem();
+ setupComboSelection();
+ updateFlag = false;
+ }
+ }
+ } else if (e.getSource().equals(mTokenList)) {
+ if ( (!updateFlag) && (e.getStateChange() == e.SELECTED) ){
+ Debug.println("Token Selected");
+ setDirtyFlag();
+ updateFlag = true;
+ setupCertCombo();
+ updateFlag = false;
+ }
+ } else if (e.getSource().equals(mCertList)) {
+ if ( (!updateFlag) && (e.getStateChange() == e.SELECTED) ){
+ Debug.println("Cert Selected");
+ saveChanges(mSelectedItem);
+ setupComboSelection();
+ setDirtyFlag();
+ }
+ }
+ mWarningOn = true;
+ }
+
+ /*==========================================================
+ * Private Methods
+ *==========================================================*/
+
+ //save the mappings if changes made
+ private void saveChanges(String entry) {
+ if ( (!mSelectedToken.equals((String)mTokenList.getSelectedItem())) ||
+ (!mSelectedCert.equals((String)mCertList.getSelectedItem())) ) {
+
+ CipherEntryData data = (CipherEntryData) mCertMapping.get(entry);
+ data.setData((String)mTokenList.getSelectedItem(),
+ (String)mCertList.getSelectedItem());
+ }
+ }
+
+ //cleanup the
+ private void cleanup() {
+ mTokenCertList.clear();
+ mCipherPrefStore.removeAllElements();
+ mTokenList.removeAllItems();
+ mCertList.removeAllItems();
+ }
+
+ //setup the cipher dialog
+ private void setupCipherDialog(CMSCipherPreferenceDialog dialog) {
+ Debug.println("setupCipherDialog");
+ dialog.setSSLEnabled(dialog.SSL3,true);
+
+ //set selected/unselected ciphers
+ String[] v2 = dialog.getSSLPreference(dialog.SSL2);
+
+ if (v2.length <= 0)
+ dialog.setSSLEnabled(dialog.SSL2,false);
+ else
+ dialog.setSSLEnabled(dialog.SSL2,true);
+
+ for (int i=0; i< v2.length; i++) {
+ if (mCipherPrefStore.contains(v2[i])) {
+ //Debug.println("setEnable: "+v2[i]);
+ dialog.setCipherEnabled(v2[i], true);
+ } else {
+ //Debug.println("setDisable: "+v2[i]);
+ dialog.setCipherEnabled(v2[i], false);
+ }
+ }
+ String[] v3 = dialog.getSSLPreference(dialog.SSL3);
+ if (v3.length <= 0)
+ dialog.setSSLEnabled(dialog.SSL3,false);
+ else
+ dialog.setSSLEnabled(dialog.SSL3,true);
+
+ for (int i=0; i< v3.length; i++) {
+ if (mCipherPrefStore.contains(v3[i])) {
+ //Debug.println("setEnable: "+v3[i]);
+ dialog.setCipherEnabled(v3[i], true);
+ } else {
+ //Debug.println("setDisable: "+v3[i]);
+ dialog.setCipherEnabled(v3[i], false);
+ }
+ }
+
+ mCipherDialog.setSaved(true);
+ }
+
+ //initialize the data containers
+ private void setupDataContainer(NameValuePairs response) {
+
+ //setup security version flag
+ String version = response.getValue(Constants.PR_CIPHER_VERSION);
+ if ( (version != null) && (version.equals(
+ Constants.PR_CIPHER_VERSION_DOMESTIC)) ) {
+ mIsDomestic = true;
+ }
+
+ //setup fortezza flag
+ String fortezza = response.getValue(Constants.PR_CIPHER_FORTEZZA);
+ if ( (fortezza != null) && (fortezza.equalsIgnoreCase("TRUE")) ){
+ mHasFortezza = true;
+ }
+
+ //setup cipher preference settings
+ String cipherpref = response.getValue(Constants.PR_CIPHER_PREF);
+ //Debug.println("cipher preference: "+cipherpref);
+ if ( (cipherpref != null) && (!cipherpref.trim().equals("")) ) {
+ StringTokenizer tokenizer = new StringTokenizer(cipherpref, ",");
+ while (tokenizer.hasMoreTokens()) {
+ String pref = tokenizer.nextToken().trim();
+ //Debug.println("Add cipher: "+pref);
+ mCipherPrefStore.addElement(pref);
+ }
+ } else {
+ Debug.println("ERROR: CMSEncryptionPanel: setupDataContainer()- no cert pref list");
+ }
+
+ //setup the cipher entry data - loop through table and retrieve
+ //the current mappings
+ mSelectionIgnore = true;
+ for (Enumeration e = mCertMapping.keys() ; e.hasMoreElements() ;) {
+ String name = (String) e.nextElement();
+ CipherEntryData data = (CipherEntryData)mCertMapping.get(name);
+ String value = response.getValue(data.getTagName());
+ if ( (value != null) && (!value.trim().equals("")) ) {
+ StringTokenizer tokenizer = new StringTokenizer(value, ",");
+ try {
+ String token = tokenizer.nextToken().trim();
+ String cert = tokenizer.nextToken().trim();
+ data.setData(token, cert);
+ } catch(Exception ex) {
+ Debug.println("ERROR: CMSEncryptionPanel: setupDataContainer()- no token/cert not complete");
+ }
+ } else {
+ Debug.println("ERROR: CMSEncryptionPanel: setupDataContainer()- no token/cert for:"+data.getTagName());
+ mCertMapping.remove(name);
+ mSelection.removeItem(name);
+ Debug.println("RECOVER: CMSEncryptionPanel: setupDataContainer()- "+name+" removed from selection");
+ }
+ }
+ mSelectionIgnore = false;
+
+ //setup the token-cert list data table
+ String tokenlist = response.getValue(Constants.PR_TOKEN_LIST);
+ if ( (tokenlist != null) && (!tokenlist.trim().equals("")) ) {
+ StringTokenizer tokenizer = new StringTokenizer(tokenlist, ",");
+ while (tokenizer.hasMoreTokens()) {
+ String token = tokenizer.nextToken().trim();
+ Debug.println("Token: "+token);
+
+ //get the certificate associated with this token
+ String certList = response.getValue(Constants.PR_TOKEN_PREFIX+token);
+ Vector certVector = new Vector();
+ if ( (certList != null) && (!certList.trim().equals("")) ) {
+ StringTokenizer tokenizer2 = new StringTokenizer(certList, ",");
+ while (tokenizer2.hasMoreTokens()) {
+ certVector.addElement(tokenizer2.nextToken().trim());
+ }
+ } else {
+ Debug.println("WARNING: CMSEncryptionPanel: setupDataContainer()- no certlist for: "+token);
+ }
+
+ //set the token-cert to hashtable
+ mTokenCertList.put(token, certVector);
+ mTokenList.addItem(token);
+ }
+ } else {
+ Debug.println("ERROR: CMSEncryptionPanel: setupDataContainer()- no tokenlist");
+ }
+
+ //setup the initial combobox selection
+ String newToken = (String) mTokenList.getSelectedItem();
+ mSelectedToken = newToken;
+ mCertList.removeAllItems();
+ Vector list = (Vector) mTokenCertList.get(newToken);
+ for (int i=0; i< list.size(); i++)
+ mCertList.addItem(list.elementAt(i));
+ }
+
+ //setup combobox selection
+ private void setupComboSelection() {
+ //get current function selection
+ CipherEntryData data = (CipherEntryData) mCertMapping.get(mSelection.getSelectedItem());
+
+ //select correct token from the token list
+ String oldToken = (String) mTokenList.getSelectedItem();
+ String newToken = data.getTokenName();
+ if (!oldToken.equals(newToken)) {
+ mTokenList.setSelectedItem(newToken);
+ mSelectedToken = newToken;
+ setupCertCombo();
+ }
+ //select correct certiicate from the cert list
+ mCertList.setSelectedItem(data.getCertName());
+ mSelectedCert = data.getCertName();
+ }
+
+ //setup the certlist combo
+ private void setupCertCombo() {
+ String newToken = (String) mTokenList.getSelectedItem();
+ mCertList.removeAllItems();
+ Vector list = (Vector) mTokenCertList.get(newToken);
+ for (int i=0; i< list.size(); i++)
+ mCertList.addItem(list.elementAt(i));
+ }
+
+ //creating the certificate mapping UI components
+ private JPanel createCertEntry() {
+ JPanel panel = new JPanel();
+ GridBagLayout gb = new GridBagLayout();
+ GridBagConstraints gbc = new GridBagConstraints();
+ CMSAdminUtil.resetGBC(gbc);
+ panel.setLayout(gb);
+
+ //set border
+ panel.setBorder( new CompoundBorder(
+ BorderFactory.createTitledBorder(mResource.getString("ENCRYPTION_BORDER_MAPTO_LABEL")),
+ new EmptyBorder(-3,
+ 0,
+ CMSAdminUtil.DIFFERENT_COMPONENT_SPACE,
+ 0)));
+
+ //add components
+ mTokenList = new JComboBox();
+ mTokenList.addItemListener(this);
+ mCertList = new JComboBox();
+ mCertList.addItemListener(this);
+ JLabel label1 = makeJLabel("TOKEN");
+ JLabel label2 = makeJLabel("CERTIFICATE");
+ CMSAdminUtil.addEntryField(panel, label1, mTokenList, label2, mCertList, gbc);
+ return panel;
+ }
+
+ /**
+ * The certificates used by each subsystem are stored as cert list
+ * strings in the resource file using the PR_ prefix tags.
+ */
+ private void updateCertSelection() {
+ //get installed subsystem
+ Vector v = mServerInfo.getInstalledSubsystems();
+
+ //add default system certificate list
+ String certs;
+ try {
+ certs = mResource.getString("ENCRYPTION_SERVER_CERTS");
+ } catch (MissingResourceException e) {
+ Debug.println("ERROR: unable retrieving server default cert list");
+ certs = "";
+ }
+ if (!certs.trim().equals("")) {
+ StringTokenizer tokenizer = new StringTokenizer(certs, ",");
+ while (tokenizer.hasMoreTokens()) {
+ String certname = tokenizer.nextToken().trim();
+ loadCertList(certname);
+ }
+ }
+
+ //create additional subsystem certificate list
+ for (int i=0; i< v.size(); i++) {
+ String name = (String)v.elementAt(i);
+ try {
+ String certlist = mResource.getString(PANEL_NAME+"_"+name+"_CERTS");
+ if (!certlist.trim().equals("")) {
+ StringTokenizer tokenizer = new StringTokenizer(certlist, ",");
+ while (tokenizer.hasMoreTokens()) {
+ String certname = tokenizer.nextToken().trim();
+ loadCertList(certname);
+ }
+ }
+ } catch (MissingResourceException e) {
+ Debug.println("ERROR: unable retrieving subsystem certificate list: "+name);
+ }
+ }
+ }
+
+ //register the certificate and mapping entry
+ private void loadCertList(String certTag) {
+ //add to selection list
+ String name;
+ try {
+ name = mResource.getString("ENCRYPTION_COMBOBOX_SELECT_VALUE_"+certTag);
+ } catch (MissingResourceException e) {
+ Debug.println("ERROR: cert resource not found: "+certTag);
+ return;
+ }
+ mSelection.addItem(name);
+ mCertMapping.put(name, new CipherEntryData(certTag));
+ }
+
+ private static void addTopEntryField(JPanel panel, JComponent label,
+ JComponent field, GridBagConstraints gbc) {
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = 1;
+ gbc.gridx = 0;
+ gbc.anchor = gbc.EAST;
+ gbc.insets = new Insets(COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0);
+ panel.add( label, gbc );
+
+ gbc.gridx++;
+ gbc.anchor = gbc.WEST;
+ gbc.fill = gbc.HORIZONTAL;
+ gbc.weightx = 1.0;
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ 0,DIFFERENT_COMPONENT_SPACE);
+ panel.add( field, gbc );
+ }
+
+ private static void addButtonEntryField(JPanel panel,
+ JComponent field, GridBagConstraints gbc) {
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = 1;
+ gbc.gridx = 0;
+ gbc.anchor = gbc.NORTHEAST;
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,0);
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0);
+ panel.add(new JLabel(""));
+
+ gbc.gridx++;
+ gbc.anchor = gbc.NORTHEAST;
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = gbc.REMAINDER;
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,
+ // 0,DIFFERENT_COMPONENT_SPACE);
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ 0,COMPONENT_SPACE);
+ panel.add( field, gbc );
+ }
+
+ private static void addButtonEntryField(JPanel panel, JComponent label,
+ JComponent field, GridBagConstraints gbc) {
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = 1;
+ gbc.gridx = 0;
+ gbc.anchor = gbc.NORTHEAST;
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0);
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,0);
+ panel.add(new JLabel(""));
+
+ gbc.gridx++;
+ gbc.weightx = 1.0;
+ panel.add( label, gbc );
+
+ gbc.gridx++;
+ gbc.anchor = gbc.NORTHEAST;
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = gbc.REMAINDER;
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,
+ //0,DIFFERENT_COMPONENT_SPACE);
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ 0,COMPONENT_SPACE);
+ panel.add( field, gbc );
+ }
+
+ private static void addButtonEntryField(JPanel panel, JComponent label,
+ JComponent field, JComponent field1, GridBagConstraints gbc) {
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = 1;
+ gbc.gridx = 0;
+ gbc.anchor = gbc.NORTHEAST;
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,0,0);
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,0);
+ panel.add(new JLabel(""));
+
+ gbc.gridx++;
+ gbc.weightx = 1.0;
+ panel.add( label, gbc );
+
+ gbc.gridx++;
+ gbc.anchor = gbc.NORTHEAST;
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ //gbc.gridwidth = gbc.REMAINDER;
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,
+ // 0,DIFFERENT_COMPONENT_SPACE);
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ 0,COMPONENT_SPACE);
+ panel.add( field, gbc );
+
+ gbc.gridx++;
+ gbc.anchor = gbc.NORTHEAST;
+ gbc.fill = gbc.NONE;
+ gbc.weightx = 0.0;
+ gbc.gridwidth = gbc.REMAINDER;
+ //gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE,DIFFERENT_COMPONENT_SPACE,
+ // 0,DIFFERENT_COMPONENT_SPACE);
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ 0,COMPONENT_SPACE);
+ panel.add( field1, gbc );
+ }
+
+ /*==========================================================
+ * SEND STUFF TO SERVER
+ *==========================================================*/
+
+ //retrieve security information from the server side
+ private NameValuePairs updateSecurityInformation()
+ throws EAdminException
+ {
+ Debug.println("Get Security Information");
+ NameValuePairs nvp = new NameValuePairs();
+ nvp.add(Constants.PR_CIPHER_PREF,"");
+ nvp.add(Constants.PR_CIPHER_VERSION,"");
+ nvp.add(Constants.PR_CIPHER_FORTEZZA,"");
+ nvp.add(Constants.PR_TOKEN_LIST,"");
+
+ //create installed certificate list data request
+ for (Enumeration e = mCertMapping.elements(); e.hasMoreElements() ;) {
+ CipherEntryData data = (CipherEntryData)e.nextElement();
+ nvp.add(data.getTagName(),"");
+ }
+
+ NameValuePairs response;
+
+ response = mConnection.read(DestDef.DEST_SERVER_ADMIN,
+ ScopeDef.SC_ENCRYPTION,
+ Constants.RS_ID_CONFIG,
+ nvp);
+
+ Debug.println("Received: "+response.toString());
+
+ return response;
+ }
+
+ //modify cipher preference
+ private void updateCipherPref(String list) {
+ Debug.println("Set Cipher Preference: "+list);
+
+ NameValuePairs nvp = new NameValuePairs();
+ nvp.add(Constants.PR_CIPHER_PREF, list);
+
+ //send to server
+ try {
+ mConnection.modify(DestDef.DEST_SERVER_ADMIN,
+ ScopeDef.SC_ENCRYPTION,
+ Constants.RS_ID_CONFIG,
+ nvp);
+ } catch(EAdminException e) {
+ //display error dialog
+ CMSAdminUtil.showErrorDialog(mParent.getResourceModel().getFrame(), mResource,
+ e.getMessage(), CMSAdminUtil.ERROR_MESSAGE);
+ return;
+ }
+ }
+
+ //modify certificate mapping
+ private boolean updateCertMap(NameValuePairs config) {
+ Debug.println("Set Certificate Mapping: "+config.toString());
+
+ //send to server
+ try {
+ mConnection.modify(DestDef.DEST_SERVER_ADMIN,
+ ScopeDef.SC_ENCRYPTION,
+ Constants.RS_ID_CONFIG,
+ config);
+ } catch(EAdminException e) {
+ //display error dialog
+ CMSAdminUtil.showErrorDialog(mParent.getResourceModel().getFrame(), mResource,
+ e.getMessage(), CMSAdminUtil.ERROR_MESSAGE);
+ return false;
+ }
+
+ return true;
+ }
+
+}
+
+//internal data structure
+class CipherEntryData {
+
+ String mTag;
+ String mToken;
+ String mCert;
+
+ public CipherEntryData(String tag) {
+ mTag = tag;
+ }
+
+ public void setData(String token, String cert) {
+ mToken = token;
+ mCert = cert;
+ }
+
+ public String getCertName() {
+ return mCert;
+ }
+
+ public String getTokenName() {
+ return mToken;
+ }
+
+ public String getTagName() {
+ return mTag;
+ }
+
+ public String toString() {
+ return mTag+"-"+mToken+":"+mCert;
+ }
+
+}