package org.openstack.atlas.ca.gui; import org.openstack.atlas.ca.gui.utils.BytesList; import java.net.MalformedURLException; import org.openstack.atlas.util.ca.primitives.bcextenders.HackedProviderAccessor; import org.openstack.atlas.util.ca.util.StaticHelpers; import java.security.spec.InvalidKeySpecException; import java.util.Date; import org.bouncycastle.jce.provider.X509CertificateObject; import java.io.UnsupportedEncodingException; import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateParsingException; import java.security.cert.X509Certificate; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import org.bouncycastle.jce.PKCS10CertificationRequest; import org.bouncycastle.jce.provider.JCERSAPrivateCrtKey; import org.openstack.atlas.util.ca.primitives.RsaConst; import org.openstack.atlas.util.ca.PemUtils; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.math.BigInteger; import java.security.GeneralSecurityException; import java.security.cert.CertificateException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import javax.swing.JFileChooser; import org.openstack.atlas.util.ca.StringUtils; import org.openstack.atlas.ca.gui.utils.ButtonGroupMapper; import org.openstack.atlas.util.ca.RSAKeyUtils; import org.openstack.atlas.util.ca.exceptions.ConversionException; import org.openstack.atlas.util.ca.exceptions.NoSuchAlgorithmException; import org.openstack.atlas.util.ca.exceptions.PemException; import org.openstack.atlas.util.ca.exceptions.RsaException; import static org.openstack.atlas.util.ca.StringUtils.getEST; import org.openstack.atlas.util.ca.CertUtils; import org.openstack.atlas.util.ca.CsrUtils; import org.openstack.atlas.util.ca.exceptions.NotAnX509CertificateException; import org.openstack.atlas.ca.gui.utils.CaTextPane; import org.openstack.atlas.util.ca.primitives.PemBlock; import org.openstack.atlas.util.ca.zeus.ErrorEntry; import org.openstack.atlas.util.ca.zeus.ZeusCrtFile; import org.openstack.atlas.util.ca.util.X509BuiltPath; import org.openstack.atlas.util.ca.util.X509Chainer; import org.openstack.atlas.util.ca.util.X509Map; import org.openstack.atlas.util.ca.util.X509MapValue; import org.openstack.atlas.util.ca.util.X509PathBuilder; import org.openstack.atlas.util.ca.util.X509Inspector; import org.openstack.atlas.util.ca.exceptions.X509PathBuildException; import org.openstack.atlas.util.ca.exceptions.X509ReaderException; import org.openstack.atlas.util.ca.zeus.ZeusUtils; import org.openstack.atlas.util.ca.util.X509ReaderWriter; import org.openstack.atlas.util.ca.util.fileio.RsaFileUtils; import static org.openstack.atlas.ca.gui.utils.GuiConst.*; public class CaFrame extends javax.swing.JFrame { private static final long ONE_DAY_MILLIS_LONG = 24 * 60 * 60 * 1000; private static final double ONE_DAY_MILLIS_DOUBLE = (double) 24 * 60 * 60 * 100; static { RsaConst.init(); } public CaFrame() { initComponents(); userInit(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { appTabs = new javax.swing.JTabbedPane(); keyGenTab = new javax.swing.JPanel(); rsaGenPanel = new javax.swing.JPanel(); jLabel10 = new javax.swing.JLabel(); keySizeTextField = new javax.swing.JTextField(); setKeyFileButton = new javax.swing.JButton(); keyFN1 = new javax.swing.JTextField(); genKeyButton = new javax.swing.JButton(); csrGenTab = new javax.swing.JPanel(); csrSubjectPanel = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); ouTextField = new javax.swing.JTextField(); oTextField = new javax.swing.JTextField(); lTextField = new javax.swing.JTextField(); stTextField = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); cnTextField = new javax.swing.JTextField(); cTextField = new javax.swing.JTextField(); csrOptionsPanel = new javax.swing.JPanel(); csrFnButton1 = new javax.swing.JButton(); csrFN1 = new javax.swing.JTextField(); keyFnButton1 = new javax.swing.JButton(); keyFN2 = new javax.swing.JTextField(); GenerateCsrButton = new javax.swing.JButton(); caCheckBox = new javax.swing.JCheckBox(); lsRSAPanel = new javax.swing.JPanel(); saveRsaRadio = new javax.swing.JRadioButton(); loadRsaRadio = new javax.swing.JRadioButton(); jLabel8 = new javax.swing.JLabel(); newCsrKeySizeTextField = new javax.swing.JTextField(); jLabel9 = new javax.swing.JLabel(); csrSigningTab = new javax.swing.JPanel(); CSRSigningPanel = new javax.swing.JPanel(); caFilesPanel = new javax.swing.JPanel(); caCertButton = new javax.swing.JButton(); caKeyFNButton = new javax.swing.JButton(); caCertFN = new javax.swing.JTextField(); caKeyFN = new javax.swing.JTextField(); x509OptionsPanel = new javax.swing.JPanel(); notBeforeDaysTextField = new javax.swing.JTextField(); jLabel11 = new javax.swing.JLabel(); isSerialNumberSpecified = new javax.swing.JCheckBox(); serialTextField = new javax.swing.JTextField(); csrButton2 = new javax.swing.JButton(); csrFN2 = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); setOutputCrtFileButton = new javax.swing.JButton(); certOutFN = new javax.swing.JTextField(); jLabel24 = new javax.swing.JLabel(); notAfterDaysTextField = new javax.swing.JTextField(); signCSRButton = new javax.swing.JButton(); selfSignCA = new javax.swing.JCheckBox(); verifyPanel = new javax.swing.JPanel(); verifyKeyCertPanel = new javax.swing.JPanel(); vkcKeyButton = new javax.swing.JButton(); vkcKeyFN = new javax.swing.JTextField(); vkcCertButton = new javax.swing.JButton(); vkcCertFN = new javax.swing.JTextField(); verifyKeyAndCertButton = new javax.swing.JButton(); keycertandchainPanel = new javax.swing.JPanel(); setParentCertButton = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); issuerCertFN = new javax.swing.JTextField(); subjectCertFN = new javax.swing.JTextField(); verifyIssuerAndSubjectCertButton = new javax.swing.JButton(); verifyKeyCrtPanel = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); keyText = new javax.swing.JTextPane(); jLabel13 = new javax.swing.JLabel(); clearKeyButton = new javax.swing.JButton(); verifyKeyCertChain = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); chainText = new javax.swing.JTextPane(); jScrollPane4 = new javax.swing.JScrollPane(); certText = new javax.swing.JTextPane(); jLabel14 = new javax.swing.JLabel(); clearCertButton = new javax.swing.JButton(); jLabel15 = new javax.swing.JLabel(); clearChainButton = new javax.swing.JButton(); jLabel21 = new javax.swing.JLabel(); PKIXValidationRadio = new javax.swing.JRadioButton(); lbaasValidationRadio = new javax.swing.JRadioButton(); showZcfExceptionsCheckBox = new javax.swing.JCheckBox(); crtPathTab = new javax.swing.JPanel(); loadX509MapsBorder = new javax.swing.JPanel(); jLabel16 = new javax.swing.JLabel(); crtsLoadedCountTextField = new javax.swing.JTextField(); jLabel17 = new javax.swing.JLabel(); crtMapCountTextField = new javax.swing.JTextField(); loadCrtPathCrtsButton = new javax.swing.JButton(); loadCrtPathMapButton = new javax.swing.JButton(); clearCertPathCrtsButton = new javax.swing.JButton(); clearCrtPathMapButton = new javax.swing.JButton(); setDirWalkButton = new javax.swing.JButton(); crtLoadBaseDir = new javax.swing.JTextField(); jLabel18 = new javax.swing.JLabel(); crtChainerCountTextField = new javax.swing.JTextField(); loadChainerButton = new javax.swing.JButton(); clearChainerButton = new javax.swing.JButton(); crtPathFN = new javax.swing.JTextField(); crtPathCrtFileButton = new javax.swing.JButton(); buildNieveChainButton = new javax.swing.JButton(); jLabel19 = new javax.swing.JLabel(); crtsInRootCAs = new javax.swing.JTextField(); loadRootCAsButton = new javax.swing.JButton(); clearRootCAsButton = new javax.swing.JButton(); jLabel20 = new javax.swing.JLabel(); crtsInImds = new javax.swing.JTextField(); loadImdsButton = new javax.swing.JButton(); clearImdsButton = new javax.swing.JButton(); buildPXIXPathButton = new javax.swing.JButton(); clearCrtPathFNButton = new javax.swing.JButton(); clearLoadBaseDirNameButton = new javax.swing.JButton(); displayRootImdHashCodes = new javax.swing.JButton(); displayCrtHashCodeButton = new javax.swing.JButton(); CrtPathMessageBorder = new javax.swing.JPanel(); jScrollPane5 = new javax.swing.JScrollPane(); crtPathMessagesPane = new javax.swing.JTextPane(); clearCrtPathMessagesButton = new javax.swing.JButton(); urlTab = new javax.swing.JPanel(); urlPanel = new javax.swing.JPanel(); jLabel22 = new javax.swing.JLabel(); urlBarTextField = new javax.swing.JTextField(); fetchServerCrtsButton = new javax.swing.JButton(); debugTab = new javax.swing.JPanel(); debugPanel = new javax.swing.JPanel(); clearDebugButton = new javax.swing.JButton(); debugStateButton = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); debugMessagesPane = new javax.swing.JTextPane(); setMysteryFileButton = new javax.swing.JButton(); mysteryFN = new javax.swing.JTextField(); identifyFileButton = new javax.swing.JButton(); MultiParseFileButton = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); invokeGC = new javax.swing.JButton(); displayMemory = new javax.swing.JButton(); wastBytesButton = new javax.swing.JButton(); wasteBytesTextField = new javax.swing.JTextField(); freeWatedBytesButton = new javax.swing.JButton(); jLabel23 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Silly Certificate Authority Toy"); appTabs.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); appTabs.setName("caTabPan"); // NOI18N rsaGenPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Rsa Options")); jLabel10.setText("Key Size"); keySizeTextField.setText("2048"); setKeyFileButton.setText("Set Rsa Key File"); setKeyFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { setKeyFileButtonActionPerformed(evt); } }); genKeyButton.setText("Generate RSA Key Pair"); genKeyButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { genKeyButtonActionPerformed(evt); } }); javax.swing.GroupLayout rsaGenPanelLayout = new javax.swing.GroupLayout(rsaGenPanel); rsaGenPanel.setLayout(rsaGenPanelLayout); rsaGenPanelLayout.setHorizontalGroup( rsaGenPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(rsaGenPanelLayout.createSequentialGroup() .addGroup(rsaGenPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(rsaGenPanelLayout.createSequentialGroup() .addComponent(jLabel10) .addGap(4, 4, 4) .addComponent(keySizeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(rsaGenPanelLayout.createSequentialGroup() .addGroup(rsaGenPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(genKeyButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(setKeyFileButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 215, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(keyFN1, javax.swing.GroupLayout.DEFAULT_SIZE, 451, Short.MAX_VALUE))) .addContainerGap()) ); rsaGenPanelLayout.setVerticalGroup( rsaGenPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(rsaGenPanelLayout.createSequentialGroup() .addGroup(rsaGenPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel10) .addComponent(keySizeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(rsaGenPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(setKeyFileButton) .addComponent(keyFN1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(genKeyButton)) ); javax.swing.GroupLayout keyGenTabLayout = new javax.swing.GroupLayout(keyGenTab); keyGenTab.setLayout(keyGenTabLayout); keyGenTabLayout.setHorizontalGroup( keyGenTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(keyGenTabLayout.createSequentialGroup() .addContainerGap() .addComponent(rsaGenPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(592, Short.MAX_VALUE)) ); keyGenTabLayout.setVerticalGroup( keyGenTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(keyGenTabLayout.createSequentialGroup() .addContainerGap() .addComponent(rsaGenPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(698, Short.MAX_VALUE)) ); appTabs.addTab("Key Generation", keyGenTab); csrSubjectPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledBorder("CSR Subject"))); jLabel1.setText("Country"); jLabel2.setText("State"); jLabel3.setText("Locality"); jLabel4.setText("Organization"); jLabel5.setText("Organizational Unit"); jLabel6.setText("Common Name"); cnTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cnTextFieldActionPerformed(evt); } }); javax.swing.GroupLayout csrSubjectPanelLayout = new javax.swing.GroupLayout(csrSubjectPanel); csrSubjectPanel.setLayout(csrSubjectPanelLayout); csrSubjectPanelLayout.setHorizontalGroup( csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrSubjectPanelLayout.createSequentialGroup() .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel5) .addComponent(jLabel4) .addComponent(jLabel3) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel6) .addComponent(jLabel1)) .addGap(3, 3, 3) .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(cTextField) .addComponent(cnTextField) .addComponent(stTextField) .addComponent(lTextField) .addComponent(oTextField) .addComponent(ouTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 559, Short.MAX_VALUE))) ); csrSubjectPanelLayout.setVerticalGroup( csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrSubjectPanelLayout.createSequentialGroup() .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(cTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(stTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(lTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(oTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(ouTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrSubjectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel6) .addComponent(cnTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(20, 20, 20)) ); csrOptionsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("CSR options")); csrFnButton1.setText("Set CSR filename"); csrFnButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { csrFnButton1ActionPerformed(evt); } }); keyFnButton1.setText("Set Key filename"); keyFnButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { keyFnButton1ActionPerformed(evt); } }); GenerateCsrButton.setText("Generate CSR"); GenerateCsrButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { GenerateCsrButtonActionPerformed(evt); } }); caCheckBox.setText("Cert will be a CA"); lsRSAPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Rsa Key")); saveRsaRadio.setSelected(true); saveRsaRadio.setText("<html>Generate new private RSA key during CSR generation<small> (Save key in <span style=\"color:red;\">PEM</span> format)</small></html>"); loadRsaRadio.setText("<html>Use existing private RSA key to generate CSR<small> (loads key in <span style=\"color: red;\">PEM</small> format)</html>"); jLabel8.setText("Key Size"); newCsrKeySizeTextField.setText("2048"); jLabel9.setText("<html><small><span style=\"color: blue\">(Required if generating a new key)</span></small></html>"); javax.swing.GroupLayout lsRSAPanelLayout = new javax.swing.GroupLayout(lsRSAPanel); lsRSAPanel.setLayout(lsRSAPanelLayout); lsRSAPanelLayout.setHorizontalGroup( lsRSAPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(lsRSAPanelLayout.createSequentialGroup() .addGroup(lsRSAPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(loadRsaRadio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(saveRsaRadio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(lsRSAPanelLayout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(lsRSAPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(newCsrKeySizeTextField)))) .addContainerGap(246, Short.MAX_VALUE)) ); lsRSAPanelLayout.setVerticalGroup( lsRSAPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(lsRSAPanelLayout.createSequentialGroup() .addComponent(saveRsaRadio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(loadRsaRadio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(lsRSAPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(newCsrKeySizeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(46, Short.MAX_VALUE)) ); javax.swing.GroupLayout csrOptionsPanelLayout = new javax.swing.GroupLayout(csrOptionsPanel); csrOptionsPanel.setLayout(csrOptionsPanelLayout); csrOptionsPanelLayout.setHorizontalGroup( csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrOptionsPanelLayout.createSequentialGroup() .addGroup(csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrOptionsPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(lsRSAPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(caCheckBox) .addGroup(csrOptionsPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(GenerateCsrButton)) .addGroup(csrOptionsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(csrFnButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 312, Short.MAX_VALUE) .addComponent(keyFnButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 312, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(keyFN2) .addComponent(csrFN1, javax.swing.GroupLayout.PREFERRED_SIZE, 447, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap()) ); csrOptionsPanelLayout.setVerticalGroup( csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrOptionsPanelLayout.createSequentialGroup() .addComponent(caCheckBox) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lsRSAPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(GenerateCsrButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(csrFnButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(csrFN1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(csrOptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(keyFnButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(keyFN2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(56, Short.MAX_VALUE)) ); javax.swing.GroupLayout csrGenTabLayout = new javax.swing.GroupLayout(csrGenTab); csrGenTab.setLayout(csrGenTabLayout); csrGenTabLayout.setHorizontalGroup( csrGenTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrGenTabLayout.createSequentialGroup() .addContainerGap() .addGroup(csrGenTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(csrOptionsPanel, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(csrSubjectPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 734, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(487, Short.MAX_VALUE)) ); csrGenTabLayout.setVerticalGroup( csrGenTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrGenTabLayout.createSequentialGroup() .addContainerGap() .addComponent(csrSubjectPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(csrOptionsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(164, Short.MAX_VALUE)) ); appTabs.addTab("CSR Generation", csrGenTab); CSRSigningPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Sign Csr")); caFilesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Certificate Authority Files")); caCertButton.setText("set CA Cert File"); caCertButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { caCertButtonActionPerformed(evt); } }); caKeyFNButton.setText("set CA Key File"); caKeyFNButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { caKeyFNButtonActionPerformed(evt); } }); javax.swing.GroupLayout caFilesPanelLayout = new javax.swing.GroupLayout(caFilesPanel); caFilesPanel.setLayout(caFilesPanelLayout); caFilesPanelLayout.setHorizontalGroup( caFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(caFilesPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(caFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(caKeyFNButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(caCertButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(caFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(caKeyFN, javax.swing.GroupLayout.DEFAULT_SIZE, 528, Short.MAX_VALUE) .addComponent(caCertFN, javax.swing.GroupLayout.DEFAULT_SIZE, 528, Short.MAX_VALUE)) .addContainerGap()) ); caFilesPanelLayout.setVerticalGroup( caFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(caFilesPanelLayout.createSequentialGroup() .addGroup(caFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(caCertButton) .addComponent(caCertFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(caFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(caKeyFNButton) .addComponent(caKeyFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) ); x509OptionsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("X509 Options")); notBeforeDaysTextField.setText("0"); jLabel11.setText("NotBefore Days Offset"); isSerialNumberSpecified.setText("Specify Serial Number"); csrButton2.setText("set CSR file"); csrButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { csrButton2ActionPerformed(evt); } }); jLabel12.setText("<html><small>(leave unchecked to generate serial number <span style=\"color: blue;\">automatically</span>)</small></html> "); setOutputCrtFileButton.setText("Set Output CRT File"); setOutputCrtFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { setOutputCrtFileButtonActionPerformed(evt); } }); jLabel24.setText("NotAfter Days Offset"); notAfterDaysTextField.setText("365"); javax.swing.GroupLayout x509OptionsPanelLayout = new javax.swing.GroupLayout(x509OptionsPanel); x509OptionsPanel.setLayout(x509OptionsPanelLayout); x509OptionsPanelLayout.setHorizontalGroup( x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(x509OptionsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(isSerialNumberSpecified, javax.swing.GroupLayout.PREFERRED_SIZE, 167, Short.MAX_VALUE) .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING)) .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(setOutputCrtFileButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(csrButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(serialTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 500, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(x509OptionsPanelLayout.createSequentialGroup() .addComponent(notBeforeDaysTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(30, 30, 30) .addComponent(jLabel24) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(notAfterDaysTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(csrFN2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 506, Short.MAX_VALUE) .addComponent(certOutFN, javax.swing.GroupLayout.DEFAULT_SIZE, 506, Short.MAX_VALUE)) .addContainerGap()) ); x509OptionsPanelLayout.setVerticalGroup( x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(x509OptionsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(notBeforeDaysTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel11) .addComponent(jLabel24) .addComponent(notAfterDaysTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(isSerialNumberSpecified) .addComponent(serialTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(csrFN2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(csrButton2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(x509OptionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(setOutputCrtFileButton) .addComponent(certOutFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(21, Short.MAX_VALUE)) ); signCSRButton.setText("Sign CSR into x509 certificate"); signCSRButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { signCSRButtonActionPerformed(evt); } }); selfSignCA.setText("Self Sign csr and create CA Certificate"); javax.swing.GroupLayout CSRSigningPanelLayout = new javax.swing.GroupLayout(CSRSigningPanel); CSRSigningPanel.setLayout(CSRSigningPanelLayout); CSRSigningPanelLayout.setHorizontalGroup( CSRSigningPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CSRSigningPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(CSRSigningPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(caFilesPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(CSRSigningPanelLayout.createSequentialGroup() .addComponent(signCSRButton, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(selfSignCA, javax.swing.GroupLayout.PREFERRED_SIZE, 392, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(x509OptionsPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); CSRSigningPanelLayout.setVerticalGroup( CSRSigningPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CSRSigningPanelLayout.createSequentialGroup() .addComponent(x509OptionsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(caFilesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(CSRSigningPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(signCSRButton) .addComponent(selfSignCA)) .addContainerGap(130, Short.MAX_VALUE)) ); javax.swing.GroupLayout csrSigningTabLayout = new javax.swing.GroupLayout(csrSigningTab); csrSigningTab.setLayout(csrSigningTabLayout); csrSigningTabLayout.setHorizontalGroup( csrSigningTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrSigningTabLayout.createSequentialGroup() .addContainerGap() .addComponent(CSRSigningPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(528, Short.MAX_VALUE)) ); csrSigningTabLayout.setVerticalGroup( csrSigningTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(csrSigningTabLayout.createSequentialGroup() .addContainerGap() .addComponent(CSRSigningPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(321, Short.MAX_VALUE)) ); appTabs.addTab("CSR Signing", csrSigningTab); verifyKeyCertPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Key And Cert Verify")); vkcKeyButton.setText("Set Key File"); vkcKeyButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { vkcKeyButtonActionPerformed(evt); } }); vkcCertButton.setText("Set Cert File"); vkcCertButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { vkcCertButtonActionPerformed(evt); } }); verifyKeyAndCertButton.setText("Verify Key And Cert"); verifyKeyAndCertButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { verifyKeyAndCertButtonActionPerformed(evt); } }); javax.swing.GroupLayout verifyKeyCertPanelLayout = new javax.swing.GroupLayout(verifyKeyCertPanel); verifyKeyCertPanel.setLayout(verifyKeyCertPanelLayout); verifyKeyCertPanelLayout.setHorizontalGroup( verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCertPanelLayout.createSequentialGroup() .addGroup(verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCertPanelLayout.createSequentialGroup() .addGroup(verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(vkcCertButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(vkcKeyButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(vkcCertFN) .addComponent(vkcKeyFN, javax.swing.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE))) .addComponent(verifyKeyAndCertButton, javax.swing.GroupLayout.PREFERRED_SIZE, 378, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(62, Short.MAX_VALUE)) ); verifyKeyCertPanelLayout.setVerticalGroup( verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCertPanelLayout.createSequentialGroup() .addGroup(verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(vkcKeyButton) .addComponent(vkcKeyFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(verifyKeyCertPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(vkcCertButton) .addComponent(vkcCertFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(verifyKeyAndCertButton) .addContainerGap(15, Short.MAX_VALUE)) ); keycertandchainPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Verify Issueing Cert and Subject Chain Cert")); setParentCertButton.setText("Set Issuer Cert"); setParentCertButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { setParentCertButtonActionPerformed(evt); } }); jButton1.setText("Set Subject Cert"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); verifyIssuerAndSubjectCertButton.setText("Verify Issuer and Subject Cert"); verifyIssuerAndSubjectCertButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { verifyIssuerAndSubjectCertButtonActionPerformed(evt); } }); javax.swing.GroupLayout keycertandchainPanelLayout = new javax.swing.GroupLayout(keycertandchainPanel); keycertandchainPanel.setLayout(keycertandchainPanelLayout); keycertandchainPanelLayout.setHorizontalGroup( keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(keycertandchainPanelLayout.createSequentialGroup() .addGroup(keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(keycertandchainPanelLayout.createSequentialGroup() .addGroup(keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(setParentCertButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 185, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(subjectCertFN) .addComponent(issuerCertFN, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE))) .addComponent(verifyIssuerAndSubjectCertButton, javax.swing.GroupLayout.PREFERRED_SIZE, 368, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(115, Short.MAX_VALUE)) ); keycertandchainPanelLayout.setVerticalGroup( keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(keycertandchainPanelLayout.createSequentialGroup() .addGroup(keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(setParentCertButton) .addComponent(issuerCertFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(keycertandchainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton1) .addComponent(subjectCertFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE) .addComponent(verifyIssuerAndSubjectCertButton) .addContainerGap()) ); verifyKeyCrtPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Verify Key Cert and Chain")); keyText.setBackground(new java.awt.Color(0, 0, 0)); keyText.setFont(new java.awt.Font("Monospaced", 1, 8)); keyText.setForeground(new java.awt.Color(0, 255, 0)); jScrollPane2.setViewportView(keyText); jLabel13.setText("Key"); clearKeyButton.setText("Clear"); clearKeyButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearKeyButtonActionPerformed(evt); } }); verifyKeyCertChain.setText("Verify"); verifyKeyCertChain.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { verifyKeyCertChainActionPerformed(evt); } }); chainText.setBackground(new java.awt.Color(0, 0, 0)); chainText.setFont(new java.awt.Font("Monospaced", 1, 8)); chainText.setForeground(new java.awt.Color(0, 255, 0)); jScrollPane3.setViewportView(chainText); certText.setBackground(new java.awt.Color(0, 0, 0)); certText.setFont(new java.awt.Font("Monospaced", 1, 8)); certText.setForeground(new java.awt.Color(0, 255, 0)); jScrollPane4.setViewportView(certText); jLabel14.setText("Cert"); clearCertButton.setText("Clear"); clearCertButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearCertButtonActionPerformed(evt); } }); jLabel15.setText("Chain"); clearChainButton.setText("Clear"); clearChainButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearChainButtonActionPerformed(evt); } }); jLabel21.setText("<html><small><span style=\"color:blue\">(be sure to add your roots via the </span>Crt Path<span style=\"color:blue\"> tab)</span></small></html>\n "); PKIXValidationRadio.setSelected(true); PKIXValidationRadio.setText("Use PKIX validation"); lbaasValidationRadio.setText("USE Lbaas validation"); showZcfExceptionsCheckBox.setText("Show Exceptions"); javax.swing.GroupLayout verifyKeyCrtPanelLayout = new javax.swing.GroupLayout(verifyKeyCrtPanel); verifyKeyCrtPanel.setLayout(verifyKeyCrtPanelLayout); verifyKeyCrtPanelLayout.setHorizontalGroup( verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addComponent(jLabel13) .addGap(18, 18, 18) .addComponent(clearKeyButton, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addGap(5, 5, 5) .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 356, Short.MAX_VALUE)) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addComponent(jLabel14) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(clearCertButton, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addComponent(jLabel15) .addGap(18, 18, 18) .addComponent(clearChainButton, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)))) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addComponent(verifyKeyCertChain, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 271, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(showZcfExceptionsCheckBox, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(26, 26, 26) .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(lbaasValidationRadio, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(PKIXValidationRadio, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 253, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap()) ); verifyKeyCrtPanelLayout.setVerticalGroup( verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel13) .addComponent(clearKeyButton) .addComponent(jLabel14) .addComponent(clearCertButton) .addComponent(jLabel15) .addComponent(clearChainButton)) .addGap(12, 12, 12) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyKeyCrtPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(verifyKeyCertChain) .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(showZcfExceptionsCheckBox)) .addGroup(verifyKeyCrtPanelLayout.createSequentialGroup() .addComponent(PKIXValidationRadio) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lbaasValidationRadio))) .addContainerGap(12, Short.MAX_VALUE)) ); javax.swing.GroupLayout verifyPanelLayout = new javax.swing.GroupLayout(verifyPanel); verifyPanel.setLayout(verifyPanelLayout); verifyPanelLayout.setHorizontalGroup( verifyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(verifyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyPanelLayout.createSequentialGroup() .addComponent(keycertandchainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(518, 518, 518)) .addGroup(verifyPanelLayout.createSequentialGroup() .addComponent(verifyKeyCertPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(verifyPanelLayout.createSequentialGroup() .addComponent(verifyKeyCrtPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()))) ); verifyPanelLayout.setVerticalGroup( verifyPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(verifyPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(verifyKeyCertPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(keycertandchainPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(verifyKeyCrtPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(48, Short.MAX_VALUE)) ); appTabs.addTab("Verification", verifyPanel); loadX509MapsBorder.setBorder(javax.swing.BorderFactory.createTitledBorder("LoadX509Maps")); jLabel16.setText("Crts Loaded"); crtsLoadedCountTextField.setEditable(false); jLabel17.setText("Crts in Map"); crtMapCountTextField.setEditable(false); loadCrtPathCrtsButton.setText("Load"); loadCrtPathCrtsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadCrtPathCrtsButtonActionPerformed(evt); } }); loadCrtPathMapButton.setText("Load"); loadCrtPathMapButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadCrtPathMapButtonActionPerformed(evt); } }); clearCertPathCrtsButton.setText("Clear"); clearCertPathCrtsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearCertPathCrtsButtonActionPerformed(evt); } }); clearCrtPathMapButton.setText("Clear"); clearCrtPathMapButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearCrtPathMapButtonActionPerformed(evt); } }); setDirWalkButton.setText("Set Base Dir for Crt Load"); setDirWalkButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { setDirWalkButtonActionPerformed(evt); } }); jLabel18.setText("Crts In Chainer"); crtChainerCountTextField.setEditable(false); loadChainerButton.setText("Load"); loadChainerButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadChainerButtonActionPerformed(evt); } }); clearChainerButton.setText("Clear"); clearChainerButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearChainerButtonActionPerformed(evt); } }); crtPathCrtFileButton.setText("Set Crt File"); crtPathCrtFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { crtPathCrtFileButtonActionPerformed(evt); } }); buildNieveChainButton.setText("Build Nieve Chain"); buildNieveChainButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buildNieveChainButtonActionPerformed(evt); } }); jLabel19.setText("Crts in RootCAs"); crtsInRootCAs.setEditable(false); loadRootCAsButton.setText("Load"); loadRootCAsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadRootCAsButtonActionPerformed(evt); } }); clearRootCAsButton.setText("Clear"); clearRootCAsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearRootCAsButtonActionPerformed(evt); } }); jLabel20.setText("Crts in Intermediate"); crtsInImds.setEditable(false); loadImdsButton.setText("Load"); loadImdsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadImdsButtonActionPerformed(evt); } }); clearImdsButton.setText("Clear"); clearImdsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearImdsButtonActionPerformed(evt); } }); buildPXIXPathButton.setText("Build Pkix Chain"); buildPXIXPathButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buildPXIXPathButtonActionPerformed(evt); } }); clearCrtPathFNButton.setText("Clear"); clearCrtPathFNButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearCrtPathFNButtonActionPerformed(evt); } }); clearLoadBaseDirNameButton.setText("Clear"); clearLoadBaseDirNameButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearLoadBaseDirNameButtonActionPerformed(evt); } }); displayRootImdHashCodes.setText("Display x509 hashcodes"); displayRootImdHashCodes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { displayRootImdHashCodesActionPerformed(evt); } }); displayCrtHashCodeButton.setText("Display Crt HashCode"); displayCrtHashCodeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { displayCrtHashCodeButtonActionPerformed(evt); } }); javax.swing.GroupLayout loadX509MapsBorderLayout = new javax.swing.GroupLayout(loadX509MapsBorder); loadX509MapsBorder.setLayout(loadX509MapsBorderLayout); loadX509MapsBorderLayout.setHorizontalGroup( loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addContainerGap() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(buildNieveChainButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(crtPathCrtFileButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(setDirWalkButton, javax.swing.GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(buildPXIXPathButton, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE) .addComponent(clearLoadBaseDirNameButton, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE) .addComponent(clearCrtPathFNButton, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(crtLoadBaseDir) .addComponent(crtPathFN, javax.swing.GroupLayout.DEFAULT_SIZE, 751, Short.MAX_VALUE))) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jLabel17, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel16, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(crtMapCountTextField) .addComponent(crtsLoadedCountTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE))) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGap(12, 12, 12) .addComponent(displayRootImdHashCodes, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(loadCrtPathCrtsButton, javax.swing.GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE) .addComponent(loadCrtPathMapButton, javax.swing.GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(clearCertPathCrtsButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(clearCrtPathMapButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))) .addComponent(displayCrtHashCodeButton, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE)) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(crtChainerCountTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(loadChainerButton, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(clearChainerButton, javax.swing.GroupLayout.DEFAULT_SIZE, 197, Short.MAX_VALUE)) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(crtsInRootCAs, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(loadRootCAsButton, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(clearRootCAsButton, javax.swing.GroupLayout.DEFAULT_SIZE, 197, Short.MAX_VALUE)))) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(crtsInImds, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(loadImdsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 194, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(clearImdsButton, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE))))) .addContainerGap()) ); loadX509MapsBorderLayout.setVerticalGroup( loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addContainerGap() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel16) .addComponent(crtsLoadedCountTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel17)) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(loadX509MapsBorderLayout.createSequentialGroup() .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(clearCertPathCrtsButton) .addComponent(loadCrtPathCrtsButton) .addComponent(jLabel18) .addComponent(crtChainerCountTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(loadChainerButton) .addComponent(clearChainerButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(clearCrtPathMapButton) .addComponent(jLabel19) .addComponent(crtsInRootCAs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(loadRootCAsButton) .addComponent(clearRootCAsButton)) .addComponent(loadCrtPathMapButton))) .addComponent(crtMapCountTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(clearImdsButton) .addComponent(jLabel20) .addComponent(crtsInImds, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(loadImdsButton)) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(displayRootImdHashCodes) .addComponent(displayCrtHashCodeButton))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buildNieveChainButton) .addComponent(buildPXIXPathButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(crtPathFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(crtPathCrtFileButton) .addComponent(clearCrtPathFNButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(loadX509MapsBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(setDirWalkButton) .addComponent(crtLoadBaseDir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(clearLoadBaseDirNameButton)) .addContainerGap()) ); CrtPathMessageBorder.setBorder(javax.swing.BorderFactory.createTitledBorder("Crt Path Messages")); crtPathMessagesPane.setBackground(new java.awt.Color(0, 0, 0)); crtPathMessagesPane.setEditable(false); crtPathMessagesPane.setFont(new java.awt.Font("Monospaced", 1, 12)); crtPathMessagesPane.setForeground(new java.awt.Color(0, 255, 0)); jScrollPane5.setViewportView(crtPathMessagesPane); clearCrtPathMessagesButton.setText("Clear"); clearCrtPathMessagesButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearCrtPathMessagesButtonActionPerformed(evt); } }); javax.swing.GroupLayout CrtPathMessageBorderLayout = new javax.swing.GroupLayout(CrtPathMessageBorder); CrtPathMessageBorder.setLayout(CrtPathMessageBorderLayout); CrtPathMessageBorderLayout.setHorizontalGroup( CrtPathMessageBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CrtPathMessageBorderLayout.createSequentialGroup() .addContainerGap() .addGroup(CrtPathMessageBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 1240, Short.MAX_VALUE) .addComponent(clearCrtPathMessagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); CrtPathMessageBorderLayout.setVerticalGroup( CrtPathMessageBorderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CrtPathMessageBorderLayout.createSequentialGroup() .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 331, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(clearCrtPathMessagesButton) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout crtPathTabLayout = new javax.swing.GroupLayout(crtPathTab); crtPathTab.setLayout(crtPathTabLayout); crtPathTabLayout.setHorizontalGroup( crtPathTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, crtPathTabLayout.createSequentialGroup() .addContainerGap() .addGroup(crtPathTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(CrtPathMessageBorder, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(loadX509MapsBorder, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); crtPathTabLayout.setVerticalGroup( crtPathTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(crtPathTabLayout.createSequentialGroup() .addContainerGap() .addComponent(loadX509MapsBorder, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(CrtPathMessageBorder, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(113, Short.MAX_VALUE)) ); appTabs.addTab("Crt Path", crtPathTab); urlPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Url Options")); jLabel22.setText("URL"); fetchServerCrtsButton.setText("Fetch X509Certs"); fetchServerCrtsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fetchServerCrtsButtonActionPerformed(evt); } }); javax.swing.GroupLayout urlPanelLayout = new javax.swing.GroupLayout(urlPanel); urlPanel.setLayout(urlPanelLayout); urlPanelLayout.setHorizontalGroup( urlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(urlPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(urlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(fetchServerCrtsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(urlPanelLayout.createSequentialGroup() .addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(urlBarTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 509, Short.MAX_VALUE))) .addContainerGap()) ); urlPanelLayout.setVerticalGroup( urlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(urlPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(urlPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel22) .addComponent(urlBarTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(fetchServerCrtsButton) .addContainerGap(215, Short.MAX_VALUE)) ); javax.swing.GroupLayout urlTabLayout = new javax.swing.GroupLayout(urlTab); urlTab.setLayout(urlTabLayout); urlTabLayout.setHorizontalGroup( urlTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(urlTabLayout.createSequentialGroup() .addContainerGap() .addComponent(urlPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(648, Short.MAX_VALUE)) ); urlTabLayout.setVerticalGroup( urlTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(urlTabLayout.createSequentialGroup() .addContainerGap() .addComponent(urlPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(507, Short.MAX_VALUE)) ); appTabs.addTab("URLs", urlTab); debugPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Debug Messages")); clearDebugButton.setText("Clear Messages"); clearDebugButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { clearDebugButtonActionPerformed(evt); } }); debugStateButton.setText("Show App State"); debugStateButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { debugStateButtonActionPerformed(evt); } }); debugMessagesPane.setBackground(new java.awt.Color(0, 0, 0)); debugMessagesPane.setEditable(false); debugMessagesPane.setFont(new java.awt.Font("Monospaced", 1, 14)); debugMessagesPane.setForeground(new java.awt.Color(0, 255, 0)); jScrollPane1.setViewportView(debugMessagesPane); setMysteryFileButton.setText("Set Mystery File"); setMysteryFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { setMysteryFileButtonActionPerformed(evt); } }); identifyFileButton.setText("Identify Mystery file"); identifyFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { identifyFileButtonActionPerformed(evt); } }); MultiParseFileButton.setText("MultiParse Mystery File"); MultiParseFileButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MultiParseFileButtonActionPerformed(evt); } }); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("JVM Panel")); invokeGC.setText("Attempt Garbage Collection"); invokeGC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { invokeGCActionPerformed(evt); } }); displayMemory.setText("Display Memory"); displayMemory.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { displayMemoryActionPerformed(evt); } }); wastBytesButton.setText("Waste Bytes"); wastBytesButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { wastBytesButtonActionPerformed(evt); } }); freeWatedBytesButton.setText("Free Wasted Bytes"); freeWatedBytesButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { freeWatedBytesButtonActionPerformed(evt); } }); jLabel23.setText("Bytes to wast"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(displayMemory, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(invokeGC, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(53, 53, 53) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(freeWatedBytesButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(wastBytesButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(11, 11, 11) .addComponent(wasteBytesTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel23) .addContainerGap(477, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(invokeGC) .addComponent(wastBytesButton) .addComponent(wasteBytesTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel23)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(displayMemory) .addComponent(freeWatedBytesButton))) ); javax.swing.GroupLayout debugPanelLayout = new javax.swing.GroupLayout(debugPanel); debugPanel.setLayout(debugPanelLayout); debugPanelLayout.setHorizontalGroup( debugPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(debugPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(debugPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(debugPanelLayout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) .addGroup(debugPanelLayout.createSequentialGroup() .addGroup(debugPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1240, Short.MAX_VALUE) .addGroup(debugPanelLayout.createSequentialGroup() .addComponent(setMysteryFileButton, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(mysteryFN, javax.swing.GroupLayout.DEFAULT_SIZE, 1037, Short.MAX_VALUE))) .addContainerGap()) .addGroup(debugPanelLayout.createSequentialGroup() .addComponent(clearDebugButton, javax.swing.GroupLayout.DEFAULT_SIZE, 291, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(debugStateButton, javax.swing.GroupLayout.PREFERRED_SIZE, 274, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(identifyFileButton, javax.swing.GroupLayout.PREFERRED_SIZE, 256, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(MultiParseFileButton, javax.swing.GroupLayout.PREFERRED_SIZE, 293, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(108, 108, 108)))) ); debugPanelLayout.setVerticalGroup( debugPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(debugPanelLayout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 491, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(debugPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(setMysteryFileButton) .addComponent(mysteryFN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(debugPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(clearDebugButton) .addComponent(debugStateButton) .addComponent(identifyFileButton) .addComponent(MultiParseFileButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(24, Short.MAX_VALUE)) ); javax.swing.GroupLayout debugTabLayout = new javax.swing.GroupLayout(debugTab); debugTab.setLayout(debugTabLayout); debugTabLayout.setHorizontalGroup( debugTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(debugTabLayout.createSequentialGroup() .addContainerGap() .addComponent(debugPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); debugTabLayout.setVerticalGroup( debugTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(debugTabLayout.createSequentialGroup() .addContainerGap() .addComponent(debugPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(106, Short.MAX_VALUE)) ); appTabs.addTab("Debug", debugTab); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(appTabs, javax.swing.GroupLayout.DEFAULT_SIZE, 1306, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(24, 24, 24) .addComponent(appTabs, javax.swing.GroupLayout.DEFAULT_SIZE, 873, Short.MAX_VALUE)) ); setBounds(64, 64, 1332, 926); }// </editor-fold>//GEN-END:initComponents private void identifyFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_identifyFileButtonActionPerformed String fmt; String msg; Object obj; byte[] pem; File file; long flen; int i; String mysteryFileName; mysteryFileName = RsaFileUtils.expandUser(mysteryFN.getText()); try { pem = RsaFileUtils.readFileToByteArray(mysteryFileName); } catch (IOException ex) { fmt = "Unable to read from \"%s\"\n%s\n"; msg = String.format(fmt, mysteryFileName, getEST(ex)); logError("%s", msg); return; } fmt = "Read %d bytes\n%s\nAttempting to parse\n"; msg = String.format(fmt, pem.length, new String(pem)); logDbg("%s", msg); try { obj = PemUtils.fromPem(pem); printKnownPemObject(obj); } catch (PemException ex) { fmt = "Error decoding pem object\n%s\n"; msg = String.format(fmt, getEST(ex)); logError("%s", msg); return; } }//GEN-LAST:event_identifyFileButtonActionPerformed private void printKnownPemObject(Object obj) { String fmt; String msg; if (obj == null) { logError("Can't decode a null object"); return; } fmt = "Object parsed to %s\n"; msg = String.format(fmt, obj.getClass().getCanonicalName()); logDbg(fmt, msg); if (obj instanceof KeyPair) { KeyPair kp = (KeyPair) obj; PrivateKey priv = kp.getPrivate(); PublicKey pub = kp.getPublic(); String pubName = pub.getClass().getCanonicalName(); String privName = priv.getClass().getCanonicalName(); logDbg("Privkey type = %s\n", privName); logDbg("Publickey type = %s\n", pubName); logDbg("modSize = %d\n", RSAKeyUtils.modSize(kp)); logDbg("%s", RSAKeyUtils.objToString(kp)); } else if (obj instanceof PKCS10CertificationRequest) { PKCS10CertificationRequest req = (PKCS10CertificationRequest) obj; msg = String.format(fmt, CsrUtils.csrToStr(req)); logDbg("%s\n", msg); } else if (obj instanceof X509Certificate) { X509Certificate cert = (X509Certificate) obj; String certStr = CertUtils.certToStr(cert); logDbg("%s", certStr); } } private void setMysteryFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setMysteryFileButtonActionPerformed setFileName(mysteryFN); }//GEN-LAST:event_setMysteryFileButtonActionPerformed private void debugStateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_debugStateButtonActionPerformed String msg = getStateStr(); this.logDbg(msg); }//GEN-LAST:event_debugStateButtonActionPerformed private void clearDebugButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearDebugButtonActionPerformed debugMessagesPane.setText(""); }//GEN-LAST:event_clearDebugButtonActionPerformed private void csrButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_csrButton2ActionPerformed setFileName(csrFN2); }//GEN-LAST:event_csrButton2ActionPerformed private void caKeyFNButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_caKeyFNButtonActionPerformed setFileName(caKeyFN); }//GEN-LAST:event_caKeyFNButtonActionPerformed private void caCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_caCertButtonActionPerformed setFileName(caCertFN); }//GEN-LAST:event_caCertButtonActionPerformed private void GenerateCsrButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GenerateCsrButtonActionPerformed StringBuilder sb = new StringBuilder(SB_INIT_CAPACITY); List<String> rdn = new ArrayList<String>(); String tmpStr; String fmt; String msg; String keyFile = RsaFileUtils.expandUser(keyFN2.getText()); String csrFile = RsaFileUtils.expandUser(csrFN1.getText()); String subjStr; KeyPair kp; int keySize; byte[] csrBytes; byte[] keyBytes; PKCS10CertificationRequest csr; switch (rsaMapper.getSelectedId()) { case LOAD_RSA: logDbg("Loading key from file \"%s\"\n", keyFile); try { keyBytes = RsaFileUtils.readFileToByteArray(keyFile); kp = getKeyPairFromBytes(keyBytes); } catch (PemException ex) { logError("Error decoding keypair\n%s\n", getEST(ex)); return; } catch (IOException ex) { logError("Error reading from %s\n%s\n", keyFile, getEST(ex)); return; } catch (InvalidKeySpecException ex) { logError("Error got invalidKeyException from %s\n%s\n", keyFile, getEST(ex)); return; } break; default: logDbg("Generating fresh key\n"); try { keySize = Integer.parseInt(newCsrKeySizeTextField.getText()); } catch (NumberFormatException ex) { tmpStr = newCsrKeySizeTextField.getText(); fmt = "Error converting %s to an integer\n%s\n"; msg = String.format(fmt, tmpStr, getEST(ex)); logError("%s\n", msg); return; } try { kp = RSAKeyUtils.genKeyPair(keySize); } catch (RsaException ex) { fmt = "Error generating %d bit key\n%s\n"; msg = String.format(fmt, keySize, getEST(ex)); logError("%s\n", msg); return; } try { logDbg("Writing key to pem format\n"); keyBytes = PemUtils.toPem(kp); logDbg("Saving key pem file to \"%s\"\n", keyFile); RsaFileUtils.writeFileFromByteArray(keyFile, keyBytes); } catch (IOException ex) { fmt = "Error saving private key to file \"%s\"\n%s"; msg = String.format(fmt, keyFile, getEST(ex)); logError("%s", msg); } catch (RsaException ex) { fmt = "Error converting Private key to pem format\n%s\n"; msg = String.format(fmt, getEST(ex)); logError("%s", msg); } break; } String C = cTextField.getText(); String ST = stTextField.getText(); String L = lTextField.getText(); String O = oTextField.getText(); String OU = ouTextField.getText(); String CN = cnTextField.getText(); if (!C.equals("")) { rdn.add(String.format("C=%s", C)); } if (!ST.equals("")) { rdn.add(String.format("ST=%s", ST)); } if (!L.equals("")) { rdn.add(String.format("L=%s", L)); } if (!O.equals("")) { rdn.add(String.format("O=%s", O)); } if (!OU.equals("")) { rdn.add(String.format("OU=%s", OU)); } if (!CN.equals("")) { rdn.add(String.format("CN=%s", CN)); } subjStr = StringUtils.joinString(rdn, ","); logDbg("Encoding subjectName as \"%s\"\n", subjStr); try { csr = CsrUtils.newCsr(subjStr, kp, caCheckBox.isSelected()); } catch (RsaException ex) { fmt = "Error generating csr\n%s\n"; msg = String.format(fmt, getEST(ex)); logError("%s", msg); return; } try { csrBytes = PemUtils.toPem(csr); } catch (PemException ex) { fmt = "Error converting csr to pem format\n%s\n"; logError(fmt, getEST(ex)); return; } try { RsaFileUtils.writeFileFromByteArray(csrFile, csrBytes); } catch (IOException ex) { fmt = "Error writing to file \"%s\"\n%s"; logError(fmt, csrFile, getEST(ex)); return; } logDbg("CSR writtent to file \"%s\"\n", csrFile); }//GEN-LAST:event_GenerateCsrButtonActionPerformed private void keyFnButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keyFnButton1ActionPerformed setFileName(keyFN2); }//GEN-LAST:event_keyFnButton1ActionPerformed private void csrFnButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_csrFnButton1ActionPerformed setFileName(csrFN1); }//GEN-LAST:event_csrFnButton1ActionPerformed private void cnTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cnTextFieldActionPerformed // TODO add your handling code here: }//GEN-LAST:event_cnTextFieldActionPerformed private void genKeyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_genKeyButtonActionPerformed byte pem[]; String msg; String fmt; int keySize; String keyFileName = RsaFileUtils.expandUser(keyFN1.getText()); KeyPair kp; FileWriter fw; try { keySize = Integer.parseInt(keySizeTextField.getText()); } catch (NumberFormatException ex) { fmt = "Error Converting \"%s\" to an integer\n"; msg = String.format(fmt, keySizeTextField.getText()); logError(msg); return; } try { kp = RSAKeyUtils.genKeyPair(keySize); } catch (RsaException ex) { logError(String.format("%s\n", getEST(ex))); return; } logDbg("new Key Generated\n%s\n", kp.toString()); try { pem = PemUtils.toPem(kp); } catch (PemException ex) { logError(String.format("%s\n", getEST(ex))); return; } logDbg("New Key generated\n%s\n", new String(pem)); try { RsaFileUtils.writeFileFromByteArray(keyFileName, pem); } catch (IOException ex) { fmt = "Error writing to \"%s\"\n%s\n"; msg = String.format(fmt, keyFileName, getEST(ex)); logError(msg); } logDbg("Key saved to file \"%s\"\n", keyFileName); }//GEN-LAST:event_genKeyButtonActionPerformed private void logException(Throwable ex) { String fmt = "Exception:\n%s\n"; String msg = String.format(fmt, getEST(ex)); logError(msg); } private void setKeyFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setKeyFileButtonActionPerformed setFileName(keyFN1); }//GEN-LAST:event_setKeyFileButtonActionPerformed private void signCSRButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_signCSRButtonActionPerformed String fmt; String msg; String caKeyFile = RsaFileUtils.expandUser(caKeyFN.getText()); String caCrtFile = RsaFileUtils.expandUser(caCertFN.getText()); String csrFile = RsaFileUtils.expandUser(csrFN2.getText()); String crtOutFile = RsaFileUtils.expandUser(certOutFN.getText()); X509Certificate crt; X509Certificate caCrt; BigInteger serial; PKCS10CertificationRequest req; KeyPair kp; Date notBeforeDays; Date notAfterDays; Date now = StaticHelpers.now(); byte[] caKeyBytes; byte[] caCrtBytes; byte[] csrBytes; byte[] crtBytes; // Self sign this CSR if (isSerialNumberSpecified.isSelected()) { try { serial = new BigInteger(serialTextField.getText()); } catch (NumberFormatException ex) { fmt = "Error converting %s to BigInteger\n"; fmt += " Assuming this was intentional and autogenerating serial num"; logDbg(fmt, serialTextField.getText()); serial = null; } } else { serial = null; } try { notBeforeDays = StaticHelpers.daysDelta(now, Double.parseDouble(notBeforeDaysTextField.getText())); } catch (NumberFormatException ex) { fmt = "%s could not be converted to a double\n%s\n"; logError(fmt, notBeforeDaysTextField.getText(), getEST(ex)); return; } try { notAfterDays = StaticHelpers.daysDelta(now, Double.parseDouble(notAfterDaysTextField.getText())); } catch (NumberFormatException ex) { fmt = "%s could not be converted to a double\n%s\n"; logError(fmt, notBeforeDaysTextField.getText(), getEST(ex)); return; } try { caKeyBytes = RsaFileUtils.readFileToByteArray(caKeyFile); } catch (IOException ex) { fmt = "Error reading caKey \"%s\"\n%s\n"; logError(fmt, caKeyFile, getEST(ex)); return; } try { kp = getKeyPairFromBytes(caKeyBytes); } catch (RsaException ex) { fmt = "Error translating data in \"%s\" to rsa key pair\n%s"; logError(fmt, caKeyFile, getEST(ex)); return; } catch (RuntimeException ex) { fmt = "Object from \"%s\" does not appear to be a valid key\n%s\n"; logError(fmt, caKeyFile, getEST(ex)); return; } catch (InvalidKeySpecException ex) { fmt = "InvalidKeySpecException when trying to decode KeyPair\n"; logError(fmt, caKeyFile, getEST(ex)); return; } try { csrBytes = RsaFileUtils.readFileToByteArray(csrFile); } catch (IOException ex) { fmt = "Error reading csr File \"%s\"\n%s\n"; logError(fmt, csrFile, getEST(ex)); return; } try { req = (PKCS10CertificationRequest) PemUtils.fromPem(csrBytes); } catch (RsaException ex) { fmt = "Error translating \"%s\" to CSR\n%s\n"; logError(fmt, csrFile, getEST(ex)); return; } catch (RuntimeException ex) { fmt = "Object from \"%s\" does not appear to be a valid csr\n%s\n"; logError(fmt, csrFile, getEST(ex)); return; } if (selfSignCA.isSelected()) { // Self Sign this CSR try { crt = CertUtils.selfSignCsrCA(req, kp, notBeforeDays, notAfterDays); } catch (RsaException ex) { fmt = "Error generating Certificate\n%s\n"; logError(fmt, getEST(ex)); return; } try { crtBytes = PemUtils.toPem(crt); } catch (PemException ex) { fmt = "Error encoding Cert to Pem\n%s\n"; logError(fmt, getEST(ex)); return; } try { RsaFileUtils.writeFileFromByteArray(crtOutFile, crtBytes); } catch (IOException ex) { fmt = "Error writing to \"%s\"\n%s\n"; logError(fmt, getEST(ex)); return; } logDbg("Wrote certificate to \"%s\"\n", crtOutFile); return; } else { try { caCrtBytes = RsaFileUtils.readFileToByteArray(caCrtFile); } catch (IOException ex) { fmt = "Error reading CA crt from \"%s\"\n%s\n"; logError(fmt, caCrtFile, getEST(ex)); return; } try { caCrt = (X509Certificate) PemUtils.fromPem(caCrtBytes); } catch (RsaException ex) { fmt = "Error translating \"%s\" to X509Certificate\n%s\n"; logError(fmt, caCrtFile, getEST(ex)); return; } catch (RuntimeException ex) { fmt = "Error data in \"%s\" does not appear to be a x509 certificate\n%s\n"; logError(fmt, caCrtFile, getEST(ex)); return; } try { crt = CertUtils.signCSR(req, kp, caCrt, notBeforeDays, notAfterDays, serial); } catch (RsaException ex) { logError("Error signing csr\n%s\n", getEST(ex)); return; } try { crtBytes = PemUtils.toPem(crt); } catch (PemException ex) { logError("Error converting x509 cert to pem format\n%s\n", getEST(ex)); return; } try { RsaFileUtils.writeFileFromByteArray(crtOutFile, crtBytes); } catch (IOException ex) { fmt = "Error saving certificate to file %s\n%s\n"; logError(fmt, crtOutFile, getEST(ex)); } logDbg("Cert saved to \"%s\"\n", crtOutFile); } }//GEN-LAST:event_signCSRButtonActionPerformed private void setOutputCrtFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setOutputCrtFileButtonActionPerformed setFileName(certOutFN); }//GEN-LAST:event_setOutputCrtFileButtonActionPerformed private void MultiParseFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MultiParseFileButtonActionPerformed List<PemBlock> pemBlocks; String fileName = RsaFileUtils.expandUser(mysteryFN.getText()); byte[] fileData; try { fileData = RsaFileUtils.readFileToByteArray(fileName); } catch (IOException ex) { logError("Error reading file %s\n%s\n", fileName, getEST(ex)); return; } pemBlocks = PemUtils.parseMultiPem(fileData); for (PemBlock pemBlock : pemBlocks) { String className; Object obj = pemBlock.getDecodedObject(); int lineNum = pemBlock.getLineNum(); className = (obj == null) ? "NULL" : obj.getClass().getCanonicalName(); try { String blockStr = new String(pemBlock.getPemData(), "US-ASCII"); logDbg("\n\"\"\"\n%s\n\"\"\"\n", blockStr); } catch (UnsupportedEncodingException ex) { logError("Could not decode to US-ASCII"); continue; } logDbg("Block starting at line %d decoded to object \"%s\"\n", lineNum, className); if (obj == null) { continue; } printKnownPemObject(obj); } }//GEN-LAST:event_MultiParseFileButtonActionPerformed private void vkcKeyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vkcKeyButtonActionPerformed setFileName(vkcKeyFN); }//GEN-LAST:event_vkcKeyButtonActionPerformed private void verifyKeyAndCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_verifyKeyAndCertButtonActionPerformed String keyFile; String certFile; byte[] keyPem; byte[] certPem; List<String> errors; keyFile = RsaFileUtils.expandUser(vkcKeyFN.getText()); certFile = RsaFileUtils.expandUser(vkcCertFN.getText()); try { keyPem = RsaFileUtils.readFileToByteArray(keyFile); } catch (IOException ex) { logError("Error reading key from \"%s\"\n%s\n", keyFile, getEST(ex)); return; } try { certPem = RsaFileUtils.readFileToByteArray(certFile); } catch (IOException ex) { logError("Error reading cert from \"%s\"\n%s\n", certFile, getEST(ex)); return; } errors = RSAKeyUtils.verifyKeyAndCert(keyPem, certPem); if (errors.size() > 0) { for (String error : errors) { logError("%s\n", error); } } else { logDbg("cert And Key Matched\n"); } }//GEN-LAST:event_verifyKeyAndCertButtonActionPerformed private void vkcCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vkcCertButtonActionPerformed setFileName(vkcCertFN); }//GEN-LAST:event_vkcCertButtonActionPerformed private void setParentCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setParentCertButtonActionPerformed setFileName(issuerCertFN); }//GEN-LAST:event_setParentCertButtonActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed setFileName(subjectCertFN); }//GEN-LAST:event_jButton1ActionPerformed private void verifyIssuerAndSubjectCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_verifyIssuerAndSubjectCertButtonActionPerformed String issuerFile; String subjectFile; List<ErrorEntry> errorList; byte[] issuerCertPem; byte[] subjectCertPem; issuerFile = RsaFileUtils.expandUser(issuerCertFN.getText()); subjectFile = RsaFileUtils.expandUser(subjectCertFN.getText()); try { issuerCertPem = RsaFileUtils.readFileToByteArray(issuerFile); } catch (IOException ex) { logError("Error reading Issuer Cert from \"%s\"\n%s\n", issuerFile, getEST(ex)); return; } try { subjectCertPem = RsaFileUtils.readFileToByteArray(subjectFile); } catch (IOException ex) { logError("Error reading Subject Cert from \"%s\"\n%s\n", subjectFile, getEST(ex)); return; } errorList = CertUtils.verifyIssuerAndSubjectCert(issuerCertPem, subjectCertPem); if (errorList.size() <= 0) { logDbg("Issuer and Subject Cert are valid\n"); } else { for (ErrorEntry errorEntry : errorList) { logError("%s\n", errorEntry.toString(true)); } } }//GEN-LAST:event_verifyIssuerAndSubjectCertButtonActionPerformed private void clearKeyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearKeyButtonActionPerformed keyText.setText(""); }//GEN-LAST:event_clearKeyButtonActionPerformed private void verifyKeyCertChainActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_verifyKeyCertChainActionPerformed String key = keyText.getText(); String crt = certText.getText(); String chain = chainText.getText(); boolean showException = showZcfExceptionsCheckBox.isSelected(); Set<X509CertificateObject> roots = new HashSet<X509CertificateObject>(); for (X509Certificate root : rootCAs) { roots.add((X509CertificateObject) root); } ZeusUtils zu = new ZeusUtils(roots); ZeusCrtFile zcf; boolean lbaasValidate = false; switch (validationMapper.getSelectedId()) { case LBAAS_VALIDATION: dbg.greenWrite("validation=%s\n", "lbaas"); lbaasValidate = true; break; case PKIX_VALIDATION: dbg.greenWrite("valudation=%s\n", "pkix"); lbaasValidate = false; break; } try { zcf = zu.buildZeusCrtFile(key, crt, chain, lbaasValidate); } catch (Exception ex) { logException(ex); return; } List<ErrorEntry> errors = zcf.getErrors(); if (!zcf.getErrors().isEmpty()) { int i; int last_i = errors.size() - 1; for (i = 0; i <= last_i; i++) { ErrorEntry error = errors.get(i); logError("Error %d of %d:\n%s\n\n", i, last_i, error.toString(showException)); } } if (!zcf.hasFatalErrors()) { String zkey = zcf.getPrivate_key(); String zcrt = zcf.getPublic_cert(); logDbg("No Errors\nZuesKey:\n%s\n\nZeusCrt:\n%s\n\n", zkey, zcrt); } }//GEN-LAST:event_verifyKeyCertChainActionPerformed private void clearCertButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearCertButtonActionPerformed certText.setText(""); }//GEN-LAST:event_clearCertButtonActionPerformed private void clearChainButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearChainButtonActionPerformed chainText.setText(""); }//GEN-LAST:event_clearChainButtonActionPerformed private void invokeGCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_invokeGCActionPerformed Runtime rt = Runtime.getRuntime(); rt.gc(); logDbg("Called Runtime.getRuntime().gc()\n"); }//GEN-LAST:event_invokeGCActionPerformed private void displayMemoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_displayMemoryActionPerformed Runtime rt = Runtime.getRuntime(); long freeMem = rt.freeMemory(); long totalMem = rt.totalMemory(); long maxMem = rt.maxMemory(); logDbg("displayMemoryClicked:\n"); logDbg(" freeMem = %d\n", freeMem); logDbg(" totalMem = %d\n", totalMem); logDbg(" maxMem = %d\n", maxMem); }//GEN-LAST:event_displayMemoryActionPerformed private void setDirWalkButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setDirWalkButtonActionPerformed setFileName(crtLoadBaseDir); }//GEN-LAST:event_setDirWalkButtonActionPerformed private void updateCrtPathTab() { crtsLoadedCountTextField.setText(String.format("%d", x509MapValList.size())); crtMapCountTextField.setText(String.format("%d", x509Map.values().size())); crtChainerCountTextField.setText(String.format("%d", x509Chainer.getX509Certs().size())); crtsInRootCAs.setText(String.format("%d", rootCAs.size())); crtsInImds.setText(String.format("%d", imds.size())); } private void loadCrtPathCrtsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadCrtPathCrtsButtonActionPerformed File dirWalkFiles = new File(RsaFileUtils.expandUser(crtLoadBaseDir.getText())); File singleCrtFile = new File(RsaFileUtils.expandUser(crtPathFN.getText())); try { List<File> files = RsaFileUtils.dirWalk(dirWalkFiles, null); files.add(singleCrtFile); List<X509MapValue> mapList = RsaFileUtils.readX509FilesToMapVals(files); x509MapValList.addAll(mapList); updateCrtPathTab(); return; } catch (Exception ex) { logException(ex); updateCrtPathTab(); } }//GEN-LAST:event_loadCrtPathCrtsButtonActionPerformed private void clearCertPathCrtsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearCertPathCrtsButtonActionPerformed x509MapValList = new ArrayList<X509MapValue>(); updateCrtPathTab(); }//GEN-LAST:event_clearCertPathCrtsButtonActionPerformed private void loadCrtPathMapButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadCrtPathMapButtonActionPerformed x509Map.putAll(x509MapValList); updateCrtPathTab(); }//GEN-LAST:event_loadCrtPathMapButtonActionPerformed private void clearCrtPathMapButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearCrtPathMapButtonActionPerformed x509Map.clear(); updateCrtPathTab(); }//GEN-LAST:event_clearCrtPathMapButtonActionPerformed private void loadChainerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadChainerButtonActionPerformed for (X509MapValue mapVal : x509MapValList) { X509Certificate x509obj = mapVal.getX509CertificateObject(); x509Chainer.getX509Certs().add(x509obj); } updateCrtPathTab(); }//GEN-LAST:event_loadChainerButtonActionPerformed private void clearChainerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearChainerButtonActionPerformed x509Chainer = new X509Chainer(); updateCrtPathTab(); }//GEN-LAST:event_clearChainerButtonActionPerformed private void crtPathCrtFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_crtPathCrtFileButtonActionPerformed setFileName(crtPathFN); updateCrtPathTab(); }//GEN-LAST:event_crtPathCrtFileButtonActionPerformed private X509Certificate readCrtPathFN() { File file = new File(crtPathFN.getText()); byte[] pemBytes; X509Certificate x509obj; try { pemBytes = RsaFileUtils.readFile(file); } catch (IOException ex) { pth.redWrite("Error reading file \"%s\" into byte array\n", file.getName()); pth.writeException(ex); return null; } try { x509obj = (X509Certificate) PemUtils.fromPem(pemBytes); } catch (PemException ex) { pth.redWrite("Error decodeing contents of \"%s\" to X509Certificate object", file.getName()); pth.writeException(ex); return null; } return x509obj; } private void displayChain(List<? extends X509Certificate> certs) { for (int i = 0; i < certs.size(); i++) { String pemString; X509Certificate x509obj; X509Inspector x509reader; X509Certificate curX509 = certs.get(i); try { x509reader = X509Inspector.newX509Inspector(curX509); } catch (CertificateException ex) { pth.redWrite("Error creating reader for crtPath[%d] Skipping\n", i); pth.writeException(ex); continue; } catch (NotAnX509CertificateException ex) { pth.redWrite("Skipping null object in crtPath[%d]", i); pth.writeException(ex); continue; } x509obj = x509reader.getX509CertificateObject(); try { pemString = PemUtils.toPemString(x509obj); } catch (PemException ex) { pemString = "UNABLE TO ENCODE PEM"; } String subjectName = x509reader.getSubjectName(); String issuerName = x509reader.getIssuerName(); pth.write("hashCode: %d\n", ((X509Certificate) x509obj).hashCode()); pth.write("Subject: %s\n", (subjectName == null) ? "null" : subjectName); pth.write("Issuer: %s\n", (issuerName == null) ? "null" : issuerName); pth.write("Serial: %s\n", x509reader.getSerial().toString(16)); pth.write("PubKeyMod: %s\n", x509reader.getPubModulus().toString(16)); pth.write("%s\n", pemString); Set<X509MapValue> resultSet = x509Map.getX509CertificateObject(x509obj); for (X509MapValue mapVal : resultSet) { pth.write("%s\n", mapVal); } pth.write("\n\n"); } } private void buildNieveChainButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buildNieveChainButtonActionPerformed X509Certificate x509obj = readCrtPathFN(); if (x509obj == null) { return; // The exception was already reported } X509Certificate x509; x509 = (X509Certificate) x509obj; List<X509Certificate> certs = x509Chainer.buildPath(x509); pth.greenWrite("Found %d crts\n\n", certs.size()); certs.add(0, x509); // Add the Users crt to the beginning of the chain to make things clearer displayChain(certs); }//GEN-LAST:event_buildNieveChainButtonActionPerformed private void clearCrtPathMessagesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearCrtPathMessagesButtonActionPerformed pth.clear(); }//GEN-LAST:event_clearCrtPathMessagesButtonActionPerformed private void loadRootCAsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadRootCAsButtonActionPerformed for (X509MapValue mapVal : x509MapValList) { X509Certificate x509obj = mapVal.getX509CertificateObject(); rootCAs.add(x509obj); } updateCrtPathTab(); }//GEN-LAST:event_loadRootCAsButtonActionPerformed private void clearRootCAsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearRootCAsButtonActionPerformed rootCAs = new HashSet<X509Certificate>(); updateCrtPathTab(); }//GEN-LAST:event_clearRootCAsButtonActionPerformed private void loadImdsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadImdsButtonActionPerformed for (X509MapValue mapVal : x509MapValList) { X509Certificate x509obj = mapVal.getX509CertificateObject(); imds.add(x509obj); } updateCrtPathTab(); }//GEN-LAST:event_loadImdsButtonActionPerformed private void clearImdsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearImdsButtonActionPerformed imds = new HashSet<X509Certificate>(); updateCrtPathTab(); }//GEN-LAST:event_clearImdsButtonActionPerformed private void displayX509CertificateHashCodes(String preMsg, List x509s) throws CertificateEncodingException, CertificateParsingException { X509CertificateObject x509obj; int hashCode; for (int i = 0; i < x509s.size(); i++) { Object obj = x509s.get(i); X509Inspector xr; if (obj instanceof X509CertificateObject) { x509obj = (X509CertificateObject) obj; hashCode = x509obj.hashCode(); try { xr = new X509Inspector(x509obj); } catch (NotAnX509CertificateException ex) { pth.redWrite("Skipping null object in crtPath[%d]", i); pth.writeException(ex); continue; } } else if (obj instanceof X509Certificate) { X509Certificate x509 = (X509Certificate) obj; try { xr = X509Inspector.newX509Inspector(x509); } catch (NotAnX509CertificateException ex) { pth.redWrite("Skipping null object in crtPath[%d]", i); pth.writeException(ex); continue; } x509obj = xr.getX509CertificateObject(); hashCode = x509.hashCode(); } else { String fmt = "Skipping crtPath[%d] could not cast to X509CertificateObject"; pth.redWrite(fmt, i); continue; } String subjName = (xr.getSubjectName() == null) ? "null" : xr.getSubjectName(); String issuerName = (xr.getIssuerName() == null) ? "null" : xr.getIssuerName(); pth.greenWrite("%s%10d= \"%s\" <-- \"%s\"\n", preMsg, hashCode, subjName, issuerName); } } private void buildPXIXPathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buildPXIXPathButtonActionPerformed X509PathBuilder<X509Certificate> pathBuilder = new X509PathBuilder<X509Certificate>(); X509BuiltPath<X509Certificate> builtPath; pathBuilder.getRootCAs().addAll(rootCAs); pathBuilder.getIntermediates().addAll(imds); X509Certificate userCrt = readCrtPathFN(); List<X509Certificate> x509objs; if (userCrt == null) { return; } try { builtPath = pathBuilder.buildPath(userCrt); } catch (X509PathBuildException ex) { pth.writeException(ex); return; } X509Certificate topCrt = builtPath.getRoot(); x509objs = builtPath.getPath(); pth.greenWrite(String.format("Found %d certs\n", x509objs.size())); displayChain(x509objs); pth.greenWrite("RootCA for this crt:\n"); x509objs = new ArrayList<X509Certificate>(); x509objs.add(topCrt); displayChain(x509objs); }//GEN-LAST:event_buildPXIXPathButtonActionPerformed private void clearCrtPathFNButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearCrtPathFNButtonActionPerformed crtPathFN.setText(""); }//GEN-LAST:event_clearCrtPathFNButtonActionPerformed private void clearLoadBaseDirNameButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearLoadBaseDirNameButtonActionPerformed crtLoadBaseDir.setText(""); }//GEN-LAST:event_clearLoadBaseDirNameButtonActionPerformed private void displayRootImdHashCodesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_displayRootImdHashCodesActionPerformed try { displayX509CertificateHashCodes("rootCAs:", new ArrayList<X509Certificate>(rootCAs)); displayX509CertificateHashCodes("intermediates:", new ArrayList<X509Certificate>(imds)); } catch (CertificateEncodingException ex) { pth.writeException(ex); return; } catch (CertificateParsingException ex) { pth.writeException(ex); return; } }//GEN-LAST:event_displayRootImdHashCodesActionPerformed private void displayCrtHashCodeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_displayCrtHashCodeButtonActionPerformed try { X509Certificate userCrt = readCrtPathFN(); ArrayList<X509Certificate> userCrtAsSingleList = new ArrayList<X509Certificate>(); if (userCrt != null) { userCrtAsSingleList.add(userCrt); } displayX509CertificateHashCodes("crt:", userCrtAsSingleList); } catch (CertificateEncodingException ex) { pth.writeException(ex); return; } catch (CertificateParsingException ex) { pth.writeException(ex); return; } }//GEN-LAST:event_displayCrtHashCodeButtonActionPerformed private void fetchServerCrtsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fetchServerCrtsButtonActionPerformed String url = urlBarTextField.getText(); List<X509CertificateObject> serverCrts; try { serverCrts = X509ReaderWriter.getX509CertificateObjectsFromSSLServer(url); } catch (X509ReaderException ex) { dbg.writeException(ex); return; } for (X509CertificateObject x509obj : serverCrts) { displayX509CertificateObject(x509obj); } }//GEN-LAST:event_fetchServerCrtsButtonActionPerformed private void freeWatedBytesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_freeWatedBytesButtonActionPerformed byteList.clear(); }//GEN-LAST:event_freeWatedBytesButtonActionPerformed private void wastBytesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_wastBytesButtonActionPerformed int nBytes; nop(); try { nBytes = Integer.parseInt(wasteBytesTextField.getText()); } catch (Exception ex) { dbg.redWrite("You didn't enter a number in the bytes to waste field\n"); return; } if (nBytes <= 0) { dbg.redWrite("Can't allocate negative bytes. Just use the Free Wasted bytes button\n"); return; } try { byteList.addFilledBytes(nBytes); } catch (Exception ex) { dbg.redWrite("Cause exception while trying to add wast %d bytes\n", nBytes); dbg.writeException(ex); return; } }//GEN-LAST:event_wastBytesButtonActionPerformed private void displayX509CertificateObject(X509CertificateObject x509obj) { try { X509Inspector xi = new X509Inspector(x509obj); String pem = PemUtils.toPemString(x509obj); BigInteger authIdSerial = xi.getAuthKeyIdSerial(); String authIdSerialStr = (authIdSerial == null) ? null : authIdSerial.toString(16); dbg.greenWrite("\n"); dbg.greenWrite("Subject: %s\n", xi.getSubjectName()); dbg.greenWrite("Issuer: %s\n", xi.getIssuerName()); dbg.greenWrite("Serial: %s\n", xi.getSerial().toString(16)); dbg.greenWrite("authKeyId = %s\n", xi.getAuthKeyId()); dbg.greenWrite("authDirName = %s\n", xi.getAuthKeyIdDirname()); dbg.greenWrite("authIdSerial: %s\n", authIdSerialStr); dbg.greenWrite("subjKeyId: %s\n", xi.getSubjKeyId()); dbg.greenWrite("ocspURI: %s\n", xi.getOCSPUri()); dbg.greenWrite("ocspCaUri: %s\n", xi.getOCSPCaUri()); dbg.greenWrite("%s\n", pem); } catch (PemException ex) { dbg.writeException(ex); } catch (NotAnX509CertificateException ex) { dbg.writeException(ex); } } private void userInit() { rsaMapper = new ButtonGroupMapper(); rsaMapper.add(loadRsaRadio, LOAD_RSA); rsaMapper.add(saveRsaRadio, SAVE_RSA); validationMapper = new ButtonGroupMapper(); validationMapper.add(PKIXValidationRadio, PKIX_VALIDATION); validationMapper.add(lbaasValidationRadio, LBAAS_VALIDATION); x509MapValList = new ArrayList<X509MapValue>(); x509Map = new X509Map(); x509Chainer = new X509Chainer(); dbg = new CaTextPane(debugMessagesPane); pth = new CaTextPane(crtPathMessagesPane); rootCAs = new HashSet<X509Certificate>(); imds = new HashSet<X509Certificate>(); byteList = new BytesList(); } private File chooseFilePopUp() { JFileChooser fc; int ret; File file = null; fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fc.setMultiSelectionEnabled(false); ret = fc.showSaveDialog(jLabel1); if (ret == JFileChooser.APPROVE_OPTION) { file = fc.getSelectedFile(); } return file; } // User click Set Csr file in CSR generator private void setFileName(javax.swing.JTextField jTextField) { File file = chooseFilePopUp(); if (file == null) { return; } jTextField.setText(file.getAbsolutePath()); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { CaFrame caFrame = new CaFrame(); caFrame.setVisible(true); List<String> el = new ArrayList<String>(); el.add("Errors will be in RED"); caFrame.logErrorList(el); caFrame.logDbg("Everything else will be green\n"); } }); } public void logDbg(String fmt, Object... objs) { dbg.write(fmt, objs); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel CSRSigningPanel; private javax.swing.JPanel CrtPathMessageBorder; private javax.swing.JButton GenerateCsrButton; private javax.swing.JButton MultiParseFileButton; private javax.swing.JRadioButton PKIXValidationRadio; private javax.swing.JTabbedPane appTabs; private javax.swing.JButton buildNieveChainButton; private javax.swing.JButton buildPXIXPathButton; private javax.swing.JTextField cTextField; private javax.swing.JButton caCertButton; private javax.swing.JTextField caCertFN; private javax.swing.JCheckBox caCheckBox; private javax.swing.JPanel caFilesPanel; private javax.swing.JTextField caKeyFN; private javax.swing.JButton caKeyFNButton; private javax.swing.JTextField certOutFN; private javax.swing.JTextPane certText; private javax.swing.JTextPane chainText; private javax.swing.JButton clearCertButton; private javax.swing.JButton clearCertPathCrtsButton; private javax.swing.JButton clearChainButton; private javax.swing.JButton clearChainerButton; private javax.swing.JButton clearCrtPathFNButton; private javax.swing.JButton clearCrtPathMapButton; private javax.swing.JButton clearCrtPathMessagesButton; private javax.swing.JButton clearDebugButton; private javax.swing.JButton clearImdsButton; private javax.swing.JButton clearKeyButton; private javax.swing.JButton clearLoadBaseDirNameButton; private javax.swing.JButton clearRootCAsButton; private javax.swing.JTextField cnTextField; private javax.swing.JTextField crtChainerCountTextField; private javax.swing.JTextField crtLoadBaseDir; private javax.swing.JTextField crtMapCountTextField; private javax.swing.JButton crtPathCrtFileButton; private javax.swing.JTextField crtPathFN; private javax.swing.JTextPane crtPathMessagesPane; private javax.swing.JPanel crtPathTab; private javax.swing.JTextField crtsInImds; private javax.swing.JTextField crtsInRootCAs; private javax.swing.JTextField crtsLoadedCountTextField; private javax.swing.JButton csrButton2; private javax.swing.JTextField csrFN1; private javax.swing.JTextField csrFN2; private javax.swing.JButton csrFnButton1; private javax.swing.JPanel csrGenTab; private javax.swing.JPanel csrOptionsPanel; private javax.swing.JPanel csrSigningTab; private javax.swing.JPanel csrSubjectPanel; private javax.swing.JTextPane debugMessagesPane; private javax.swing.JPanel debugPanel; private javax.swing.JButton debugStateButton; private javax.swing.JPanel debugTab; private javax.swing.JButton displayCrtHashCodeButton; private javax.swing.JButton displayMemory; private javax.swing.JButton displayRootImdHashCodes; private javax.swing.JButton fetchServerCrtsButton; private javax.swing.JButton freeWatedBytesButton; private javax.swing.JButton genKeyButton; private javax.swing.JButton identifyFileButton; private javax.swing.JButton invokeGC; private javax.swing.JCheckBox isSerialNumberSpecified; private javax.swing.JTextField issuerCertFN; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5; private javax.swing.JTextField keyFN1; private javax.swing.JTextField keyFN2; private javax.swing.JButton keyFnButton1; private javax.swing.JPanel keyGenTab; private javax.swing.JTextField keySizeTextField; private javax.swing.JTextPane keyText; private javax.swing.JPanel keycertandchainPanel; private javax.swing.JTextField lTextField; private javax.swing.JRadioButton lbaasValidationRadio; private javax.swing.JButton loadChainerButton; private javax.swing.JButton loadCrtPathCrtsButton; private javax.swing.JButton loadCrtPathMapButton; private javax.swing.JButton loadImdsButton; private javax.swing.JButton loadRootCAsButton; private javax.swing.JRadioButton loadRsaRadio; private javax.swing.JPanel loadX509MapsBorder; private javax.swing.JPanel lsRSAPanel; private javax.swing.JTextField mysteryFN; private javax.swing.JTextField newCsrKeySizeTextField; private javax.swing.JTextField notAfterDaysTextField; private javax.swing.JTextField notBeforeDaysTextField; private javax.swing.JTextField oTextField; private javax.swing.JTextField ouTextField; private javax.swing.JPanel rsaGenPanel; private javax.swing.JRadioButton saveRsaRadio; private javax.swing.JCheckBox selfSignCA; private javax.swing.JTextField serialTextField; private javax.swing.JButton setDirWalkButton; private javax.swing.JButton setKeyFileButton; private javax.swing.JButton setMysteryFileButton; private javax.swing.JButton setOutputCrtFileButton; private javax.swing.JButton setParentCertButton; private javax.swing.JCheckBox showZcfExceptionsCheckBox; private javax.swing.JButton signCSRButton; private javax.swing.JTextField stTextField; private javax.swing.JTextField subjectCertFN; private javax.swing.JTextField urlBarTextField; private javax.swing.JPanel urlPanel; private javax.swing.JPanel urlTab; private javax.swing.JButton verifyIssuerAndSubjectCertButton; private javax.swing.JButton verifyKeyAndCertButton; private javax.swing.JButton verifyKeyCertChain; private javax.swing.JPanel verifyKeyCertPanel; private javax.swing.JPanel verifyKeyCrtPanel; private javax.swing.JPanel verifyPanel; private javax.swing.JButton vkcCertButton; private javax.swing.JTextField vkcCertFN; private javax.swing.JButton vkcKeyButton; private javax.swing.JTextField vkcKeyFN; private javax.swing.JButton wastBytesButton; private javax.swing.JTextField wasteBytesTextField; private javax.swing.JPanel x509OptionsPanel; // End of variables declaration//GEN-END:variables private static final int SB_INIT_CAPACITY = 4096; private static final int MAX_FILESIZE = 1024 * 1024 * 2; private ButtonGroupMapper rsaMapper; private ButtonGroupMapper validationMapper; private List<X509MapValue> x509MapValList; private X509Map x509Map; private X509Chainer x509Chainer; private CaTextPane dbg; private CaTextPane pth; private Set<X509Certificate> rootCAs; private Set<X509Certificate> imds; private int nopCount = 0; private BytesList byteList; private void logError(String format, Object... args) { dbg.setRed(); logDbg(format, args); dbg.setGreen(); } private void logErrorList(List<String> el) { dbg.setRed(); for (String err : el) { logDbg(err + "\n"); } dbg.setGreen(); } private KeyPair getKeyPairFromBytes(byte[] pemBytes) throws PemException, InvalidKeySpecException { Object pemObj = PemUtils.fromPem(pemBytes); // Incase the object is returned as a JCERSAPrivateCrtKey instead of KeyPair if (pemObj instanceof JCERSAPrivateCrtKey) { pemObj = HackedProviderAccessor.newKeyPair((JCERSAPrivateCrtKey) pemObj); } KeyPair kp = (KeyPair) pemObj; return kp; } private String getStateStr() { StringBuilder sb = new StringBuilder(SB_INIT_CAPACITY); String fmt; String msg; String val; sb.append(String.format("Generate Key:\n")); val = StringUtils.displayParsedInt(keySizeTextField.getText()); sb.append(String.format("\tkeyGenSize=%s\n", val)); sb.append(String.format("\tkeyFile=\"%s\"\n", keyFN1.getText())); sb.append(String.format("\n")); sb.append(String.format("CSR Subject:\n")); sb.append(String.format("\tc=\"%s\"\n", cTextField.getText())); sb.append(String.format("\tst=\"%s\"\n", stTextField.getText())); sb.append(String.format("\tl=\"%s\"\n", lTextField.getText())); sb.append(String.format("\tou=\"%s\"\n", ouTextField.getText())); sb.append(String.format("\tcn=\"%s\"\n", cnTextField.getText())); sb.append(String.format("\n")); sb.append(String.format("\tkeyFile=\"%s\"\n", keyFN2.getText())); sb.append(String.format("\tCsrFile=\"%s\"\n", csrFN1.getText())); sb.append(String.format("Bytes in the wast buffer is %d\n", byteList.length())); fmt = "\tcsrKeySize = %s\n"; val = StringUtils.displayParsedInt(this.newCsrKeySizeTextField.getText()); msg = String.format(fmt, val); sb.append(msg); val = (caCheckBox.isSelected()) ? "True" : "False"; sb.append(String.format("\tcaCsr=%s\n", val)); switch (rsaMapper.getSelectedId()) { case LOAD_RSA: val = "loadRsa"; break; case SAVE_RSA: val = "saveRsa"; break; default: val = "Unknown"; break; } msg = String.format("\tload or save RSA set to %s\n", val); sb.append(msg); return sb.toString(); } private int nop() { int oldCount = nopCount; nopCount++; return oldCount; } private Date dayDelta(Date dateIn, int days) { return new Date(dateIn.getTime() + ((long) days) * ONE_DAY_MILLIS_LONG); } public static Date now() { return new Date(System.currentTimeMillis()); } public static Date daysFromDateOffset(Date base, int days) { return new Date(base.getTime() + days * ONE_DAY_MILLIS_LONG); } public static Date daysFromDateOffset(Date base, double days) { return new Date((long) (days * ONE_DAY_MILLIS_DOUBLE + (double) base.getTime())); } }