blob: 81b2e5c9bfc9884a5a56e710de58be795ede05a5 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2009-2010 The University of Manchester
*
* Modifications to the initial code base are copyright of their
* respective authors, or their employers as appropriate.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
******************************************************************************/
package net.sf.taverna.t2.workbench.ui.credentialmanager.password;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import net.sf.taverna.t2.security.credentialmanager.DistinguishedNameParser;
import uk.org.taverna.configuration.app.ApplicationConfiguration;
import net.sf.taverna.t2.security.credentialmanager.JavaTruststorePasswordProvider;
import net.sf.taverna.t2.security.credentialmanager.MasterPasswordProvider;
import net.sf.taverna.t2.workbench.ui.credentialmanager.GetMasterPasswordDialog;
import net.sf.taverna.t2.workbench.ui.credentialmanager.SetMasterPasswordDialog;
import net.sf.taverna.t2.workbench.ui.credentialmanager.WarnUserAboutJCEPolicyDialog;
/**
* A UI pop-up that asks user for a master password for Credential Manager.
*
* @author Alex Nenadic
* @author Stian Soiland-Reyes
*
*/
public class UIMasterPasswordProvider implements MasterPasswordProvider, JavaTruststorePasswordProvider {
private ApplicationConfiguration applicationConfiguration;
private DistinguishedNameParser dnParser;
@Override
public String getJavaTruststorePassword() {
if (GraphicsEnvironment.isHeadless()) {
return null;
}
GetMasterPasswordDialog getPasswordDialog = new GetMasterPasswordDialog(
"Credential Manager needs to copy certificates from Java truststore. "
+ "Please enter your password.");
getPasswordDialog.setLocationRelativeTo(null);
getPasswordDialog.setVisible(true);
String javaTruststorePassword = getPasswordDialog.getPassword();
return javaTruststorePassword;
}
@Override
public void setJavaTruststorePassword(String password) {
}
@Override
public String getMasterPassword(boolean firstTime) {
// Check if this Taverna run is headless (i.e. Taverna Server or Taverna
// from command line) - do not do anything here if it is as we do not
// want
// any windows popping up even if they could
if (GraphicsEnvironment.isHeadless()) {
return null;
}
// Pop up a warning about Java Cryptography Extension (JCE)
// Unlimited Strength Jurisdiction Policy
WarnUserAboutJCEPolicyDialog.warnUserAboutJCEPolicy(applicationConfiguration, dnParser);
if (firstTime) {
// Ask user to set the master password for Credential Manager (only
// the first time)
SetMasterPasswordDialog setPasswordDialog = new SetMasterPasswordDialog(
(JFrame) null, "Set master password", true,
"Set master password for Credential Manager");
setPasswordDialog.setLocationRelativeTo(null);
setPasswordDialog.setVisible(true);
return setPasswordDialog.getPassword();
} else {
// Ask user to provide a master password for Credential Manager
GetMasterPasswordDialog getPasswordDialog = new GetMasterPasswordDialog(
"Enter master password for Credential Manager");
getPasswordDialog.setLocationRelativeTo(null);
getPasswordDialog.setVisible(true);
return getPasswordDialog.getPassword();
}
}
@Override
public void setMasterPassword(String password) {
}
@Override
public int getProviderPriority() {
return 100;
}
/**
* Sets the applicationConfiguration.
*
* @param applicationConfiguration the new value of applicationConfiguration
*/
public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
this.applicationConfiguration = applicationConfiguration;
}
/**
* @param dnParser the dnParser to set
*/
public void setDistinguishedNameParser(DistinguishedNameParser dnParser) {
this.dnParser = dnParser;
}
}