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()));
}
}