summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/cmscore/base/JDialogPasswordCallback.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/common/src/com/netscape/cmscore/base/JDialogPasswordCallback.java')
-rw-r--r--pki/base/common/src/com/netscape/cmscore/base/JDialogPasswordCallback.java270
1 files changed, 0 insertions, 270 deletions
diff --git a/pki/base/common/src/com/netscape/cmscore/base/JDialogPasswordCallback.java b/pki/base/common/src/com/netscape/cmscore/base/JDialogPasswordCallback.java
deleted file mode 100644
index 7a7709466..000000000
--- a/pki/base/common/src/com/netscape/cmscore/base/JDialogPasswordCallback.java
+++ /dev/null
@@ -1,270 +0,0 @@
-// --- 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.cmscore.base;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
-
-import javax.swing.BorderFactory;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JPasswordField;
-
-import org.mozilla.jss.CryptoManager;
-import org.mozilla.jss.crypto.CryptoToken;
-import org.mozilla.jss.util.Password;
-import org.mozilla.jss.util.PasswordCallback;
-import org.mozilla.jss.util.PasswordCallbackInfo;
-
-/**
- * A class to retrieve passwords through a modal Java dialog box
- */
-public class JDialogPasswordCallback implements PasswordCallback {
-
- public Password getPasswordFirstAttempt(PasswordCallbackInfo info)
- throws PasswordCallback.GiveUpException {
- return getPW(info, false);
- }
-
- public Password getPasswordAgain(PasswordCallbackInfo info)
- throws PasswordCallback.GiveUpException {
- return getPW(info, true);
- }
-
- // This structure holds information local to a getPW() call, for use
- // by action listeners
- private static class PWHolder {
- public Password password = null;
- public boolean cancelled = true;
- }
-
- private void resetGBC(GridBagConstraints gbc) {
- gbc.gridx = GridBagConstraints.RELATIVE;
- gbc.gridy = GridBagConstraints.RELATIVE;
- gbc.gridwidth = 1;
- gbc.gridheight = 1;
- gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.anchor = GridBagConstraints.CENTER;
- gbc.ipadx = 0;
- gbc.ipady = 0;
- gbc.weightx = 0.0;
- gbc.weighty = 0.0;
- }
-
- /**
- * This function can be overriden if different heading is required.
- */
- public String getPrompt(PasswordCallbackInfo info) {
- return "Enter the password for \"" + info.getName() + "\": ";
- }
-
- /**
- * This method does the work of displaying the dialog box,
- * extracting the information, and returning it.
- */
- private Password getPW(PasswordCallbackInfo info, boolean retry)
- throws PasswordCallback.GiveUpException {
- // These need to final so they can be accessed from action listeners
- final PWHolder pwHolder = new PWHolder();
- final JFrame f = new JFrame("Password Dialog");
- final JPasswordField pwField = new JPasswordField(15);
-
- ///////////////////////////////////////////////////
- // Panel
- ///////////////////////////////////////////////////
- JPanel contentPane = new JPanel(new GridBagLayout());
-
- contentPane.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
- GridBagConstraints c = new GridBagConstraints();
-
- ////////////////////////////////////////////////////
- // Labels
- ////////////////////////////////////////////////////
-
- if (retry) {
- JLabel warning = new JLabel("Password incorrect.");
-
- warning.setForeground(Color.red);
- resetGBC(c);
- c.anchor = GridBagConstraints.NORTHWEST;
- c.gridwidth = GridBagConstraints.REMAINDER;
- // Setting this to NULL causes nasty Exception stack traces
- // to be printed, although the program still seems to work
- //warning.setHighlighter(null);
- contentPane.add(warning, c);
- }
-
- String prompt = getPrompt(info);
- JLabel label = new JLabel(prompt);
-
- label.setForeground(Color.black);
- // Setting this to NULL causes nasty Exception stack traces
- // to be printed, although the program still seems to work
- //label.setHighlighter(null);
- resetGBC(c);
- c.anchor = GridBagConstraints.NORTHWEST;
- c.gridwidth = GridBagConstraints.REMAINDER;
- contentPane.add(label, c);
-
- ///////////////////////////////////////////////////
- // Password text field
- ///////////////////////////////////////////////////
-
- // Listener for the text field
- ActionListener getPasswordListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- //input = (JPasswordField)e.getSource();
-
- // XXX!!! Change to char[] in JDK 1.2
- String pwString = pwField.getText();
-
- pwHolder.password = new Password(pwString.toCharArray());
- pwHolder.cancelled = false;
- f.dispose();
- }
- };
-
- // There is a bug in JPasswordField. The cursor is advanced by the
- // width of the character you type, but a '*' is echoed, so the
- // cursor does not stay lined up with the end of the text.
- // We use a monospaced font to workaround this.
-
- pwField.setFont(new Font("Monospaced", Font.PLAIN,
- pwField.getFont().getSize()));
- pwField.setEchoChar('*');
- pwField.addActionListener(getPasswordListener);
- resetGBC(c);
- c.anchor = GridBagConstraints.CENTER;
- c.fill = GridBagConstraints.NONE;
- c.insets = new Insets(16, 0, 0, 0);
- c.gridwidth = GridBagConstraints.REMAINDER;
- //c.gridy++;
- contentPane.add(pwField, c);
-
- ///////////////////////////////////////////////////
- // Cancel button
- ///////////////////////////////////////////////////
-
- JPanel buttonPanel = new JPanel(new GridBagLayout());
-
- JButton ok = new JButton(" OK ");
-
- ok.addActionListener(getPasswordListener);
- resetGBC(c);
- c.fill = GridBagConstraints.NONE;
- c.anchor = GridBagConstraints.CENTER;
- c.gridheight = GridBagConstraints.REMAINDER;
- c.insets = new Insets(10, 0, 0, 4);
- buttonPanel.add(ok, c);
-
- JButton cancel = new JButton("Cancel");
- ActionListener buttonListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- pwHolder.cancelled = true;
- f.dispose();
- }
- };
-
- cancel.addActionListener(buttonListener);
- resetGBC(c);
- c.fill = GridBagConstraints.NONE;
- c.anchor = GridBagConstraints.CENTER;
- c.insets = new Insets(10, 4, 0, 0);
- c.gridheight = GridBagConstraints.REMAINDER;
- c.gridwidth = GridBagConstraints.REMAINDER;
- buttonPanel.add(cancel, c);
-
- resetGBC(c);
- c.fill = GridBagConstraints.NONE;
- c.anchor = GridBagConstraints.CENTER;
- c.gridwidth = GridBagConstraints.REMAINDER;
- c.gridheight = GridBagConstraints.REMAINDER;
- c.insets = new Insets(0, 0, 0, 0);
- contentPane.add(buttonPanel, c);
-
- ///////////////////////////////////////////////////
- // Create modal dialog
- ///////////////////////////////////////////////////
- JDialog d = new JDialog(f, "Fedora Certificate System", true);
-
- WindowListener windowListener = new WindowAdapter() {
- public void windowOpened(WindowEvent e) {
- pwField.requestFocus();
- }
- };
-
- d.addWindowListener(windowListener);
-
- d.setContentPane(contentPane);
- d.pack();
- Dimension screenSize = d.getToolkit().getScreenSize();
- Dimension paneSize = d.getSize();
-
- d.setLocation((screenSize.width - paneSize.width) / 2,
- (screenSize.height - paneSize.height) / 2);
- d.getRootPane().setDefaultButton(ok);
-
- // toFront seems to cause the dialog to go blank on unix!
- //d.toFront();
-
- d.show();
-
- ///////////////////////////////////////////////////
- // Return results
- ///////////////////////////////////////////////////
- if (pwHolder.cancelled) {
- throw new PasswordCallback.GiveUpException();
- }
-
- return pwHolder.password;
- }
-
- // Test program
- public static void main(String args[]) {
- try {
- CryptoManager manager;
-
- CryptoManager.InitializationValues iv = new
- CryptoManager.InitializationValues(args[0]);
-
- CryptoManager.initialize(iv);
- manager = CryptoManager.getInstance();
-
- CryptoToken tok = manager.getInternalKeyStorageToken();
-
- tok.login(new JDialogPasswordCallback());
- System.out.println("Logged in!!!");
- System.exit(0);
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(-1);
- }
- }
-}