View Javadoc

1   package org.eparapher.rcp.wizards;
2   
3   import java.security.Key;
4   import java.security.KeyStoreException;
5   import java.security.NoSuchAlgorithmException;
6   import java.security.UnrecoverableKeyException;
7   
8   import org.apache.log4j.Logger;
9   import org.eclipse.jface.viewers.IStructuredSelection;
10  import org.eclipse.jface.wizard.Wizard;
11  import org.eclipse.ui.INewWizard;
12  import org.eclipse.ui.IWorkbench;
13  import org.eclipse.ui.IWorkbenchWindow;
14  import org.eparapher.core.EParapherManager;
15  import org.eparapher.core.crypto.EPKeystoreManager;
16  import org.eparapher.core.crypto.KeystoreEntry;
17  import org.eparapher.core.crypto.keystore.IUserKeystore;
18  import org.eparapher.rcp.EPReferences;
19  import org.eparapher.rcp.tools.eParapherTools;
20  
21  public class ImportKeysCertificatesWizard extends Wizard implements INewWizard {
22  
23  	private static Logger log = Logger.getLogger(NewCertificateWizard.class);
24  
25  	/** The window */
26  	private IWorkbenchWindow window;
27  	
28  	private ImportKeysCertificatesWizardPageOne   one;
29  	private ImportKeysCertificatesWizardPageTwo   two;
30  	//private ImportKeysCertificatesWizardPageThree three;
31  	
32  	//private ImportParameters cmssignatureparams;
33  
34  	public ImportKeysCertificatesWizard() {
35  		super();
36  		setWindowTitle("Import Keys and/or Certificates");
37  		setNeedsProgressMonitor(true);
38  	}
39  	
40  	public void init(IWorkbench workbench, IStructuredSelection selection) {
41  		window = workbench.getActiveWorkbenchWindow();
42  	}
43  	
44  
45  	public void addPages() {
46  
47  		one   = new ImportKeysCertificatesWizardPageOne();
48  		two   = new ImportKeysCertificatesWizardPageTwo();
49  		//three = new ImportKeysCertificatesWizardPageThree();
50  		
51  		addPage(one);
52  		addPage(two);
53  		//addPage(three);
54  
55  	}
56  	@Override
57  	public boolean performFinish() {
58  		
59  		IUserKeystore userKeystore = EPKeystoreManager.getInstance().getUserkeystore();
60  		
61  		if (one.isCertChainFromCSR()) {
62              KeystoreEntry[] kse2import = two.getKeystoreEntries();
63              for (KeystoreEntry keystoreEntry : kse2import) {
64              	//Verify (Paranoid) if alias is still here
65              	if (userKeystore.containsAlias(keystoreEntry.getKeystoreAlias())) {
66              		try {
67              			String alias = keystoreEntry.getKeystoreAlias();
68              			char[] privkeysecret = null;
69              	        //Ask the user for the Private Key Password
70              	        if ( !EPKeystoreManager.isCAPICOMUsed() && !EPKeystoreManager.isPKCS11Used() && !EPKeystoreManager.isPKCS12Used()  ) {
71              	            String sSecret = EParapherManager.getInstance().getUI().askUserKeystoreSecret(false, true, alias);
72              	            if ( sSecret == null || sSecret.equals("") ) {
73              	                String msg = "User cancel private key PIN/Passphrase for " + alias;
74              	                log.info(msg);
75              	                eParapherTools.errorMessage(msg);
76              	                return false;
77              	            } else {
78              	                privkeysecret = sSecret.toCharArray();
79              	            }
80              	        }
81              	        
82                          // Put the private key
83                          Key privkey = userKeystore.getKeystore().getKey(alias, privkeysecret);
84                          userKeystore.getKeystore().setKeyEntry(alias, privkey, privkeysecret, keystoreEntry.getCertificateChain());
85                          userKeystore.saveKeyStore();
86                          log.info("Certificate for alias " + alias + " has been changed. (issued by : " + keystoreEntry.getCertificateChain()[0].getIssuerDN().getName() + " )" );
87                          EPReferences.getInstance().getUsercertview().refreshView();
88                          if (EPReferences.getInstance().getTrustcertview()!=null)
89                            EPReferences.getInstance().getTrustcertview().refreshView();
90                              
91  					} catch (UnrecoverableKeyException e) {
92  					    log.error("Error while importing a certificate from csr.",e);
93  					} catch (KeyStoreException e) {
94                          log.error("Error while importing a certificate from csr.",e);
95  					} catch (NoSuchAlgorithmException e) {
96                          log.error("Error while importing a certificate from csr.",e);
97  					}
98              		
99              	}
100 			}
101 		}
102 		return true;
103 	}
104 
105 }