package com.dicarlo; import ietf.params.xml.ns.keyprov.pskc.BinaryDataType; import ietf.params.xml.ns.keyprov.pskc.DeviceInfoType; import ietf.params.xml.ns.keyprov.pskc.KeyContainerType; import ietf.params.xml.ns.keyprov.pskc.KeyDataType; import ietf.params.xml.ns.keyprov.pskc.KeyPackageType; import ietf.params.xml.ns.keyprov.pskc.KeyType; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.RandomAccessFile; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.SecureRandom; import java.security.spec.AlgorithmParameterSpec; import java.security.spec.PKCS8EncodedKeySpec; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import java.util.regex.Pattern; import javax.crypto.Cipher; import javax.crypto.CipherOutputStream; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import javax.imageio.ImageIO; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.BevelBorder; import javax.swing.border.LineBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.filechooser.FileFilter; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; import javax.xml.transform.stream.StreamSource; import org.apache.log4j.Logger; import org.dyno.visual.swing.layouts.Constraints; import org.dyno.visual.swing.layouts.GroupLayout; import org.dyno.visual.swing.layouts.Leading; import org.w3._2001._04.xmlenc_.EncryptedDataType; import com.sun.org.apache.xml.internal.security.utils.Base64; /* AUTHOR MARCO DI CARLO */ //VS4E -- DO NOT REMOVE THIS LINE! public class MainWindow extends JFrame implements ErrorCodes{ private static final long serialVersionUID = 1L; private static final Logger logger = Logger.getLogger("trace"); private ResourceBundle rb = ResourceBundle.getBundle("MyResources", Locale.getDefault()); String iconApplication = "/keyspair.png"; String iconApplicationsmall = "/keyspairsmall.png"; String iconLoading = "/loading.gif"; String iconFlagItaly = "/flag_italy.gif"; String iconFlagUk = "/flag_uk.gif"; String iconFlagChina = "/flag_china.gif"; String iconOk = "/ok.png"; String iconKo = "/ko.png"; String pathFileCsv=""; String pathFileBin=""; String pathFileXml=""; String pathKeys=""; String pathDefault=""; private byte[] privateKeyBytes = null; private byte[] halfkey1 = null; private byte[] halfkey2 = null; private PrivateKey privateKey = null; private boolean statusPrivateKey1 = false; private boolean statusPrivateKey2 = false; private JPanel panelTitle; private JLabel labelTitle; private JPanel panelAction; private JLabel labelIcon; private JButton buttonClose; private JPanel panelButtons; private JFrame parent = null; private JMenu menuAbout; private JMenu menuFile; private JMenu menuLanguage; private JMenuBar menuBar; private JTextPane jTextResults; private JScrollPane jScrollPane0; javax.swing.JMenuItem menuVersion = null; javax.swing.JMenuItem menuTest = null; javax.swing.JMenuItem menuLog = null; javax.swing.JMenuItem menuItalian = null; javax.swing.JMenuItem menuEnglish = null; javax.swing.JMenuItem menuChinese = null; private JProgressBar progressBar; // START COMPONENT FOR TEST private JPanel panelTestChoice; private JLabel labelPrivateKey1; private JTextField textPrivateKey1; private JLabel labelStatusPrivateKey1; private JButton buttonPrivateKey1; private JLabel labelPrivateKey2; private JTextField textPrivateKey2; private JLabel labelStatusPrivateKey2; private JButton buttonPrivateKey2; private int panelSelected=0; // PANEL 1 private JPanel panelTest1; private JLabel labelFileCsv; private JTextField textFileCsv; private JButton buttonFileCsv; private JLabel labelStatusFileCsv; private boolean statusFileCsv=false; private JTextField textFileBin; private JLabel labelFileBin; private JButton buttonFileBin; private JLabel labelStatusFileBin; private boolean statusFileBin=false; // PANEL 2 private JPanel panelTest2; private JLabel labelFileCsv1; private JTextField textFileCsv1; private JButton buttonFileCsv1; private JLabel labelStatusFileCsv1; private boolean statusFileCsv1=false; private JTextField textFileXml; private JLabel labelFileXml; private JButton buttonFileXml; private JLabel labelStatusFileXml; private boolean statusFileXml=false; // PANEL 3 private JPanel panelTest3; private JTextField textFileXml1; private JLabel labelFileXml1; private JButton buttonFileXml1; private JLabel labelStatusFileXml1; private boolean statusFileXml1=false; private JLabel labelFileBin1; private JTextField textFileBin1; private JButton buttonFileBin1; private JLabel labelStatusFileBin1; private boolean statusFileBin1=false; // END COMPONENT FOR TEST // START COMPONENT FOR LOG private JPanel panelTestResults; // END COMPONENT FOR LOG private JButton buttonExecute; private JLabel labelWait; private JLabel labelProgress; private JTabbedPane jTabbedPane; private boolean serialDuplicated=false; private boolean errorReadingLine=false; private String errorMsg=""; public MainWindow() { initComponents(); } // START COMPONENT FOR TEST private void initComponents() { setResizable(false); setLayout(new GroupLayout()); add(getPanelTitle(), new Constraints(new Leading(12, 655, 12, 12), new Leading(7, 41, 10, 10))); add(getPanelAction(), new Constraints(new Leading(12, 654, 28, 166), new Leading(51, 12, 12))); add(getPanelButtons(), new Constraints(new Leading(12, 12, 12), new Leading(254, 84, 10, 10))); setJMenuBar(getJMenuBar()); setSize(694, 386); } private JLabel getJLabel0() { if (jLabel0 == null) { jLabel0 = new JLabel(); jLabel0.setFont(new Font("Serif", Font.BOLD, 16)); jLabel0.setForeground(Color.blue); jLabel0.setText("jLabel0"); } return jLabel0; } private JTabbedPane getJTabbedPane() { if (jTabbedPane == null) { jTabbedPane = new JTabbedPane(); jTabbedPane.addTab( rb.getString("title.test")+" 1",getPanelTest1()); jTabbedPane.setMnemonicAt(0, KeyEvent.VK_1); jTabbedPane.addTab(rb.getString("title.test")+" 2",getPanelTest2()); jTabbedPane.setMnemonicAt(1, KeyEvent.VK_2); jTabbedPane.addTab(rb.getString("title.test")+" 3",getPanelTest3()); jTabbedPane.setMnemonicAt(2, KeyEvent.VK_3); jTabbedPane.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { if (e.getSource() instanceof JTabbedPane) { int index=jTabbedPane.getSelectedIndex(); //JTabbedPane pane = (JTabbedPane) e.getSource(); //System.out.println("Selected paneNo : " + index); panelSelected=index; } //int index=jTabbedPane.getSelectedIndex(); //System.out.println("Tab: " + index); //jTabbedPane.removeTabAt(index); //jTabbedPane.insertTab("Test "+(index+1),null,getPanelTestCmd(),"",index); } }); /* jTabbedPane.addTab("Test 2",getPanelEncrypt()); jTabbedPane.setMnemonicAt(1, KeyEvent.VK_2); jTabbedPane.addTab("Test 3",getPanelEncrypt()); jTabbedPane.setMnemonicAt(1, KeyEvent.VK_3); */ } return jTabbedPane; } private JLabel getLabelPrivateKey1() { if (labelPrivateKey1 == null) { labelPrivateKey1 = new JLabel(); labelPrivateKey1.setText(rb.getString("title.privatekey1")); } return labelPrivateKey1; } private JTextField getTextPrivateKey1() { if (textPrivateKey1 == null) { textPrivateKey1 = new JTextField(); textPrivateKey1.setEditable(false); } return textPrivateKey1; } private JButton getbuttonPrivateKey1() { if (buttonPrivateKey1 == null) { buttonPrivateKey1 = new JButton(); buttonPrivateKey1.setText("...."); buttonPrivateKey1 .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathKeys.equals("")){ fileChooser.setCurrentDirectory(new File(pathKeys)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } fileChooser.setFileFilter(new FileFilter() { @Override public String getDescription() { return "key file"; } @Override public boolean accept(File file) { if (file.isDirectory()) { return true; } else { String path = file.getAbsolutePath() .toLowerCase(); return path.toLowerCase().endsWith( ".key"); } } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists() && file.getAbsolutePath() .toLowerCase() .endsWith(".key") && file.isFile()) { pathKeys=file.getParent(); pathDefault=file.getParent(); textPrivateKey1.setText(file .getAbsolutePath()); String filePK1 = textPrivateKey1 .getText(); String filePK2 = textPrivateKey2 .getText(); if (!"".equals(filePK1) && !"".equals(filePK2)) { FileInputStream fis1 = null; FileInputStream fis2 = null; try { fis1 = new FileInputStream( new File(filePK1)); fis2 = new FileInputStream( new File(filePK2)); halfkey1 = new byte[(int) new File( filePK1).length()]; halfkey2 = new byte[(int) new File( filePK2).length()]; fis1.read(halfkey1); fis2.read(halfkey2); byte[] b1 = Base64 .decode(halfkey1); byte[] b2 = Base64 .decode(halfkey2); privateKeyBytes = new byte[halfkey1.length + halfkey2.length]; for (int i = 0; i < b1.length; i++) { privateKeyBytes[i] = b1[i]; } for (int i = 0; i < b2.length; i++) { privateKeyBytes[i + b1.length] = b2[i]; } privateKey = KeyFactory .getInstance("RSA") .generatePrivate( new PKCS8EncodedKeySpec( privateKeyBytes)); fis1.close(); fis2.close(); fis1 = null; fis2 = null; labelStatusPrivateKey1 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconOk))); labelStatusPrivateKey2 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconOk))); } catch (Exception e) { e.printStackTrace(); privateKey = null; privateKeyBytes = null; textPrivateKey1.setText(""); textPrivateKey2.setText(""); labelStatusPrivateKey1 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconKo))); labelStatusPrivateKey2 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconKo))); JOptionPane.showMessageDialog( parent, rb.getString("msg.invalidprivatekey"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } finally { try { if (fis1 != null) fis1.close(); } catch (Exception e) { e.printStackTrace(); } try { if (fis2 != null) fis2.close(); } catch (Exception e) { e.printStackTrace(); } } statusPrivateKey1 = (privateKey != null); statusPrivateKey2 = statusPrivateKey1; } else { statusPrivateKey1 = false; statusPrivateKey2 = false; labelStatusPrivateKey1 .setIcon(null); labelStatusPrivateKey2 .setIcon(null); } } else { labelStatusPrivateKey1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textPrivateKey1.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_privatekey"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusPrivateKey1 = false; } } } repaint(); } })); } return buttonPrivateKey1; } private JLabel getlabelStatusPrivateKey1() { if (labelStatusPrivateKey1 == null) { labelStatusPrivateKey1 = new JLabel(); labelStatusPrivateKey1.setIcon(new ImageIcon(getClass().getResource( "/ko.png"))); } return labelStatusPrivateKey1; } private JLabel getlabelPrivateKey2() { if (labelPrivateKey2 == null) { labelPrivateKey2 = new JLabel(); labelPrivateKey2.setText(rb.getString("title.privatekey2")); } return labelPrivateKey2; } private JTextField gettextPrivateKey2() { if (textPrivateKey2 == null) { textPrivateKey2 = new JTextField(); textPrivateKey2.setEditable(false); textPrivateKey2.setText(""); } return textPrivateKey2; } private JButton getbuttonPrivateKey2() { if (buttonPrivateKey2 == null) { buttonPrivateKey2 = new JButton(); buttonPrivateKey2.setText("...."); buttonPrivateKey2 .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathKeys.equals("")){ fileChooser.setCurrentDirectory(new File(pathKeys)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } fileChooser.setFileFilter(new FileFilter() { @Override public String getDescription() { return "key file"; } @Override public boolean accept(File file) { if (file.isDirectory()) { return true; } else { String path = file.getAbsolutePath() .toLowerCase(); return path.toLowerCase().endsWith( ".key"); } } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists() && file.getAbsolutePath() .toLowerCase() .endsWith(".key") && file.isFile()) { pathKeys=file.getParent(); pathDefault=file.getParent(); textPrivateKey2.setText(file .getAbsolutePath()); String filePK1 = textPrivateKey1 .getText(); String filePK2 = textPrivateKey2 .getText(); if (!"".equals(filePK1) && !"".equals(filePK2)) { FileInputStream fis1 = null; FileInputStream fis2 = null; try { fis1 = new FileInputStream( new File(filePK1)); fis2 = new FileInputStream( new File(filePK2)); halfkey1 = new byte[(int) new File( filePK1).length()]; halfkey2 = new byte[(int) new File( filePK2).length()]; fis1.read(halfkey1); fis2.read(halfkey2); byte[] b1 = Base64 .decode(halfkey1); byte[] b2 = Base64 .decode(halfkey2); privateKeyBytes = new byte[halfkey1.length + halfkey2.length]; for (int i = 0; i < b1.length; i++) { privateKeyBytes[i] = b1[i]; } for (int i = 0; i < b2.length; i++) { privateKeyBytes[i + b1.length] = b2[i]; } privateKey = KeyFactory .getInstance("RSA") .generatePrivate( new PKCS8EncodedKeySpec( privateKeyBytes)); fis1.close(); fis2.close(); fis1 = null; fis2 = null; labelStatusPrivateKey1 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconOk))); labelStatusPrivateKey2 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconOk))); } catch (Exception e) { e.printStackTrace(); privateKey = null; privateKeyBytes = null; textPrivateKey1.setText(""); textPrivateKey2.setText(""); labelStatusPrivateKey1 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconKo))); labelStatusPrivateKey2 .setIcon(new javax.swing.ImageIcon( getClass() .getResource( iconKo))); JOptionPane.showMessageDialog( parent, rb.getString("msg.invalidprivatekey"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } finally { try { if (fis1 != null) fis1.close(); } catch (Exception e) { e.printStackTrace(); } try { if (fis2 != null) fis2.close(); } catch (Exception e) { e.printStackTrace(); } } statusPrivateKey1 = (privateKey != null); statusPrivateKey2 = statusPrivateKey1; } else { statusPrivateKey1 = false; statusPrivateKey2 = false; labelStatusPrivateKey1 .setIcon(null); labelStatusPrivateKey2 .setIcon(null); } } else { labelStatusPrivateKey1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textPrivateKey1.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_privatekey"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusPrivateKey1 = false; } } } repaint(); } })); } return buttonPrivateKey2; } private JLabel getlabelStatusPrivateKey2() { if (labelStatusPrivateKey2 == null) { labelStatusPrivateKey2 = new JLabel(); labelStatusPrivateKey2.setIcon(new ImageIcon(getClass().getResource("/ko.png"))); labelStatusPrivateKey2.setText(""); } return labelStatusPrivateKey2; } // PANEL 1 private JPanel getPanelTest1() { if (panelTest1 == null) { panelTest1 = new JPanel(); panelTest1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panelTest1.setLayout(new GroupLayout()); panelTest1.add(getButtonFileCsv(), new Constraints(new Leading(443, 10, 10), new Leading(5, 12, 12))); panelTest1.add(getLabelStatusFileCsv(), new Constraints(new Leading(503, 10, 10), new Leading(8, 12, 12))); panelTest1.add(getButtonFileBin(), new Constraints(new Leading(443, 10, 10), new Leading(34, 12, 12))); panelTest1.add(getLabelStatusFileBin(), new Constraints(new Leading(503, 10, 10), new Leading(34, 12, 12))); panelTest1.add(getLabelFileBin(), new Constraints(new Leading(4, 147, 10, 10), new Leading(37, 17, 12, 12))); panelTest1.add(getLabelFileCsv(), new Constraints(new Leading(4, 143, 10, 10), new Leading(12, 12, 12))); panelTest1.add(getTextFileCsv(), new Constraints(new Leading(153, 287, 12, 12), new Leading(8, 24, 12, 12))); panelTest1.add(getTextFileBin(), new Constraints(new Leading(152, 288, 12, 12), new Leading(34, 24, 12, 12))); } return panelTest1; } private JLabel getLabelFileCsv() { if (labelFileCsv == null) { labelFileCsv = new JLabel(); labelFileCsv.setText(rb.getString("title.filecsv")); //labelFileIn.setFont(new java.awt.Font("Arial Narrow",Font.BOLD,12)); } return labelFileCsv; } private JTextField getTextFileCsv() { if (textFileCsv == null) { textFileCsv = new JTextField(); textFileCsv.setEditable(false); } return textFileCsv; } private JButton getButtonFileCsv() { if (buttonFileCsv == null) { buttonFileCsv = new JButton(); buttonFileCsv.setText("...."); buttonFileCsv .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathFileCsv.equals("")){ fileChooser.setCurrentDirectory(new File(pathFileCsv)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } fileChooser .addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.isDirectory()) { return true; } else { return (f.getName() .toLowerCase() .endsWith(".csv")|| f.getName() .toLowerCase() .endsWith(".txt")); } } @Override public String getDescription() { return "csv txt files"; } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists()&&(file.getName().toLowerCase().endsWith(".csv")||file.getName().toLowerCase().endsWith(".txt"))) { pathFileCsv=file.getParent(); pathDefault=file.getParent(); labelStatusFileCsv .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconOk))); textFileCsv.setText(file .getAbsolutePath()); statusFileCsv=true; } else { labelStatusFileCsv .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textFileCsv.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_txt"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusFileCsv=false; } } } repaint(); } })); } return buttonFileCsv; } private JLabel getLabelStatusFileCsv() { if (labelStatusFileCsv == null) { labelStatusFileCsv = new JLabel(); labelStatusFileCsv.setIcon(new javax.swing.ImageIcon(getClass() .getResource(iconKo))); } return labelStatusFileCsv; } private JLabel getLabelFileBin() { if (labelFileBin == null) { labelFileBin = new JLabel(); labelFileBin.setText(rb.getString("title.filebin")); //labelFileOut.setFont(new java.awt.Font("Arial",Font.BOLD,12)); } return labelFileBin; } private JTextField getTextFileBin() { if (textFileBin == null) { textFileBin = new JTextField(); textFileBin.setEditable(false); } return textFileBin; } private JButton getButtonFileBin() { if (buttonFileBin == null) { buttonFileBin = new JButton(); buttonFileBin.setText("...."); buttonFileBin .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathFileBin.equals("")){ fileChooser.setCurrentDirectory(new File(pathFileBin)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } //fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY); fileChooser .addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.isDirectory()) { return true; } else { return f.getName() .toLowerCase() .endsWith(".bin"); } } @Override public String getDescription() { return "bin Files"; } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists()&&file.getName().toLowerCase().endsWith(".bin")) { pathFileBin=file.getParent(); pathDefault=file.getParent(); labelStatusFileBin .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconOk))); textFileBin.setText(file .getAbsolutePath()); statusFileBin=true; } else { labelStatusFileBin .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textFileBin.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_bin"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusFileBin=false; } } } repaint(); } })); } return buttonFileBin; } private JLabel getLabelStatusFileBin() { if (labelStatusFileBin == null) { labelStatusFileBin = new JLabel(); labelStatusFileBin.setIcon(new ImageIcon(getClass().getResource( "/ko.png"))); } return labelStatusFileBin; } private JPanel getPanelTest2() { if (panelTest2 == null) { panelTest2 = new JPanel(); panelTest2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panelTest2.setVisible(false); panelTest2.setLayout(new GroupLayout()); panelTest2.add(getButtonFileCsv1(), new Constraints(new Leading(443, 10, 10), new Leading(5, 12, 12))); panelTest2.add(getLabelStatusFileCsv1(), new Constraints(new Leading(503, 10, 10), new Leading(8, 12, 12))); panelTest2.add(getButtonFileXml(), new Constraints(new Leading(443, 10, 10), new Leading(34, 12, 12))); panelTest2.add(getLabelStatusFileXml(), new Constraints(new Leading(503, 10, 10), new Leading(34, 12, 12))); panelTest2.add(getLabelFileCsv1(), new Constraints(new Leading(4, 144, 10, 10), new Leading(12, 12, 12))); panelTest2.add(getLabelFileXml(), new Constraints(new Leading(4, 144, 12, 12), new Leading(37, 17, 12, 12))); panelTest2.add(getTextFileCsv1(), new Constraints(new Leading(154, 286, 12, 12), new Leading(8, 24, 12, 12))); panelTest2.add(getTextFileXml(), new Constraints(new Leading(154, 286, 12, 12), new Leading(34, 24, 12, 12))); } return panelTest2; } private JLabel getLabelFileCsv1() { if (labelFileCsv1 == null) { labelFileCsv1 = new JLabel(); labelFileCsv1.setText(rb.getString("title.filecsv")); //labelFileIn.setFont(new java.awt.Font("Arial Narrow",Font.BOLD,12)); } return labelFileCsv1; } private JTextField getTextFileCsv1() { if (textFileCsv1 == null) { textFileCsv1 = new JTextField(); textFileCsv1.setEditable(false); } return textFileCsv1; } private JButton getButtonFileCsv1() { if (buttonFileCsv1 == null) { buttonFileCsv1 = new JButton(); buttonFileCsv1.setText("...."); buttonFileCsv1 .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathFileCsv.equals("")){ fileChooser.setCurrentDirectory(new File(pathFileCsv)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } fileChooser .addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (!f.isDirectory()) { return true; } else { return f.getName() .toLowerCase() .endsWith(".csv"); } } @Override public String getDescription() { return "csv txt files"; } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists()&&(file.getName().toLowerCase().endsWith(".csv")||file.getName().toLowerCase().endsWith(".txt"))) { pathFileCsv=file.getParent(); pathDefault=file.getParent(); labelStatusFileCsv1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconOk))); textFileCsv1.setText(file .getAbsolutePath()); statusFileCsv1=true; } else { labelStatusFileCsv1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textFileCsv1.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_txt"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusFileCsv1=false; } } } repaint(); } })); } return buttonFileCsv1; } private JLabel getLabelStatusFileCsv1() { if (labelStatusFileCsv1 == null) { labelStatusFileCsv1 = new JLabel(); labelStatusFileCsv1.setIcon(new javax.swing.ImageIcon(getClass() .getResource(iconKo))); } return labelStatusFileCsv1; } private JLabel getLabelFileXml() { if (labelFileXml == null) { labelFileXml = new JLabel(); labelFileXml.setText(rb.getString("title.filexml")); //labelFileOut.setFont(new java.awt.Font("Arial",Font.BOLD,12)); } return labelFileXml; } private JTextField getTextFileXml() { if (textFileXml == null) { textFileXml = new JTextField(); textFileXml.setEditable(false); } return textFileXml; } private JButton getButtonFileXml() { if (buttonFileXml == null) { buttonFileXml = new JButton(); buttonFileXml.setText("...."); buttonFileXml .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathFileXml.equals("")){ fileChooser.setCurrentDirectory(new File(pathFileXml)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } //fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY); fileChooser .addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.isDirectory()) { return true; } else { return f.getName() .toLowerCase() .endsWith(".xml"); } } @Override public String getDescription() { return "xml files"; } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists()&&file.getName().toLowerCase().endsWith(".xml")) { pathFileXml=file.getParent(); pathDefault=file.getParent(); labelStatusFileXml .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconOk))); textFileXml.setText(file .getAbsolutePath()); statusFileXml=true; } else { labelStatusFileXml .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textFileXml.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_xml"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusFileXml=false; } } } repaint(); } })); } return buttonFileXml; } private JLabel getLabelStatusFileXml() { if (labelStatusFileXml == null) { labelStatusFileXml = new JLabel(); labelStatusFileXml.setIcon(new ImageIcon(getClass().getResource( "/ko.png"))); } return labelStatusFileXml; } private JPanel getPanelTest3() { if (panelTest3 == null) { panelTest3 = new JPanel(); panelTest3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panelTest3.setVisible(false); panelTest3.setLayout(new GroupLayout()); panelTest3.add(getButtonFileXml1(), new Constraints(new Leading(443, 10, 10), new Leading(5, 12, 12))); panelTest3.add(getLabelStatusFileXml1(), new Constraints(new Leading(503, 10, 10), new Leading(8, 12, 12))); panelTest3.add(getButtonFileBin1(), new Constraints(new Leading(443, 10, 10), new Leading(34, 12, 12))); panelTest3.add(getLabelStatusFileBin1(), new Constraints(new Leading(503, 10, 10), new Leading(34, 12, 12))); panelTest3.add(getLabelFileXml1(), new Constraints(new Leading(4, 139, 10, 10), new Leading(12, 12, 12))); panelTest3.add(getLabelFileBin1(), new Constraints(new Leading(4, 142, 10, 10), new Leading(37, 17, 12, 12))); panelTest3.add(getTextFileXml1(), new Constraints(new Leading(152, 288, 10, 10), new Leading(8, 24, 12, 12))); panelTest3.add(getTextFileBin1(), new Constraints(new Leading(152, 288, 12, 12), new Leading(34, 24, 12, 12))); } return panelTest3; } private JLabel getLabelFileXml1() { if (labelFileXml1 == null) { labelFileXml1 = new JLabel(); labelFileXml1.setText(rb.getString("title.filexml")); //labelFileOut.setFont(new java.awt.Font("Arial",Font.BOLD,12)); } return labelFileXml1; } private JTextField getTextFileXml1() { if (textFileXml1 == null) { textFileXml1 = new JTextField(); textFileXml1.setEditable(false); } return textFileXml1; } private JButton getButtonFileXml1() { if (buttonFileXml1 == null) { buttonFileXml1 = new JButton(); buttonFileXml1.setText("...."); buttonFileXml1 .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathFileXml.equals("")){ fileChooser.setCurrentDirectory(new File(pathFileXml)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } //fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY); fileChooser .addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.isDirectory()) { return true; } else { return f.getName() .toLowerCase() .endsWith(".xml"); } } @Override public String getDescription() { return "xml files"; } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists()&&file.getName().toLowerCase().endsWith(".xml")) { pathFileXml=file.getParent(); pathDefault=file.getParent(); labelStatusFileXml1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconOk))); textFileXml1.setText(file .getAbsolutePath()); statusFileXml1=true; } else { labelStatusFileXml1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textFileXml1.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_xml"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusFileXml1=false; } } } repaint(); } })); } return buttonFileXml1; } private JLabel getLabelStatusFileXml1() { if (labelStatusFileXml1 == null) { labelStatusFileXml1 = new JLabel(); labelStatusFileXml1.setIcon(new ImageIcon(getClass().getResource( "/ko.png"))); } return labelStatusFileXml1; } private JLabel getLabelFileBin1() { if (labelFileBin1 == null) { labelFileBin1 = new JLabel(); labelFileBin1.setText(rb.getString("title.filebin")); //labelFileIn.setFont(new java.awt.Font("Arial Narrow",Font.BOLD,12)); } return labelFileBin1; } private JTextField getTextFileBin1() { if (textFileBin1 == null) { textFileBin1 = new JTextField(); textFileBin1.setEditable(false); } return textFileBin1; } private JButton getButtonFileBin1() { if (buttonFileBin1 == null) { buttonFileBin1 = new JButton(); buttonFileBin1.setText("...."); buttonFileBin1 .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(); if(!pathFileBin.equals("")){ fileChooser.setCurrentDirectory(new File(pathFileBin)); } else if(!pathDefault.equals("")){ fileChooser.setCurrentDirectory(new File(pathDefault)); } fileChooser .addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (!f.isDirectory()) { return true; } else { return f.getName() .toLowerCase() .endsWith(".bin"); } } @Override public String getDescription() { return "bin files"; } }); if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file != null) { if (file.exists()&&file.getName().toLowerCase().endsWith(".bin")) { pathFileBin=file.getParent(); pathDefault=file.getParent(); labelStatusFileBin1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconOk))); textFileBin1.setText(file .getAbsolutePath()); statusFileBin1=true; } else { labelStatusFileBin1 .setIcon(new javax.swing.ImageIcon( getClass().getResource( iconKo))); textFileBin1.setText(""); String msg = rb.getString("title.error")+" "+FILES_LOADING_ERROR+" : "+rb.getString("msg.cannoloadfile")+" : "+rb.getString("msg.wrongformat_bin"); JOptionPane.showMessageDialog(parent, msg, rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); statusFileBin1=false; } } } repaint(); } })); } return buttonFileBin1; } private JLabel getLabelStatusFileBin1() { if (labelStatusFileBin1 == null) { labelStatusFileBin1 = new JLabel(); labelStatusFileBin1.setIcon(new javax.swing.ImageIcon(getClass() .getResource(iconKo))); } return labelStatusFileBin1; } // START COMPONENT FOR LOG private JScrollPane getJScrollPane0() { if (jScrollPane0 == null) { jScrollPane0 = new JScrollPane(); jScrollPane0.setViewportView(getTextResults()); } return jScrollPane0; } private JTextPane getTextResults() { if (jTextResults == null) { jTextResults = new JTextPane(); jTextResults.setText(""); jTextResults.setEditable(false); } return jTextResults; } private JPanel getPanelTestResults() { if (panelTestResults == null) { panelTestResults = new JPanel(); panelTestResults.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panelTestResults.setLayout(new GroupLayout()); panelTestResults.add(getJScrollPane0(), new Constraints(new Leading(20, 524, 10, 10), new Leading(8, 137, 10, 10))); } return panelTestResults; } private JPanel getPanelTestChoice() { if (panelTestChoice == null) { panelTestChoice = new JPanel(); panelTestChoice.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panelTestChoice.setLayout(new GroupLayout()); panelTestChoice.add(getJTabbedPane(), new Constraints(new Leading(8, 555, 12, 12), new Leading(0, 108, 12, 12))); panelTestChoice.add(getlabelPrivateKey2(), new Constraints(new Leading(14, 116, 12, 12), new Leading(142, 12, 12))); panelTestChoice.add(getbuttonPrivateKey2(), new Constraints(new Leading(454, 10, 10), new Leading(140, 24, 10, 10))); panelTestChoice.add(getTextPrivateKey1(), new Constraints(new Leading(134, 317, 10, 10), new Leading(114, 24, 44, 46))); panelTestChoice.add(getLabelPrivateKey1(), new Constraints(new Leading(14, 116, 10, 10), new Leading(120, 12, 12))); panelTestChoice.add(gettextPrivateKey2(), new Constraints(new Leading(134, 316, 12, 12), new Leading(141, 22, 12, 12))); panelTestChoice.add(getlabelStatusPrivateKey2(), new Constraints(new Leading(516, 12, 12), new Leading(140, 12, 12))); panelTestChoice.add(getlabelStatusPrivateKey1(), new Constraints(new Leading(516, 12, 12), new Leading(114, 12, 12))); panelTestChoice.add(getbuttonPrivateKey1(), new Constraints(new Leading(454, 10, 10), new Leading(112, 24, 10, 10))); } return panelTestChoice; } private JProgressBar getProgressBar() { if (progressBar == null) { progressBar = new JProgressBar(); progressBar.setVisible(false); } return progressBar; } public JMenuBar getJMenuBar() { if (menuBar == null) { menuBar = new JMenuBar(); menuBar.add(getMenuFile()); menuBar.add(getMenuLanguage()); menuBar.add(getMenuAbout()); } return menuBar; } private JMenu getMenuFile() { if (menuFile == null) { menuFile = new JMenu(); menuFile.setText(rb.getString("title.file")); menuFile.setMnemonic('F'); menuFile.add(getMenuTest()); menuFile.add(getMenuLog()); } return menuFile; } private JMenu getMenuLanguage() { if (menuLanguage == null) { menuLanguage = new JMenu(); menuLanguage.setText(rb.getString("title.language")); menuLanguage.setMnemonic('L'); menuLanguage.add(getMenuItalian()); menuLanguage.add(getMenuEnglish()); menuLanguage.add(getMenuChinese()); } return menuLanguage; } private JMenuItem getMenuItalian() { if (menuItalian == null) { menuItalian = new javax.swing.JMenuItem("Italiano", new ImageIcon( this.getClass().getResource(iconFlagItaly))); menuItalian.setMnemonic('I'); menuItalian.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Locale.setDefault(Locale.ITALIAN); reloadLocale(); } })); } return menuItalian; } private JMenuItem getMenuEnglish() { if (menuEnglish == null) { menuEnglish = new javax.swing.JMenuItem("English", new ImageIcon( this.getClass().getResource(iconFlagUk))); menuEnglish.setMnemonic('E'); menuEnglish.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Locale.setDefault(Locale.ENGLISH); reloadLocale(); } })); } return menuEnglish; } private JMenuItem getMenuChinese() { if (menuChinese == null) { menuChinese = new javax.swing.JMenuItem("中国的", new ImageIcon(this .getClass().getResource(iconFlagChina))); menuChinese.setMnemonic('C'); menuChinese.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Locale.setDefault(Locale.CHINESE); reloadLocale(); } })); } return menuChinese; } public void reloadLocale() { rb = ResourceBundle.getBundle("MyResources", Locale.getDefault()); menuFile.setText(rb.getString("title.file")); menuLanguage.setText(rb.getString("title.language")); menuTest.setText(rb.getString("title.test")); menuLog.setText(rb.getString("title.log")); menuAbout.setText(rb.getString("title.about")); menuVersion.setText(rb.getString("title.version")); buttonClose.setText(rb.getString("button.close")); labelTitle.setText(rb.getString("title")); labelPrivateKey1.setText(rb.getString("title.privatekey1")); labelPrivateKey2.setText(rb.getString("title.privatekey2")); jTabbedPane.setTabComponentAt(0, new JLabel(rb.getString("title.test")+" 1")); jTabbedPane.setTabComponentAt(1, new JLabel(rb.getString("title.test")+" 2")); jTabbedPane.setTabComponentAt(2, new JLabel(rb.getString("title.test")+" 3")); labelFileCsv.setText(rb.getString("title.filecsv")); labelFileCsv1.setText(rb.getString("title.filecsv")); labelFileXml.setText(rb.getString("title.filexml")); labelFileXml1.setText(rb.getString("title.filexml")); labelFileBin.setText(rb.getString("title.filebin")); labelFileBin1.setText(rb.getString("title.filebin")); parent.setTitle(rb.getString("version") + " - [" + rb.getString("title.test") + "]"); buttonExecute.setText(rb.getString("title.test")); buttonExecute.setMnemonic('T'); repaint(); } private JMenuItem getMenuTest() { if (menuTest == null) { menuTest = new javax.swing.JMenuItem( rb.getString("title.test")); menuTest.setMnemonic('T'); menuTest.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { parent.setTitle(rb.getString("version") + " - [" + rb.getString("title.test") + "] "); panelTestChoice.setVisible(true); panelTestResults.setVisible(false); buttonExecute.setText(rb.getString("title.test")); buttonExecute.setMnemonic('T'); buttonExecute.setEnabled(true); } })); } return menuTest; } private JMenuItem getMenuLog() { if (menuLog == null) { menuLog = new javax.swing.JMenuItem(rb.getString("title.log")); menuLog.setMnemonic('L'); menuLog.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { //clearPane(jTextResults); parent.setTitle(rb.getString("version") + " - [" + rb.getString("title.test") + "] "); panelTestChoice.setVisible(false); panelTestResults.setVisible(true); buttonExecute.setText(rb.getString("title.test")); buttonExecute.setMnemonic('T'); buttonExecute.setEnabled(true); } })); } return menuLog; } private JMenu getMenuAbout() { if (menuAbout == null) { menuAbout = new JMenu(); menuAbout.setText(rb.getString("title.about")); menuAbout.setMnemonic('A'); menuAbout.add(getMenuVersion()); } return menuAbout; } private JMenuItem getMenuVersion() { if (menuVersion == null) { menuVersion = new javax.swing.JMenuItem( rb.getString("title.version")); menuVersion.setMnemonic('V'); menuVersion.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { AboutWindow frame = new AboutWindow(parent, true); frame.setIcon(); frame.setVisible(true); } })); } return menuVersion; } private JPanel getPanelButtons() { if (panelButtons == null) { panelButtons = new JPanel(); panelButtons.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panelButtons.setLayout(new GroupLayout()); panelButtons.add(getProgressBar(), new Constraints(new Leading(7, 633, 10, 10), new Leading(4, 12, 12))); panelButtons.add(getButtonExecute(), new Constraints(new Leading(71, 115, 10, 10), new Leading(24, 53, 12, 12))); panelButtons.add(getButtonClose(), new Constraints(new Leading(470, 115, 12, 12), new Leading(24, 53, 12, 12))); panelButtons.add(getLabelWait(), new Constraints(new Leading(304, 10, 10), new Leading(42, 12, 12))); panelButtons.add(getJLabel0(), new Constraints(new Leading(189, 240, 10, 10), new Leading(28, 0, 10, 10))); panelButtons.add(getLabelProgress(), new Constraints(new Leading(212, 240, 12, 12), new Leading(19, 10, 10))); } return panelButtons; } private JButton getButtonExecute() { if (buttonExecute == null) { buttonExecute = new JButton(); buttonExecute.setFont(new Font("Serif", Font.BOLD, 16)); buttonExecute.setText(rb.getString("title.test")); buttonExecute.setMnemonic('T'); buttonExecute.setEnabled(true); buttonExecute .addActionListener((new java.awt.event.ActionListener() { public void actionPerformed( java.awt.event.ActionEvent evt) { new Thread() { @Override public void run() { labelProgress.setVisible(true); labelWait.setVisible(true); buttonClose.setEnabled(false); buttonExecute.setEnabled(false); menuFile.setEnabled(false); menuAbout.setEnabled(false); menuLanguage.setEnabled(false); panelTestChoice.setVisible(false); panelTestResults.setVisible(true); repaint(); try{ switch(panelSelected){ case 0: test1(); break; case 1: test2(); break; case 2: test3(); break; } }catch(Exception e){ JOptionPane.showMessageDialog(parent, e.getMessage(), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } labelProgress.setVisible(false); labelWait.setVisible(false); progressBar.setVisible(false); buttonClose.setEnabled(true); buttonExecute.setEnabled(true); menuFile.setEnabled(true); menuAbout.setEnabled(true); menuLanguage.setEnabled(true); repaint(); } }.start(); } })); } return buttonExecute; } private JButton getButtonClose() { if (buttonClose == null) { buttonClose = new JButton(); buttonClose.setText(rb.getString("button.close")); buttonClose.setMnemonic('C'); buttonClose.setFont(new Font("Serif", Font.BOLD, 16)); buttonClose.setHorizontalAlignment(SwingConstants.CENTER); buttonClose.addActionListener((new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } })); } return buttonClose; } private JLabel getLabelWait() { if (labelWait == null) { labelWait = new JLabel(); labelWait.setIcon(new ImageIcon(getClass().getResource("/loading.gif"))); labelWait.setVisible(false); } return labelWait; } private JLabel getLabelIcon() { if (labelIcon == null) { labelIcon = new JLabel(); // jLabel0.setText("jLabel0"); labelIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource( iconApplicationsmall))); } return labelIcon; } private JLabel getLabelProgress() { if (labelProgress == null) { labelProgress = new JLabel(); labelProgress.setFont(new Font("Serif", Font.BOLD, 16)); labelProgress.setForeground(Color.blue); } return labelProgress; } private JPanel getPanelAction() { if (panelAction == null) { panelAction = new JPanel(); panelAction.setBorder(new LineBorder(Color.black, 1, false)); panelAction.setLayout(new GroupLayout()); panelAction.add(getLabelIcon(), new Constraints(new Leading(8, 53, 18, 18), new Leading(30, 54, 12, 12))); panelAction.add(getPanelTestChoice(), new Constraints(new Leading(64, 571, 10, 10), new Leading(5, 183, 10, 10))); panelAction.add(getPanelTestResults(), new Constraints(new Leading(67, 568, 12, 12), new Leading(5, 172, 12, 12))); } return panelAction; } private JLabel getLabelTitle() { if (labelTitle == null) { labelTitle = new JLabel(); labelTitle.setText(rb.getString("title")); labelTitle.setBackground(Color.white); labelTitle.setFont(new Font("Serif", Font.BOLD, 30)); labelTitle.setLayout(new GroupLayout()); labelTitle.setHorizontalAlignment(SwingConstants.CENTER); labelTitle.setVerticalAlignment(SwingConstants.CENTER); } return labelTitle; } private JPanel getPanelTitle() { if (panelTitle == null) { panelTitle = new JPanel(); panelTitle.setBackground(Color.white); panelTitle.setBorder(new LineBorder(Color.black, 1, false)); panelTitle.setLayout(new GroupLayout()); panelTitle.add(getLabelTitle(), new Constraints(new Leading(7, 629, 10, 10), new Leading(0, 12, 12))); } return panelTitle; } private static void installLnF() { try { String lnfClassname = PREFERRED_LOOK_AND_FEEL; if (lnfClassname == null) lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName(); UIManager.setLookAndFeel(lnfClassname); //UIManager.getLookAndFeelDefaults().put("defaultFont", new Font("Arial Narrow", Font.PLAIN, 4)); } catch (Exception e) { System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL + " on this platform:" + e.getMessage()); } } public void setIcon() { setTitle(rb.getString("version") + " - [" + rb.getString("title.test") + "]"); Dimension dim = this.getToolkit().getScreenSize(); int screenWidth = dim.width; int screenHeight = dim.height; setLocation((screenWidth - this.getWidth()) / 2, (screenHeight - this.getHeight()) / 2); InputStream imgStream = null; try { imgStream = this.getClass().getResourceAsStream(iconApplication); BufferedImage bi = ImageIO.read(imgStream); ImageIcon myImg = new ImageIcon(bi); this.setIconImage(myImg.getImage()); } catch (Exception e) { e.printStackTrace(); } finally { try { if (imgStream != null) { imgStream.close(); } } catch (Exception e) { e.printStackTrace(); } } repaint(); parent = this; } private void appendToPane(JTextPane tp, String msg, Color color) { String msgLog=msg.replaceAll("\n",""); if(color.equals(Color.RED)){ logger.error(msgLog); } else{ logger.debug(msgLog); } if (tp != null) { StyleContext sc = StyleContext.getDefaultStyleContext(); AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, color); aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console"); aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED); int len = tp.getDocument().getLength(); tp.setCaretPosition(len); tp.setCharacterAttributes(aset, false); tp.replaceSelection(msg); try { tp.getStyledDocument().insertString(len, msg, aset); } catch (BadLocationException e) { e.printStackTrace(); } } } private void clearPane(JTextPane tp) { if (tp != null) { int len = tp.getDocument().getLength(); try { tp.getStyledDocument().remove(0, len); } catch (BadLocationException e) { e.printStackTrace(); } } } private synchronized boolean verifyFiles(String fileXml,String fileXml1){ boolean retval = true; FileReader fr=null; BufferedReader br=null; FileReader fr1=null; BufferedReader br1=null; try{ appendToPane( jTextResults,fileXml+ "\n", Color.BLUE); appendToPane( jTextResults,fileXml1+ "\n", Color.BLUE); appendToPane( jTextResults,rb.getString("msg.testFileMatch") + "\n", Color.BLUE); progressBar.setVisible(true); progressBar.setMaximum(0); progressBar.setMaximum(100); progressBar.setValue(0); labelProgress.setText(rb.getString("msg.testFileMatch") + " 0%"); if(new File(fileXml).length()==new File(fileXml1).length()){ fr = new FileReader(fileXml); br = new BufferedReader(fr); fr1 = new FileReader(fileXml1); br1 = new BufferedReader(fr1); String string=null; String string1=null; long counter=0; long fileLen=new File(fileXml).length(); int progressValue=0; int prevProgressValue=0; while ((string = br.readLine()) != null&&(string1 = br1.readLine()) != null) { if(!string.equals(string1)){ appendToPane( jTextResults,fileXml+ ": "+string + "\n", Color.RED); appendToPane( jTextResults,fileXml1+ " "+string1 + "\n", Color.RED); appendToPane( jTextResults,rb.getString("msg.testFileNotMatch") + "\n", Color.RED); logger.error(fileXml+ ": "+string); logger.error(fileXml1+ ": "+string1); logger.error(rb.getString("msg.testFileNotMatch")); retval=false; } counter += string.length(); progressValue = (int) ((counter * 100) / fileLen); if (progressValue != prevProgressValue) { progressBar.setValue(progressValue); labelProgress.setText(rb.getString("msg.testFileMatch") + " " + progressValue + "%"); prevProgressValue = progressValue; // System.out.println(prevProgressValue+"%"); repaint(); } } if((string==null&&string1!=null)||(string!=null&&string1==null)||(string!=null&&string1!=null&&!string.equals(string1))){ appendToPane( jTextResults,fileXml+ ": "+((string!=null)?string:"null") + "\n", Color.RED); appendToPane( jTextResults,fileXml1+ " "+((string1!=null)?string1:"null") + "\n", Color.RED); appendToPane( jTextResults,rb.getString("msg.testFileNotMatch") + "\n", Color.RED); logger.error(fileXml+ ": "+string); logger.error(fileXml1+ ": "+string1); logger.error(rb.getString("msg.testFileNotMatch")); retval=false; } progressBar.setValue(100); labelProgress.setText(rb.getString("msg.testFileMatch") + " 100%"); } else{ appendToPane( jTextResults,fileXml+ " "+new File(fileXml).length() + "\n", Color.RED); appendToPane( jTextResults,fileXml1+ " "+new File(fileXml1).length() + "\n", Color.RED); appendToPane( jTextResults,rb.getString("msg.testFileLenghtNotMatch") + "\n", Color.RED); logger.error(fileXml+ ": "+new File(fileXml).length()); logger.error(fileXml1+ ": "+new File(fileXml1).length()); logger.error(rb.getString("msg.testFileLenghtNotMatch")); retval=false; } } catch(Exception e){ appendToPane( jTextResults,e.getMessage() + "\n", Color.RED); retval=false; } finally{ try { if (br != null) br.close(); if (fr != null) fr.close(); if (br1 != null) br1.close(); if (fr1 != null) fr1.close(); } catch (Exception ex) { ex.printStackTrace(); } } progressBar.setVisible(false); labelProgress.setVisible(false); return retval; } private synchronized boolean verifyResults(String fileXml) { boolean retval = false; // 50 MB if (new File(fileXml).length() < 52428800L) { retval=verifySmallXML(fileXml); } else { retval=verifyLargeXML(fileXml); } return retval; } private synchronized boolean verifySmallXML(String fileXml) { boolean retval = true; JAXBContext jc; java.io.InputStream is = null; try { int progressValue=0; int prevProgressValue=0; progressBar.setVisible(true); progressBar.setMaximum(0); progressBar.setMaximum(100); progressBar.setValue(0); labelProgress.setVisible(true); appendToPane(jTextResults, rb.getString("msg.verification") + "\n", Color.BLUE); labelProgress.setText(rb.getString("msg.verification") + " 0%"); repaint(); jc = JAXBContext.newInstance("ietf.params.xml.ns.keyprov.pskc"); Unmarshaller u = jc.createUnmarshaller(); is = new java.io.FileInputStream(fileXml); Object o = u.unmarshal(is); javax.xml.bind.JAXBElement<KeyContainerType> f = (javax.xml.bind.JAXBElement<KeyContainerType>) o; KeyContainerType keyContainer = (KeyContainerType) f.getValue(); List<KeyPackageType> listPackages = keyContainer.getKeyPackage(); if (listPackages != null && listPackages.size() > 0) { for (int i = 0; i < listPackages.size(); i++) { KeyPackageType KeyPackage = listPackages.get(i); DeviceInfoType deviceInfo = KeyPackage.getDeviceInfo(); KeyType key = KeyPackage.getKey(); KeyDataType KeyData = key.getData(); BinaryDataType binaryDataType = KeyData.getSecret(); EncryptedDataType encryptedDataType = binaryDataType .getEncryptedValue(); String seed = encryptedDataType.getCipherData() .getCipherValue(); String serial = deviceInfo.getSerialNo(); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] cipherData = cipher.doFinal(Base64.decode(seed)); String decodedseed = new String(cipherData); String seedOrigin = mapSerialSeed.remove(serial); if (seedOrigin == null) { retval = false; //logger.error("(1)[" + serial + "] " + rb.getString("msg.testNotFound")); errorMsg=rb.getString("title.error")+" - "+ rb.getString("title.serial")+" : "+serial+" - " +rb.getString("title.errorcode")+" "+SERIAL_NOTFOUND1_ERROR+" : "+rb.getString("msg.testNotFound"); appendToPane(jTextResults,errorMsg+ "\n", Color.RED); } else { if (!seedOrigin.equals(decodedseed)) { retval = false; errorMsg=rb.getString("title.error")+" - " + rb.getString("title.serial")+" : "+serial+" - " +rb.getString("title.errorcode")+" "+SID_NOTMATCH_ERROR+" : "+rb.getString("msg.testSeedNotMatch"); appendToPane(jTextResults,errorMsg+ "\n", Color.RED); } else{ //logger.debug("[" + serial + "] " + rb.getString("msg.testSerialSidOk")); appendToPane( jTextResults, "[" + serial + "] " + rb.getString("msg.testSerialSidOk") + "\n", Color.BLUE); } } progressValue = (int) ((i * 100) / listPackages.size()); if (progressValue != prevProgressValue) { progressBar.setValue(progressValue); labelProgress.setText(rb.getString("msg.verification") + " " + progressValue + "%"); prevProgressValue = progressValue; // System.out.println(prevProgressValue+"%"); repaint(); } // System.out.println(serial+"\n"+decodedseed+"\n\n\n"); } } if (mapSerialSeed.size() > 0) { retval = false; Object[] object = mapSerialSeed.keySet().toArray(); for (int i = 0; i < object.length; i++) { errorMsg=rb.getString("title.error")+" - "+ rb.getString("title.serial")+" : "+object[i]+" - " +rb.getString("title.errorcode")+" "+SERIAL_NOTFOUND2_ERROR+" : "+rb.getString("msg.testNotFound"); appendToPane(jTextResults,errorMsg+ "\n",Color.RED); repaint(); } } // System.out.println("OK"); } catch (Exception e) { errorMsg=rb.getString("title.error")+" - "+rb.getString("title.errorcode")+" "+UNKNOWN_ERROR+" : "+e.getLocalizedMessage(); appendToPane(jTextResults, errorMsg+ "\n", Color.RED); retval = false; } finally { try { if (is != null) is.close(); } catch (Exception e) { } } progressBar.setVisible(false); labelProgress.setVisible(false); repaint(); return retval; } private synchronized boolean verifyLargeXML(String fileXml) { boolean retval = true; JAXBContext jc; XMLStreamReader xsr = null; try { XMLInputFactory xif = XMLInputFactory.newFactory(); StreamSource xml = new StreamSource(fileXml); xsr = xif.createXMLStreamReader(xml); xsr.nextTag(); int progressValue=0; int prevProgressValue=0; progressBar.setVisible(true); progressBar.setMaximum(0); progressBar.setMaximum(100); progressBar.setValue(0); labelProgress.setVisible(true); appendToPane(jTextResults, rb.getString("msg.verification") + "\n", Color.BLUE); labelProgress.setText(rb.getString("msg.verification") + " 0%"); repaint(); int counter=0; int len=mapSerialSeed.size(); while (xsr.hasNext()) { if (xsr.isStartElement()) { if (xsr.getLocalName().equals("KeyPackage")) { jc = JAXBContext.newInstance(KeyPackageType.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); JAXBElement<KeyPackageType> jb = unmarshaller .unmarshal(xsr, KeyPackageType.class); xsr.close(); KeyPackageType KeyPackage = jb.getValue(); KeyType key = KeyPackage.getKey(); KeyDataType KeyData = key.getData(); BinaryDataType binaryDataType = KeyData.getSecret(); EncryptedDataType encryptedDataType = binaryDataType .getEncryptedValue(); String seed = encryptedDataType.getCipherData() .getCipherValue(); DeviceInfoType deviceInfo = KeyPackage.getDeviceInfo(); String serial = deviceInfo.getSerialNo(); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] cipherData = cipher.doFinal(Base64.decode(seed)); String decodedseed = new String(cipherData); String seedOrigin = mapSerialSeed.remove(serial); if (seedOrigin == null) { retval = false; errorMsg=rb.getString("title.error")+" - "+ rb.getString("title.serial")+" : "+serial+" - " +rb.getString("title.errorcode")+" "+SERIAL_NOTFOUND1_ERROR+" : "+rb.getString("msg.testNotFound"); appendToPane(jTextResults,errorMsg+ "\n", Color.RED); } else { if (!seedOrigin.equals(decodedseed)) { retval = false; errorMsg=rb.getString("title.error")+" - " + rb.getString("title.serial")+" : "+serial+" - " +rb.getString("title.errorcode")+" "+SID_NOTMATCH_ERROR+" : "+rb.getString("msg.testSeedNotMatch"); appendToPane(jTextResults,errorMsg+ "\n", Color.RED); } else{ //logger.debug("[" + serial + "] " + rb.getString("msg.testSerialSidOk")); appendToPane( jTextResults, "[" + serial + "] " + rb.getString("msg.testSerialSidOk") + "\n", Color.BLUE); } } progressValue = (int) ((counter * 100) / len); if (progressValue != prevProgressValue) { progressBar.setValue(progressValue); labelProgress.setText(rb.getString("msg.verification") + " " + progressValue + "%"); prevProgressValue = progressValue; // System.out.println(prevProgressValue+"%"); repaint(); } counter++; } } xsr.next(); } if (mapSerialSeed.size() > 0) { retval = false; Object[] object = mapSerialSeed.keySet().toArray(); for (int i = 0; i < object.length; i++) { errorMsg=rb.getString("title.error")+" - "+ rb.getString("title.serial")+" : "+object[i]+" - " +rb.getString("title.errorcode")+" "+SERIAL_NOTFOUND2_ERROR+" : "+rb.getString("msg.testNotFound"); appendToPane(jTextResults,errorMsg+ "\n",Color.RED); repaint(); } } progressBar.setValue(100); labelProgress.setText(rb.getString("msg.verification") + " 100%"); repaint(); } catch (Exception e) { errorMsg=rb.getString("title.error")+" - "+rb.getString("title.errorcode")+" "+UNKNOWN_ERROR+" : "+e.getLocalizedMessage(); appendToPane(jTextResults, errorMsg+ "\n", Color.RED); retval = false; } finally { try { if (xsr != null) xsr.close(); } catch (Exception e) { e.printStackTrace(); } } progressBar.setVisible(false); labelProgress.setVisible(false); repaint(); return retval; } private synchronized void decryptAES(SecretKey key, AlgorithmParameterSpec paramSpec, InputStream in, OutputStream out, long fileLen) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IOException { Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); c.init(Cipher.DECRYPT_MODE, key, paramSpec); CipherOutputStream cos = null; try { cos = new CipherOutputStream(out, c); int count = 0; byte[] buffer = new byte[1024]; long counter = 0; int progressValue = 0; int prevProgressValue = 0; while ((count = in.read(buffer)) >= 0) { counter = counter + count; cos.write(buffer, 0, count); progressValue = (int) ((counter * 100) / fileLen); if (progressValue != prevProgressValue) { progressBar.setValue(progressValue); labelProgress.setText(rb.getString("msg.deciphering") + " " + progressValue + "%"); prevProgressValue = progressValue; repaint(); } } cos.flush(); } finally { if (cos != null) cos.close(); } } private synchronized String[] getSerialKey(String string) throws Exception { // possibili separatori SPACE ;,:| TAB if (string.contains(";")) { return getSerialKey(string.split(";")); } else if (string.contains(",")) { return getSerialKey(string.split(",")); } else if (string.contains(":")) { return getSerialKey(string.split(":")); } else if (string.contains("|")) { return getSerialKey(string.split("\\|")); } else if (string.contains("\t")) { return getSerialKey(string.split("\t")); } else if (string.contains(" ")) { return getSerialKey(string.split(" ")); } else { return getSerialKey(string.split("\\W")); } } private synchronized String[] getSerialKey(String[] stringArray) throws Exception { Pattern hexdecimal = Pattern.compile("^[0-9A-F]+$"); String serial = ""; String key = ""; String[] serialKey = null; if (stringArray.length > 0) { for (int i = 0; i < stringArray.length; i++) { String value = stringArray[i]; if (value.length() > 20 && "".equals(key)) { key = value; } if (hexdecimal.matcher(value.toUpperCase()).matches() && "".equals(serial) && value.length() <= 20) { serial = value; } } serialKey = new String[2]; serialKey[0] = serial; serialKey[1] = key; } return serialKey; } private HashMap<String, String> mapSerialSeed = new HashMap<String, String>(); /** * Main entry of the class. Note: This class is only created so that you can * easily preview the result at runtime. It is not expected to be managed by * the designer. You can modify it as you like. */ public static void main(String[] args) { try { seq = END_OF_KEY.getBytes("UTF-8"); } catch (Exception e) { e.printStackTrace(); } installLnF(); SwingUtilities.invokeLater(new Runnable() { public void run() { MainWindow frame = new MainWindow(); frame.setDefaultCloseOperation(MainWindow.EXIT_ON_CLOSE); // frame.setTitle("MainWindow"); frame.getContentPane().setPreferredSize(frame.getSize()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setIcon(); } }); } public static String END_OF_KEY = "=,uytnnnnnnnnnneereee,c------"; public static byte[] seq = null; private JLabel jLabel0; private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel"; public byte[] appendByteArray(byte[] array, byte b) { byte[] c = new byte[array.length + 1]; for (int i = 0; i < array.length; i++) { c[i] = array[i]; } c[array.length] = b; return c; } public boolean checkSeq(byte[] data) { boolean found = true; if (seq.length < data.length && data.length > 0) { int indexData = data.length - seq.length; for (int i = 0; i < seq.length; i++) { if (seq[i] != data[indexData]) { found = false; break; } indexData++; } } else { found = false; } return found; } private void safeFileRemoval(File file){ if (file.exists()) { //appendToPane(jTextResults, "secure delete file "+file.getName()+ "\n", Color.BLUE); RandomAccessFile raf = null; try{ long length = file.length(); SecureRandom random = new SecureRandom(); raf = new RandomAccessFile(file, "rws"); raf.seek(0); raf.getFilePointer(); byte[] data = new byte[64]; int pos = 0; while (pos < length) { random.nextBytes(data); raf.write(data); pos += data.length; } raf.close(); raf=null; file.delete(); } catch(Exception e){ appendToPane(jTextResults, e.getLocalizedMessage()+ "\n", Color.RED); } finally{ try{ if(raf!=null){ raf.close(); } } catch(Exception e){ e.printStackTrace(); } if(file.exists()){ file.delete(); } } } } private synchronized void test1() { // check parameters if(statusPrivateKey1&&statusPrivateKey2&&statusFileCsv&&statusFileBin &&new File(textFileCsv.getText()).exists() &&new File(textFileBin.getText()).exists() &&new File(textPrivateKey1.getText()).exists() &&new File(textPrivateKey2.getText()).exists()){ String fileXml="test.xml"; try{ clearPane(jTextResults); appendToPane(jTextResults,"*******************START TEST*****************************"+ "\n", Color.BLUE); String fileBin = textFileBin.getText(); appendToPane(jTextResults, "Start "+rb.getString("title.test") + " 1\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.filecsv")+": "+textFileCsv.getText()+"\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.filebin")+": "+textFileBin.getText()+"\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.privatekey1")+": "+textPrivateKey1.getText()+"\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.privatekey2")+": "+textPrivateKey2.getText()+"\n", Color.BLUE); repaint(); readFileSerialSid(textFileCsv.getText()); if (serialDuplicated) { appendToPane(jTextResults,rb.getString("msg.doublederror") + "\n", Color.RED); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.doublederror"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); return; } appendToPane(jTextResults,rb.getString("msg.totalseeds") +" : "+mapSerialSeed.size()+ "\n", Color.BLUE); /* if (errorReadingLine) { logger.debug(rb.getString("msg.lineerror")); logger.error(rb.getString("msg.testError")); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.lineerror"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); return; } */ decodeBinFile(fileBin,fileXml); if(verifyResults(fileXml)){ //logger.debug(rb.getString("msg.testOK")); appendToPane(jTextResults, rb.getString("msg.testOK") + "\n", Color.GREEN); JOptionPane.showMessageDialog(parent, rb.getString("msg.testOK"), rb.getString("title.ok"), JOptionPane.INFORMATION_MESSAGE); } else{ //logger.error(rb.getString("msg.testError")); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.testError"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } }catch(Exception e){ errorMsg=rb.getString("title.error")+" - "+rb.getString("title.errorcode")+" "+UNKNOWN_ERROR+" : "+e.getLocalizedMessage(); appendToPane(jTextResults,errorMsg+ "\n", Color.RED); appendToPane(jTextResults,rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, e.getLocalizedMessage(), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } finally{ safeFileRemoval(new File(fileXml)); } appendToPane(jTextResults,"********************END TEST*****************************"+ "\n", Color.BLUE); } else{ //logger.error(rb.getString("msg.missingparameter")); JOptionPane.showMessageDialog(parent, rb.getString("msg.missingparameter"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } } private synchronized void test2() { // check parameters if(statusPrivateKey1&&statusPrivateKey2&&statusFileCsv1&&statusFileXml &&new File(textFileCsv1.getText()).exists() &&new File(textFileXml.getText()).exists() &&new File(textPrivateKey1.getText()).exists() &&new File(textPrivateKey2.getText()).exists()){ try{ clearPane(jTextResults); appendToPane(jTextResults,"*******************START TEST*****************************"+ "\n", Color.BLUE); appendToPane(jTextResults, "Start "+rb.getString("title.test") + " 2\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.filecsv")+": "+textFileCsv1.getText()+ "\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.filexml")+": "+textFileXml.getText()+ "\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.privatekey1")+": "+textPrivateKey1.getText()+ "\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.privatekey2")+": "+textPrivateKey2.getText()+ "\n", Color.BLUE); repaint(); readFileSerialSid(textFileCsv1.getText()); if (serialDuplicated) { appendToPane(jTextResults,rb.getString("msg.doublederror") + "\n", Color.RED); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.doublederror"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); return; } /* if (errorReadingLine) { logger.debug(rb.getString("msg.lineerror")); logger.error(rb.getString("msg.testError")); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.lineerror"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); return; } */ String fileXml=textFileXml.getText(); if(verifyResults(fileXml)){ //logger.debug(rb.getString("msg.testOK")); appendToPane(jTextResults, rb.getString("msg.testOK") + "\n", Color.GREEN); JOptionPane.showMessageDialog(parent, rb.getString("msg.testOK"), rb.getString("title.ok"), JOptionPane.INFORMATION_MESSAGE); } else{ //logger.error(rb.getString("msg.testError")); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.testError"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } }catch(Exception e){ appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); appendToPane(jTextResults, e.getMessage() + "\n", Color.RED); JOptionPane.showMessageDialog(parent, e.getMessage(), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } appendToPane(jTextResults,"********************END TEST*****************************"+ "\n", Color.BLUE); } else{ //logger.error(rb.getString("msg.missingparameter")); JOptionPane.showMessageDialog(parent, rb.getString("msg.missingparameter"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } } private synchronized void test3() { // check parameters if(statusPrivateKey1&&statusPrivateKey2&&statusFileXml1&&statusFileBin1 &&new File(textFileXml1.getText()).exists() &&new File(textFileBin1.getText()).exists() &&new File(textPrivateKey1.getText()).exists() &&new File(textPrivateKey2.getText()).exists()){ try{ clearPane(jTextResults); appendToPane(jTextResults,"*******************START TEST*****************************"+ "\n", Color.BLUE); appendToPane(jTextResults, "Start "+rb.getString("title.test") + " 3\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.filexml")+": "+textFileXml1.getText()+ "\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.filebin")+": "+textFileBin1.getText()+ "\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.privatekey1")+": "+textPrivateKey1.getText()+ "\n", Color.BLUE); appendToPane(jTextResults,rb.getString("title.privatekey2")+": "+textPrivateKey2.getText()+ "\n", Color.BLUE); String fileXml = textFileXml1.getText(); String fileBin = textFileBin1.getText(); String fileXml1="test.xml"; decodeBinFile(fileBin,fileXml1); if(verifyFiles(fileXml,fileXml1)){ //logger.debug(rb.getString("msg.testOK")); appendToPane(jTextResults, rb.getString("msg.testOK") + "\n", Color.GREEN); JOptionPane.showMessageDialog(parent, rb.getString("msg.testOK"), rb.getString("title.ok"), JOptionPane.INFORMATION_MESSAGE); } else{ //logger.error(rb.getString("msg.testError")); appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); JOptionPane.showMessageDialog(parent, rb.getString("msg.testError"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } }catch(Exception e){ appendToPane(jTextResults, rb.getString("msg.testError") + "\n", Color.RED); appendToPane(jTextResults, e.getMessage() + "\n", Color.RED); JOptionPane.showMessageDialog(parent, e.getMessage(), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } appendToPane(jTextResults,"********************END TEST*****************************"+ "\n", Color.BLUE); } else{ //logger.error(rb.getString("msg.missingparameter")); JOptionPane.showMessageDialog(parent, rb.getString("msg.missingparameter"), rb.getString("title.error"), JOptionPane.ERROR_MESSAGE); } } private void readFileSerialSid(String fileCsv) throws Exception{ mapSerialSeed.clear(); serialDuplicated=false; errorReadingLine=false; ArrayList<String> listSerial = new ArrayList<String>(); progressBar.setVisible(true); progressBar.setMaximum(0); progressBar.setMaximum(100); progressBar.setValue(0); labelProgress.setText(rb.getString("msg.readingserialsid") + " 0%"); repaint(); long fileLen = new File(fileCsv).length(); long counter = 0; int progressValue = 0; int prevProgressValue = 0; FileReader fr = null; BufferedReader in = null; try { //logger.debug(fileCsv+" "+rb.getString("msg.readingserialsid")); appendToPane(jTextResults, rb.getString("title.file")+" : "+ fileCsv+" - "+rb.getString("msg.readingserialsid") + "\n", Color.BLUE); fr = new FileReader(fileCsv); in = new BufferedReader(fr); String string; long i = 0; while ((string = in.readLine()) != null) { if(!"".equals(string.trim())){ String[] serialkey = getSerialKey(string.trim()); String lineserial = serialkey[0]; String linekey = serialkey[1]; if (!listSerial.contains(lineserial)) { //logger.debug(rb.getString("title.serial")+": "+lineserial); appendToPane(jTextResults, rb.getString("title.serial")+": "+lineserial + "\n", Color.BLUE); mapSerialSeed.put(lineserial, linekey); } else { errorMsg=rb.getString("title.error")+" - " +rb.getString("title.file")+" : "+fileCsv+" - "+rb.getString("title.line")+ " "+(i+1)+" - "+rb.getString("title.serial")+ " "+lineserial+" - "+ rb.getString("title.errorcode")+" "+DUPLICATE_SERIAL_ERROR+" : "+rb.getString("msg.doublederror"); /* logger.error("Error: element(" + (i + 1) + ") file(" + fileCsv + ") serial(" + lineserial + ") "+rb.getString("msg.doublederror")); */ appendToPane(jTextResults,errorMsg+ "\n", Color.RED); // jTextResults.append("("+(i + // 1)+")["+lineserial+"] "+rb.getString("msg.doublederror")+"\n"); serialDuplicated = true; } } else{ errorMsg=rb.getString("title.error")+" - " +rb.getString("title.file")+" : "+fileCsv+" - "+rb.getString("title.line")+ " "+(i+1)+" - "+ rb.getString("title.errorcode")+" "+EMPTY_LINE_ERROR+" : "+rb.getString("msg.lineerror"); /* logger.error("Error: "+rb.getString("title.line")+"(" + (i + 1) + ") file(" + fileCsv + ") "+ rb.getString("msg.lineerror")); */ appendToPane(jTextResults, errorMsg+ "\n",Color.RED); errorReadingLine=true; } counter += string.length(); progressValue = (int) ((counter * 100) / fileLen); if (progressValue != prevProgressValue) { progressBar.setValue(progressValue); labelProgress.setText(rb.getString("msg.readingserialsid") + " " + progressValue + "%"); prevProgressValue = progressValue; // System.out.println(prevProgressValue+"%"); repaint(); } i++; } progressBar.setValue(100); labelProgress.setText(rb.getString("msg.readingserialsid") + " 100%"); repaint(); }finally{ try { if (in != null) in.close(); if (fr != null) fr.close(); } catch (Exception ex) { ex.printStackTrace(); } } progressBar.setVisible(false); labelProgress.setVisible(false); } private synchronized void decodeBinFile(String fileBin,String fileXml) throws Exception{ progressBar.setVisible(true); progressBar.setMaximum(0); progressBar.setMaximum(100); progressBar.setValue(0); //logger.debug(fileBin+" "+rb.getString("msg.deciphering")); appendToPane(jTextResults, rb.getString("title.file")+" : "+ fileBin+" - "+rb.getString("msg.deciphering") + "\n", Color.BLUE); labelProgress.setText(rb.getString("msg.deciphering") + " 0%"); labelProgress.setVisible(true); repaint(); OutputStream outputWriter = null; InputStream inputReader = null; byte[] arrayByte = new byte[0]; byte[] arrayByte1 = new byte[0]; try { outputWriter = new FileOutputStream(fileXml); inputReader = new FileInputStream(fileBin); boolean loop = true; int b; while ((b = inputReader.read()) != -1 && loop) { arrayByte = appendByteArray(arrayByte, (byte) b); loop = !checkSeq(arrayByte); if (!loop) break; } int keylen = arrayByte.length - seq.length; byte[] aesKeyEncoded = new byte[keylen]; for (int i = 0; i < aesKeyEncoded.length; i++) { aesKeyEncoded[i] = arrayByte[i]; } Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] aesKey = cipher.doFinal(aesKeyEncoded); SecretKey secretAesKey = new SecretKeySpec(aesKey, 0, aesKey.length, "AES"); loop = true; while ((b = inputReader.read()) != -1 && loop) { arrayByte1 = appendByteArray(arrayByte1, (byte) b); loop = !checkSeq(arrayByte1); if (!loop) break; } keylen = arrayByte1.length - seq.length; byte[] ivEncoded = new byte[keylen]; for (int i = 0; i < aesKeyEncoded.length; i++) { ivEncoded[i] = arrayByte1[i]; } byte[] iv = cipher.doFinal(ivEncoded); /* * byte[] iv = new byte[16]; * * for(int i=0;i<16;i++){ iv[i]=arrayByte[i+keylen]; } */ AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv); long fileLen = new File(fileBin).length() - arrayByte.length - arrayByte1.length; decryptAES(secretAesKey, paramSpec, inputReader, outputWriter, fileLen); outputWriter.close(); inputReader.close(); // bos.close(); outputWriter = null; inputReader = null; } finally { try { // if (bos != null) // bos.close(); if (outputWriter != null) outputWriter.close(); } catch (Exception e) { e.printStackTrace(); } try { if (inputReader != null) inputReader.close(); } catch (Exception e) { e.printStackTrace(); } } progressBar.setVisible(false); labelProgress.setVisible(false); } }