summaryrefslogtreecommitdiffstats
path: root/pki/base/console/src/com/netscape/admin/certsrv/config/install/WIPasteCertPage.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/console/src/com/netscape/admin/certsrv/config/install/WIPasteCertPage.java')
-rw-r--r--pki/base/console/src/com/netscape/admin/certsrv/config/install/WIPasteCertPage.java500
1 files changed, 500 insertions, 0 deletions
diff --git a/pki/base/console/src/com/netscape/admin/certsrv/config/install/WIPasteCertPage.java b/pki/base/console/src/com/netscape/admin/certsrv/config/install/WIPasteCertPage.java
new file mode 100644
index 000000000..063382f32
--- /dev/null
+++ b/pki/base/console/src/com/netscape/admin/certsrv/config/install/WIPasteCertPage.java
@@ -0,0 +1,500 @@
+// --- 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.install;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+import java.util.*;
+import javax.swing.*;
+import javax.swing.text.*;
+import com.netscape.admin.certsrv.*;
+import com.netscape.admin.certsrv.connection.*;
+import com.netscape.admin.certsrv.wizard.*;
+import com.netscape.certsrv.common.*;
+import com.netscape.admin.certsrv.task.*;
+import com.netscape.management.client.console.*;
+import com.netscape.management.client.util.*;
+
+/**
+ * This page is to install the certificate in the internal token. The user can
+ * import the cert from the file, paste the Base 64 encoded blob in the
+ * text area or get the cert from the CMS where the request was sent.
+ *
+ * @author Christine Ho
+ * @version $Revision$, $Date$
+ * @see com.netscape.admin.certsrv.config.install
+ */
+class WIPasteCertPage extends WizardBasePanel implements IWizardPanel {
+ static private int transId = 1;
+ private JRadioButton mFileBtn;
+ private JRadioButton mBase64Btn;
+ private JTextField mFileText;
+ private JTextArea mBase64Text;
+ private JButton mPaste;
+ private String mCertContent = "";
+ private String mCertFilePath = "";
+ protected String mPanelName;
+ protected String mHelpIndex;
+ protected Color mActiveColor;
+ protected JTextArea introLbl;
+
+ protected JTextField mHostText, mPortText, mRIDText;
+ protected JLabel mHostLbl, mPortLbl, mRIDLbl;
+ protected String mHost, mPort, mRID;
+ protected JLabel mSSLText;
+ protected JCheckBox mSSL; // ssl or not
+ protected JLabel mQueryText;
+ protected JRadioButton mQueryBtn;
+
+ public static final int MAX_PORT = 65535;
+ public static final int MIN_PORT = 1;
+
+ WIPasteCertPage(String panelName) {
+ super(panelName);
+ mPanelName = panelName;
+ init();
+ }
+
+ public boolean isLastPage() {
+ return false;
+ }
+
+ public boolean initializePanel(WizardInfo info) {
+ InstallWizardInfo wizardInfo = (InstallWizardInfo)info;
+ if (mQueryBtn.isSelected())
+ enableFields(true, mActiveColor);
+ else
+ enableFields(false, getBackground());
+
+ String host = wizardInfo.getCMHost();
+ if (host != null && !host.equals(""))
+ mHostText.setText(host);
+ String port = wizardInfo.getCMEEPort();
+ if (port != null && !port.equals(""))
+ mPortText.setText(port);
+
+ String portType = wizardInfo.getCMEEType();
+ if (portType != null && portType.equals("http"))
+ mSSL.setSelected(false);
+
+ String rid = wizardInfo.getRequestID();
+ if (rid != null && !rid.equals(""))
+ mRIDText.setText(rid);
+
+ setBorder(makeTitledBorder(mPanelName));
+ return true;
+ }
+
+ public boolean validatePanel() {
+ if (mBase64Btn.isSelected()) {
+ mCertContent = mBase64Text.getText().trim();
+ if (mCertContent.equals("")) {
+ setErrorMessage("B64EEMPTY");
+ return false;
+ }
+ } else if (mFileBtn.isSelected()) {
+ mCertFilePath = mFileText.getText().trim();
+ if (mCertFilePath.equals("")) {
+ setErrorMessage("EMPTYFILE");
+ return false;
+ }
+ } else if (mQueryBtn.isSelected()) {
+ mHost = mHostText.getText().trim();
+ mPort = mPortText.getText().trim();
+ mRID = mRIDText.getText().trim();
+
+ if (mRID.equals("")) {
+ setErrorMessage("BLANKRID");
+ return false;
+ }
+ try {
+ int ridnumber = Integer.parseInt(mRID);
+ } catch (NumberFormatException e) {
+ setErrorMessage("INVALIDRID");
+ return false;
+ }
+
+ if (mHost.equals("")) {
+ setErrorMessage("BLANKHOST");
+ return false;
+ }
+ if (mPort.equals("")) {
+ setErrorMessage("BLANKPORT");
+ return false;
+ }
+
+ try {
+ int portnumber = Integer.parseInt(mPort);
+ if (portnumber < MIN_PORT || portnumber > MAX_PORT) {
+ setErrorMessage("OUTOFRANGE");
+ return false;
+ }
+ } catch (NumberFormatException e) {
+ setErrorMessage("INVALIDPORT");
+ return false;
+ }
+ return true;
+ }
+ return true;
+
+ }
+
+ public boolean concludePanel(WizardInfo info) {
+ InstallWizardInfo wizardInfo = (InstallWizardInfo)info;
+ String rawData = ConfigConstants.TASKID+"="+TaskId.TASK_GET_CERT_CONTENT;
+ rawData = rawData+"&"+ConfigConstants.OPTYPE+"="+OpDef.OP_READ;
+ String reqType = wizardInfo.getCertType();
+ rawData = rawData+"&"+Constants.PR_CERTIFICATE_TYPE+"="+reqType;
+ if (mFileBtn.isSelected()) {
+ rawData = rawData+"&"+Constants.PR_CERT_FILEPATH+"="+mCertFilePath;
+ wizardInfo.setCertFilePath(mCertFilePath);
+ wizardInfo.setPKCS10("");
+ } else if (mBase64Btn.isSelected()) {
+ rawData = rawData+"&"+Constants.PR_PKCS10+"="+mCertContent;
+ //xxx It's not pkcs10, it's certificate.
+ wizardInfo.setPKCS10(mCertContent);
+ wizardInfo.setCertFilePath("");
+ } else if (mQueryBtn.isSelected()) {
+ if (mRID != null && !mRID.equals(""))
+ wizardInfo.setRequestID(mRID);
+ if (mHost != null && !mHost.equals(""))
+ wizardInfo.setCMHost(mHost);
+ if (mPort != null && !mPort.equals(""))
+ wizardInfo.setCMEEPort(mPort);
+ if (mSSL.isSelected())
+ wizardInfo.setCMEEType("https");
+ else
+ wizardInfo.setCMEEType("http");
+
+ String rawData1 = "importCert=true";
+ rawData1=rawData1+"&"+"requestId="+mRID;
+/*
+ CMSImportCert importCertCgi = new CMSImportCert();
+ importCertCgi.initialize(wizardInfo);
+ Hashtable data1 = new Hashtable();
+ data1.put("importCert", "true");
+ data1.put("requestId", mRID);
+*/
+
+ startProgressStatus();
+ boolean ready = send(mHost, Integer.parseInt(mPort), "/checkRequest",
+ rawData1, wizardInfo);
+
+ endProgressStatus();
+
+ if (!ready) {
+ String str = getErrorMessage();
+ if (str.equals(""))
+ setErrorMessage("Server Error");
+ else
+ setErrorMessage(str);
+ return ready;
+ }
+ String certS= wizardInfo.getPKCS10();
+ // Break the long single line:header,64 byte lines,trailer
+ // Assuming this is the only format we generate.
+ String CERT_NEW_HEADER = "-----BEGIN CERTIFICATE-----";
+ String CERT_NEW_TRAILER = "-----END CERTIFICATE-----";
+ String str = CERT_NEW_HEADER + "\n";
+ int len = certS.length();
+ for (int i = 0; i < len; i=i+64){
+ if (i+64 < len)
+ str = str + certS.substring(i,i+64) +"\n";
+ else
+ str = str + certS.substring(i,len) +"\n";
+ }
+ str = str + CERT_NEW_TRAILER;
+ certS = str;
+ rawData = rawData+"&"+Constants.PR_PKCS10+"="+certS;
+ wizardInfo.setPKCS10(certS);
+ wizardInfo.setCertFilePath("");
+ }
+
+ startProgressStatus();
+ boolean ready = send(rawData, wizardInfo);
+ endProgressStatus();
+
+ if (!ready) {
+ String str = getErrorMessage();
+ if (str.equals("")) {
+ String errorMsg = mResource.getString(
+ mPanelName+"_ERRORMSG");
+ setErrorMessage(errorMsg);
+ } else
+ setErrorMessage(str);
+ }
+
+ return ready;
+ }
+
+ public void callHelp() {
+ CMSAdminUtil.help(mHelpIndex);
+ }
+
+ protected void init() {
+ GridBagLayout gb = new GridBagLayout();
+ GridBagConstraints gbc = new GridBagConstraints();
+ setLayout(gb);
+
+ introLbl = createTextArea(mResource.getString(
+ mPanelName+"_LABEL_INTRO_LABEL"));
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.weighty = 0.0;
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ COMPONENT_SPACE, COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(introLbl, gbc);
+
+ mFileBtn = makeJRadioButton("FILE", true);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,
+ COMPONENT_SPACE, COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(mFileBtn, gbc);
+
+ mFileText = makeJTextField(50);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.insets = new Insets(0, 4*COMPONENT_SPACE, COMPONENT_SPACE, 0);
+ add(mFileText, gbc);
+ mActiveColor = mFileText.getBackground();
+
+ mBase64Btn = makeJRadioButton("BASE64", false);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,
+ COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(mBase64Btn, gbc);
+
+ JTextArea desc = createTextArea(mResource.getString(
+ "PASTECERTWIZARD_TEXT_DESC_LABEL"));
+
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.weighty = 0.0;
+ gbc.insets = new Insets(COMPONENT_SPACE,4*COMPONENT_SPACE,0,
+ COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(desc, gbc);
+
+ mBase64Text = new JTextArea(null, null, 6, 10);
+ JScrollPane scrollPane = new JScrollPane(mBase64Text,
+ JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+ JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+ scrollPane.setPreferredSize(new Dimension(30, 50));
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.weighty = 0.5;
+ gbc.insets = new Insets(0, COMPONENT_SPACE, 0, COMPONENT_SPACE);
+ gbc.fill = gbc.BOTH;
+ gbc.gridwidth = gbc.REMAINDER;
+ add(scrollPane, gbc);
+
+ mPaste = makeJButton("PASTE");
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHEAST;
+ gbc.fill = gbc.NONE;
+ gbc.insets = new Insets(COMPONENT_SPACE,COMPONENT_SPACE,0,
+ COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(mPaste, gbc);
+
+ JLabel dummy = new JLabel(" ");
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weighty = 1.0;
+ gbc.fill = gbc.BOTH;
+ add(dummy, gbc);
+
+ mQueryBtn = makeJRadioButton("QUERY", false);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.insets = new Insets(0,COMPONENT_SPACE,
+ COMPONENT_SPACE,COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(mQueryBtn, gbc);
+
+ mQueryText = new JLabel(mResource.getString(
+ mPanelName + "_TEXT_QUERY_LABEL"));
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTHWEST;
+ gbc.weightx = 1.0;
+ gbc.insets = new Insets(0, 4*COMPONENT_SPACE,
+ COMPONENT_SPACE,COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(mQueryText, gbc);
+
+ mHostLbl = makeJLabel("HOST");
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.fill = gbc.NONE;
+ gbc.anchor = gbc.EAST;
+ gbc.insets = new Insets(0, 4*COMPONENT_SPACE, 0,
+ COMPONENT_SPACE);
+ add(mHostLbl, gbc);
+
+ mHostText = makeJTextField(23);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.WEST;
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.insets = new Insets(0, COMPONENT_SPACE, 0,
+ COMPONENT_SPACE);
+ add(mHostText, gbc);
+ mActiveColor = mHostText.getBackground();
+
+ mPortLbl = makeJLabel("PORT");
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.EAST;
+ gbc.fill = gbc.NONE;
+ gbc.insets = new Insets(COMPONENT_SPACE, 4*COMPONENT_SPACE, 0,
+ COMPONENT_SPACE);
+ add(mPortLbl, gbc);
+
+ mPortText = makeJTextField(23);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.WEST;
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.insets = new Insets(COMPONENT_SPACE, COMPONENT_SPACE, 0,
+ COMPONENT_SPACE);
+ add(mPortText, gbc);
+
+ mSSLText = new JLabel(mResource.getString(
+ mPanelName+"_TEXT_SSL_LABEL"));
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.WEST;
+ gbc.insets = new Insets(COMPONENT_SPACE, 4*COMPONENT_SPACE,
+ COMPONENT_SPACE,COMPONENT_SPACE);
+ //gbc.gridwidth = gbc.REMAINDER;
+ add(mSSLText, gbc);
+
+ mSSL = makeJCheckBox("SSL", true);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.WEST;
+ gbc.insets = new Insets(COMPONENT_SPACE, COMPONENT_SPACE,
+ COMPONENT_SPACE,COMPONENT_SPACE);
+ gbc.gridwidth = gbc.REMAINDER;
+ add(mSSL, gbc);
+
+ mRIDLbl = makeJLabel("RID");
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.fill = gbc.NONE;
+ gbc.anchor = gbc.EAST;
+ gbc.insets = new Insets(0, 4*COMPONENT_SPACE, 0,
+ COMPONENT_SPACE);
+ add(mRIDLbl, gbc);
+
+ mRIDText = makeJTextField(23);
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.WEST;
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.insets = new Insets(0, COMPONENT_SPACE, 0,
+ COMPONENT_SPACE);
+ add(mRIDText, gbc);
+
+ JLabel label = new JLabel(" ");
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.WEST;
+ gbc.gridwidth = gbc.REMAINDER;
+ gbc.gridheight = gbc.REMAINDER;
+ gbc.weighty = 1.0;
+ gbc.insets = new Insets(COMPONENT_SPACE, COMPONENT_SPACE, COMPONENT_SPACE,
+ COMPONENT_SPACE);
+ add(label, gbc);
+
+ ButtonGroup buttonGrp = new ButtonGroup();
+ buttonGrp.add(mFileBtn);
+ buttonGrp.add(mBase64Btn);
+ buttonGrp.add(mQueryBtn);
+
+ enableFields(mFileText, true, mActiveColor);
+ enableFields(mBase64Text, false, getBackground());
+ enableFields(false,getBackground());
+
+ super.init();
+ }
+
+ public void getUpdateInfo(WizardInfo info) {
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource().equals(mPaste)) {
+ mBase64Text.paste();
+ } else if (e.getSource().equals(mFileBtn)) {
+ enableFields(mFileText, true, mActiveColor);
+ enableFields(mBase64Text, false, getBackground());
+ enableFields(false, getBackground());
+ } else if (e.getSource().equals(mBase64Btn)) {
+ enableFields(mFileText, false, getBackground());
+ enableFields(mBase64Text, true, mActiveColor);
+ enableFields(false, getBackground());
+ } else if (e.getSource().equals(mQueryBtn)) {
+ enableFields(mFileText, false, getBackground());
+ enableFields(mBase64Text, false, getBackground());
+ enableFields(true, mActiveColor);
+ }
+ }
+
+ private void enableFields(JTextComponent comp1, boolean enable, Color color) {
+ comp1.setEnabled(enable);
+ comp1.setEditable(enable);
+ comp1.setBackground(color);
+ CMSAdminUtil.repaintComp(comp1);
+ }
+
+ protected void enableFields(boolean enabled, Color color) {
+ mQueryText.setEnabled(enabled);
+ //mQueryText.setEditable(enabled);
+ CMSAdminUtil.repaintComp(mQueryText);
+ mHostLbl.setEnabled(enabled);
+ mPortLbl.setEnabled(enabled);
+ mRIDLbl.setEnabled(enabled);
+ mHostText.setEnabled(enabled);
+ mHostText.setEditable(enabled);
+ mHostText.setBackground(color);
+ mPortText.setEnabled(enabled);
+ mPortText.setEditable(enabled);
+ mPortText.setBackground(color);
+ mRIDText.setEnabled(enabled);
+ mRIDText.setEditable(enabled);
+ mRIDText.setBackground(color);
+ CMSAdminUtil.repaintComp(mHostLbl);
+ CMSAdminUtil.repaintComp(mHostText);
+ CMSAdminUtil.repaintComp(mPortLbl);
+ CMSAdminUtil.repaintComp(mPortText);
+ CMSAdminUtil.repaintComp(mRIDLbl);
+ CMSAdminUtil.repaintComp(mRIDText);
+ mSSLText.setEnabled(enabled);
+ //mSSLText.setEditable(enabled);
+ CMSAdminUtil.repaintComp(mSSLText);
+ mSSL.setEnabled(enabled);
+ //mSSL.setEditable(enabled);
+ //mSSL.setBackground(color);
+ CMSAdminUtil.repaintComp(mSSL);
+
+ }
+}