/*
Sysepub 0.9.0 - A Symmetric Semi-Public key cipher
Copyright (C) 2002 Pierre Blanc
Pierre Blanc: blanc_teutoburgo@yahoo.it
http://teutoburgo.cjb.net
http://it.geocities.com/teutoburgo
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
or go to http://www.gnu.org/copyleft/gpl.html
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class FrameSysepub
extends JFrame {
boolean secretPanelsVisible=false;
Sysepub ssp=null;
PrintMessages pm = new PrintMessages(true);
int pubKeySize=0;
String seedString
="", patternString
="";
/**Construct the frame*/
public FrameSysepub() {
enableEvents
(AWTEvent.
WINDOW_EVENT_MASK);
try {
jbInit();
}
}
e.printStackTrace();
}
}
public void sPrintGUI
(String message
){
jTextAreaLog.append(message);
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
}
/**Component initialization*/
//setIconImage(Toolkit.getDefaultToolkit().createImage(FrameSysepub.class.getResource("[Your Icon]")));
ssp=new Sysepub(true);
if(ssp.getSeed()==0) seedString="";
else seedString=""+ssp.getSeed();
fc.
setCurrentDirectory(new File("./"));
contentPane
= (JPanel) this.
getContentPane();
contentPane.setLayout(borderLayout1);
this.setTitle("Sysepub 0.9");
jPanelCentral.setLayout(borderLayout2);
jTextAreaLog.setEditable(false);
pubKeySize=ssp.getPubKeySize();
pm.printCopyright();
pm.printLicenseGUI();
jTextAreaLog.
setBackground(Color.
white);
sPrintGUI("Welcome to Sysepub!\n"+pm.flushLog()+ssp.flushLog()+"\n");
jScrollPane1.
setMaximumSize(new Dimension(600, 400
));
jScrollPane1.
setMinimumSize(new Dimension(300, 150
));
jScrollPane1.
setPreferredSize(new Dimension(600, 180
));
jTextFieldFile.
setBackground(Color.
white);
jTextFieldFile.setText(ssp.getDefaultFile());
jTextFieldFile.setColumns(20);
jPanelCrypt.setLayout(gridLayoutCrypt);
gridLayoutCrypt.setRows(2);
jButtonCipher.setText("Encipher");
jButtonCipher.setToolTipText("Enciphers the file specified");
jButtonCipher.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jButtonCipher_mousePressed(e);
}
});
jButtonDecipher.setText("Decipher");
jButtonDecipher.setToolTipText("Deciphers the file specified");
jButtonDecipher.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jButtonDecipher_mousePressed(e);
}
});
jPanelNE.setLayout(gridLayout1);
gridLayout1.setRows(2);
gridLayout1.setColumns(2);
jLabelConfig.setText("Config file:");
jButtonConfig.setText("Change");
jButtonConfig.setToolTipText("You can use multiple configuration files");
jButtonConfig.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jButtonConfig_mousePressed(e);
}
});
jTextFieldConfig.setColumns(10);
jTextFieldConfig.
setBackground(Color.
white);
jTextFieldConfig.setText("ssp.cfg");
jTextFieldConfig.
addKeyListener(new java.
awt.
event.
KeyAdapter() {
jTextFieldConfig_keyPressed(e);
}
});
jPanelSW.setLayout(gridLayout2);
gridLayout2.setRows(2);
gridLayout2.setColumns(2);
jButtonGenerate.setText("Generate");
jButtonGenerate.setToolTipText("Used to generate new random bytes in the public key");
jButtonGenerate.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jButtonGenerate_mousePressed(e);
}
});
jLabelKB.setText("KB");
jTextFieldKB.setColumns(6);
jTextFieldKB.
addKeyListener(new java.
awt.
event.
KeyAdapter() {
jTextFieldKB_keyPressed(e);
}
});
jTextFieldKB.
setBackground(Color.
white);
jTextFieldKB.setText(""+(ssp.getDefaultLength()/1024));
jCheckBox1.setOpaque(false);
jCheckBox1.setText("View secret key");
jCheckBox1.
setBackground(Color.
white);
jCheckBox1.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jCheckBox1_mousePressed(e);
}
});
jPanelSE.setLayout(gridLayout3);
jLabelPubKey.setText("Public key size:");
jLabelPubKey2.setText((pubKeySize/1024)+" KB");
gridLayout3.setRows(2);
gridLayout3.setColumns(2);
jLabelSeed.setText("seed");
jTextFieldSeed.
setBackground(Color.
white);
jTextFieldSeed.
setForeground(Color.
white);
jTextFieldSeed.setColumns(9);
jTextFieldSeed.setText(seedString);
jTextFieldSeed.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jTextFieldSeed_mouseExited(e);
}
});
jTextFieldPattern.setColumns(7);
jTextFieldPattern.
setBackground(Color.
white);
jTextFieldPattern.
setForeground(Color.
white);
patternString=ssp.getPatternString();
jTextFieldPattern.setText(patternString);
jTextFieldPattern.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jTextFieldPattern_mouseExited(e);
}
});
jLabelPattern.setText("pattern");
jPanel13.setLayout(gridLayout4);
gridLayout4.setRows(2);
jButtonTry.setToolTipText("Try it if first decryption failed");
jButtonTry.setActionCommand("jButtonTry");
jButtonTry.setText("Try again");
jButtonTry.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jButtonTry_mousePressed(e);
}
});
jTextFieldTry.
setBackground(Color.
white);
jTextFieldTry.setColumns(3);
jTextFieldTry.setText("5");
jLabelTry.setText("times");
jTextFieldTry.
addKeyListener(new java.
awt.
event.
KeyAdapter() {
jTextFieldTry_keyPressed(e);
}
});
contentPane.
setBackground(Color.
white);
contentPane.
setMinimumSize(new Dimension(725, 420
));
contentPane.
setPreferredSize(new Dimension(725, 420
));
jPanelCentral.
setBackground(Color.
white);
jLabelFile.setText("File:");
jButtonClear.setToolTipText("Clear log textarea");
jButtonClear.setText("Clear");
jButtonClear.
addMouseListener(new java.
awt.
event.
MouseAdapter() {
jButtonClear_mousePressed(e);
}
});
jMenuItemExit.setText("Exit");
jMenuItemExit_actionPerformed(e);
}
});
jMenuItemBasic.setText("Basic Help");
jMenuItemBasic.
addActionListener(new java.
awt.
event.
ActionListener() {
jMenuItemBasic_actionPerformed(e);
}
});
jMenuItemWarranty.setText("Warranty");
jMenuItemWarranty.
addActionListener(new java.
awt.
event.
ActionListener() {
jMenuItemWarranty_actionPerformed(e);
}
});
jMenuHelp.setText("Help");
jMenuFile.setText("File");
jMenuItemAbout.setText("About");
jMenuItemAbout.
addActionListener(new java.
awt.
event.
ActionListener() {
jMenuItemAbout_actionPerformed(e);
}
});
jMenuItemOpen.setText("Open");
jMenuItemOpen_actionPerformed(e);
}
});
jPanelSW.
setMaximumSize(new Dimension(350, 100
));
jPanelSW.
setMinimumSize(new Dimension(130, 94
));
jPanelSW.
setPreferredSize(new Dimension(330, 94
));
jPanelSE.
setMinimumSize(new Dimension(246, 78
));
jPanelSE.
setPreferredSize(new Dimension(346, 78
));
jPanelDown.
setPreferredSize(new Dimension(601, 90
));
jPanelUp.add(jPanelNW, null);
jPanelNW.add(jPanel13, null);
jPanel13.add(jPanel15, null);
jPanel15.add(jLabelFile, null);
jPanel15.add(jTextFieldFile, null);
jPanel13.add(jPanel14, null);
jPanel14.add(jButtonTry, null);
jPanel14.add(jTextFieldTry, null);
jPanel14.add(jLabelTry, null);
jPanel14.setVisible(false);
jPanelNW.add(jPanelCrypt, null);
jPanelCrypt.add(jButtonCipher, null);
jPanelCrypt.add(jButtonDecipher, null);
jPanelUp.add(jPanelNE, null);
jPanelNE.add(jPanel1, null);
jPanel1.add(jLabelConfig, null);
jPanelNE.add(jPanel2, null);
jPanel2.add(jTextFieldConfig, null);
jPanelNE.add(jPanel3, null);
jPanelNE.add(jPanel4, null);
jPanel4.add(jButtonConfig, null);
jPanelMiddle.add(jScrollPane1, null);
jPanelMiddle.add(jButtonClear, null);
jScrollPane1.getViewport().add(jTextAreaLog, null);
jPanelDown.add(jPanelSW, null);
jPanelSW.add(jPanel5, null);
jPanel5.add(jButtonGenerate, null);
jPanelSW.add(jPanel6, null);
jPanel6.add(jTextFieldKB, null);
jPanel6.add(jLabelKB, null);
jPanelSW.add(jPanel7, null);
jPanel7.add(jLabelPubKey, null);
jPanel8.add(jLabelPubKey2, null);
jPanelSW.add(jPanel8, null);
jPanelDown.add(jPanelSE, null);
jPanelSE.add(jPanel9, null);
jPanel9.add(jCheckBox1, null);
jPanelSE.add(jPanel10, null);
jPanelSE.add(jPanel11, null);
jPanel11.add(jLabelSeed, null);
jPanel11.add(jTextFieldSeed, null);
jPanelSE.add(jPanel12, null);
jPanel12.add(jLabelPattern, null);
jPanel12.add(jTextFieldPattern, null);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
jMenuFile.add(jMenuItemOpen);
jMenuFile.add(jMenuItemExit);
jMenuHelp.add(jMenuItemBasic);
jMenuHelp.add(jMenuItemWarranty);
jMenuHelp.add(jMenuItemAbout);
this.setJMenuBar(jMenuBar1);
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
this.setResizable(true);
}
/**Overridden so we can exit when window is closed*/
super.processWindowEvent(e);
}
}
String fileName
=jTextFieldFile.
getText();
if (fileName.equals("")) sPrintGUI("You must specify a file name!\n");
else try{
ssp.
setSeed(Long.
parseLong(jTextFieldSeed.
getText()));
ssp.setPatternString(jTextFieldPattern.getText());
ssp.doEncryption(fileName);
sPrintGUI(ssp.flushLog());
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
jTextFieldFile.setText("");
sPrintGUI("Type a long integer number as seed!\n");
}
}
String fileName
=jTextFieldFile.
getText();
if (fileName.equals("")) sPrintGUI("You must specify a file name!\n");
else try{
ssp.
setSeed(Long.
parseLong(jTextFieldSeed.
getText()));
ssp.setPatternString(jTextFieldPattern.getText());
int termination=ssp.doDecryption(fileName,0);
if (termination==-1) jPanel14.setVisible(true);
else if (termination==1) {
jPanel14.setVisible(false);
jTextFieldFile.setText("");
}
sPrintGUI(ssp.flushLog());
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
sPrintGUI("Type a long integer number as seed!\n");
}
}
secretPanelsVisible=!secretPanelsVisible;
if (!secretPanelsVisible)
{
jTextFieldPattern.
setForeground(Color.
white);
jTextFieldSeed.
setForeground(Color.
white);
} else {
jTextFieldPattern.
setForeground(Color.
black);
jTextFieldSeed.
setForeground(Color.
black);
}
}
generate();
}
void generate(){
try{
int B
=Integer.
parseInt(jTextFieldKB.
getText())*1024;
ssp.generateRandomFile(B);
pubKeySize+=B;
sPrintGUI(ssp.flushLog());
jLabelPubKey.setText("Public key size:");
jLabelPubKey2.setText(pubKeySize/1024+" KB");
jPanel14.setVisible(false);
sPrintGUI("Type an integer number for KB!\n");
}
}
config();
}
void config(){
try{
fileName=jTextFieldConfig.getText();
ssp.sspInit(fileName);
jTextFieldSeed.setText(""+ssp.getSeed());
jTextFieldPattern.setText(ssp.getPatternString());
jTextFieldFile.setText(ssp.getDefaultFile());
sPrintGUI(ssp.flushLog()+"Read configuration from config/"+fileName+"\n");
jPanel14.setVisible(false);
sPrintGUI("config/"+fileName+" not found\n");
fnfe.printStackTrace();
ioe.printStackTrace();
sPrintGUI("config/"+fileName+" not found\n");
nfe.printStackTrace();
sPrintGUI("The seed, the period and the randomFileDefaultLength\nmust be long integers!\n");
sPrintGUI("Initialization failed\n");
}
}
void jTextFieldKB_keyPressed
(KeyEvent e
) {
if(e.getKeyCode()==e.VK_ENTER) generate();
}
void jTextFieldConfig_keyPressed
(KeyEvent e
) {
if(e.getKeyCode()==e.VK_ENTER) config();
}
void jTextFieldTry_keyPressed
(KeyEvent e
) {
if(e.getKeyCode()==e.VK_ENTER) tryD();
}
if (!seedString.equals(jTextFieldSeed.getText()))
{
seedString=jTextFieldSeed.getText();
jPanel14.setVisible(false);
}
}
void jTextFieldPattern_mouseExited
(MouseEvent e
) {
if (!patternString.equals(jTextFieldPattern.getText()))
{
patternString=jTextFieldPattern.getText();
jPanel14.setVisible(false);
}
}
tryD();
}
void tryD(){
try{
int termination=ssp.doDecryption(jTextFieldFile.getText(),
Integer.
parseInt(jTextFieldTry.
getText()));
if (termination==1) jPanel14.setVisible(false);
sPrintGUI(ssp.flushLog());
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
nfe.printStackTrace();
sPrintGUI("Type an integer as number of tries!\n");
}
}
jTextAreaLog.setText("");
}
}
pm.printCopyright();
JOptionPane.
showMessageDialog(FrameSysepub.
this, pm.
flushLog());
}
int returnVal = fc.showOpenDialog(FrameSysepub.this);
File file
= fc.
getSelectedFile();
jTextFieldFile.setText(file.getAbsolutePath());
}
}
void jMenuItemWarranty_actionPerformed
(ActionEvent e
) {
pm.printNoWarranty();
sPrintGUI(pm.flushLog());
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
}
pm.printHelpGUI();
sPrintGUI(pm.flushLog());
jTextAreaLog.setCaretPosition(jTextAreaLog.getText().length());
}
}