From 0872d2d8a64fd701776b272f49222428d8def07f Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Tue, 3 Nov 2015 14:38:34 +0100 Subject: initial commit --- .../moa/spss/util/CertStoreConverter.java | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java (limited to 'moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java') diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java new file mode 100644 index 0000000..0956617 --- /dev/null +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java @@ -0,0 +1,109 @@ +package at.gv.egovernment.moa.spss.util; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egovernment.moa.spss.server.logging.IaikLog; +import at.gv.egovernment.moa.spss.server.logging.TransactionId; +import iaik.pki.store.certstore.directory.DirectoryStoreException; +import iaik.pki.store.certstore.utils.DirectoryCertStoreConverter; + +public class CertStoreConverter { + + private static final Logger logger = LoggerFactory.getLogger(CertStoreConverter.class); + + public static boolean convert(String certStoreRoot, TransactionId transId) { + String certStoreSubjectDN = certStoreRoot + File.separator + "subjectdn"; + + logger.error("checking for new cert store format {} -> {}", certStoreRoot, certStoreSubjectDN); + + File certStoreDirectory = new File(certStoreRoot); + if (certStoreDirectory.isDirectory() && certStoreDirectory.exists()) { + + File file = new File(certStoreSubjectDN); + + if (file.isDirectory() && file.exists()) { + // Is new Format! + logger.error("Cert store is allready new format!"); + return false; + } else { + try { + logger.error( + "###########################################################################################"); + logger.error( + "###########################################################################################"); + logger.error("The certificate store @ {} will now be converted into the new format!", + certStoreDirectory.getAbsolutePath()); + + String backup = certStoreRoot; + + if (certStoreRoot.endsWith(File.separator)) { + backup = certStoreRoot.substring(0, certStoreRoot.length() - File.separator.length()); + } + + String timestamp = String.valueOf(System.currentTimeMillis()); + backup = backup + "_" + timestamp; + + logger.error("Creating a backup of the certstore @ {}", backup); + + File backupDirectory = new File(backup); + try { + FileUtils.copyDirectory(certStoreDirectory, backupDirectory); + } catch (IOException e) { + logger.error("Failed to create certstore backup!", e); + throw new RuntimeException("Failed to create certstore backup!", e); + } + + logger.error("deleting original certstore @ {}", certStoreRoot); + + try { + FileUtils.deleteDirectory(certStoreDirectory); + } catch (IOException e1) { + logger.error("Failed to delete old certstore!", e1); + throw new RuntimeException("Failed to delete old certstore!", e1); + } + certStoreDirectory.mkdir(); + + DirectoryCertStoreConverter directoryCertStoreConverter = new DirectoryCertStoreConverter(); + + try { + logger.error("running conversion of certstore @ {}", certStoreRoot); + directoryCertStoreConverter.convert(backupDirectory.getAbsolutePath(), + certStoreDirectory.getAbsolutePath(), true, false, + new IaikLog("DirectoryCertStoreConverter"), transId); + } catch (DirectoryStoreException e) { + logger.error("Failed to run conversion of old certstore!", e); + + try { + FileUtils.copyDirectory(backupDirectory, certStoreDirectory); + } catch (IOException e1) { + logger.error("!!!!Failed to restore original certstore!!!! CHECK LOGS", e1); + throw new RuntimeException("!!!!Failed to restore original certstore!!!! CHECK LOGS", e); + + } + throw new RuntimeException("Failed to run conversion of old certstore!", e); + } + + logger.error("Conversion of certstore succseeded"); + logger.error("Certstore in new format is located @ {}", certStoreDirectory.getAbsolutePath()); + logger.error("Backup of Certstore in old format is located @ {}", + certStoreDirectory.getAbsolutePath()); + } finally { + logger.error( + "###########################################################################################"); + logger.error( + "###########################################################################################"); + } + return true; + } + } else { + logger.error("Certstore does not exist yet"); + } + return false; + } + +} -- cgit v1.2.3