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
26 private IWorkbenchWindow window;
27
28 private ImportKeysCertificatesWizardPageOne one;
29 private ImportKeysCertificatesWizardPageTwo two;
30
31
32
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
50
51 addPage(one);
52 addPage(two);
53
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
65 if (userKeystore.containsAlias(keystoreEntry.getKeystoreAlias())) {
66 try {
67 String alias = keystoreEntry.getKeystoreAlias();
68 char[] privkeysecret = null;
69
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
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 }