From c7c77bf58f81cec46a41eeb2cbde7451cd7949fd Mon Sep 17 00:00:00 2001 From: dblouin <dominique.blouin@telecom-paristech.fr> Date: Fri, 25 May 2018 17:10:26 +0200 Subject: [PATCH] Issue #131 + code cleanup --- .../proverifspec/ProVerifOutputAnalyzer.java | 16 +-- src/main/java/tmltranslator/TMLModeling.java | 10 +- .../tmltranslator/toavatar/TML2Avatar.java | 2 +- src/main/java/ui/AvatarDesignPanel.java | 11 +- src/main/java/ui/GTURTLEModeling.java | 14 ++- .../window/JDialogProverifVerification.java | 110 +++++++++++++----- 6 files changed, 110 insertions(+), 53 deletions(-) diff --git a/src/main/java/proverifspec/ProVerifOutputAnalyzer.java b/src/main/java/proverifspec/ProVerifOutputAnalyzer.java index 006baf48f3..f1233297aa 100644 --- a/src/main/java/proverifspec/ProVerifOutputAnalyzer.java +++ b/src/main/java/proverifspec/ProVerifOutputAnalyzer.java @@ -80,9 +80,9 @@ public class ProVerifOutputAnalyzer { private final static String typedWeakNonAuth = "(even event(authenticity" + AVATAR2ProVerif.ATTR_DELIM; private final static String untypedWeakNonAuth = "(even ev:authenticity" + AVATAR2ProVerif.ATTR_DELIM; private final static String typedAuthSplit = "==> inj-event(authenticity" + AVATAR2ProVerif.ATTR_DELIM; - private final static String typedWeakAuthSplit = "==> event(authenticity" + AVATAR2ProVerif.ATTR_DELIM; + //private final static String typedWeakAuthSplit = "==> event(authenticity" + AVATAR2ProVerif.ATTR_DELIM; private final static String untypedAuthSplit = "==> evinj:authenticity" + AVATAR2ProVerif.ATTR_DELIM; - private final static String untypedWeakAuthSplit = "==> ev:authenticity" + AVATAR2ProVerif.ATTR_DELIM; + //private final static String untypedWeakAuthSplit = "==> ev:authenticity" + AVATAR2ProVerif.ATTR_DELIM; private ConcurrentHashMap<AvatarPragma, ProVerifQueryResult> results; private LinkedList<String> errors; @@ -433,7 +433,7 @@ public class ProVerifOutputAnalyzer { return this.results; } - public HashMap<AvatarPragmaSecret, ProVerifQueryResult> getConfidentialityResults() + public Map<AvatarPragmaSecret, ProVerifQueryResult> getConfidentialityResults() { if (this.results == null) return null; @@ -451,12 +451,12 @@ public class ProVerifOutputAnalyzer { return resultMap; } - public HashMap<AvatarPragmaReachability, ProVerifQueryResult> getReachabilityResults() + public Map<AvatarPragmaReachability, ProVerifQueryResult> getReachabilityResults() { if (this.results == null) return null; - HashMap<AvatarPragmaReachability, ProVerifQueryResult> resultMap = new HashMap<AvatarPragmaReachability, ProVerifQueryResult> (); + Map<AvatarPragmaReachability, ProVerifQueryResult> resultMap = new HashMap<AvatarPragmaReachability, ProVerifQueryResult> (); for (AvatarPragma pragma: this.results.keySet()) { @@ -469,12 +469,12 @@ public class ProVerifOutputAnalyzer { return resultMap; } - public HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> getAuthenticityResults() + public Map<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> getAuthenticityResults() { if (this.results == null) return null; - HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> resultMap = new HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> (); + Map<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> resultMap = new HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> (); for (AvatarPragma pragma: this.results.keySet()) { @@ -487,7 +487,7 @@ public class ProVerifOutputAnalyzer { return resultMap; } - public LinkedList<String> getErrors() { + public List<String> getErrors() { synchronized(errors) { return errors; } diff --git a/src/main/java/tmltranslator/TMLModeling.java b/src/main/java/tmltranslator/TMLModeling.java index bc1191c1cb..2255bf09de 100755 --- a/src/main/java/tmltranslator/TMLModeling.java +++ b/src/main/java/tmltranslator/TMLModeling.java @@ -757,7 +757,7 @@ public class TMLModeling<E> { public void backtrace(ProVerifOutputAnalyzer pvoa, String mappingName){ //System.out.println("Backtracing Confidentiality"); - HashMap<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults(); + Map<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults(); for (AvatarPragmaSecret pragma: confResults.keySet()) { ProVerifQueryResult result = confResults.get(pragma); @@ -829,7 +829,7 @@ public class TMLModeling<E> { } - public void backtraceAuthenticity(HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> authenticityResults, String mappingName) { + public void backtraceAuthenticity(Map<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> authenticityResults, String mappingName) { // System.out.println("Backtracing Authenticity"); for (AvatarPragmaAuthenticity pragma: authenticityResults.keySet()) { ProVerifQueryAuthResult result = authenticityResults.get(pragma); @@ -912,7 +912,7 @@ public class TMLModeling<E> { for (String channelName: channels){ if (channelName.contains("retData_") || channelName.contains("data_")){ channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); - String header= channelName.split("__retData_")[0]; + //String header= channelName.split("__retData_")[0]; for (TMLTask t: getTasks()){ if (channelName.contains(t.getName().split("__")[1])){ channelName = channelName.replace("_"+t.getName().split("__")[1],""); @@ -1008,7 +1008,7 @@ public class TMLModeling<E> { for (String channelName: channels){ if (channelName.contains("retData_") || channelName.contains("data_")){ channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); - String header= channelName.split("__retData_")[0]; + //String header= channelName.split("__retData_")[0]; for (TMLTask t: getTasks()){ if (channelName.contains(t.getName().split("__")[1])){ channelName = channelName.replace("_"+t.getName().split("__")[1],""); @@ -1112,7 +1112,7 @@ public class TMLModeling<E> { for (String channelName: channels){ if (channelName.contains("retData_") || channelName.contains("data_")){ channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); - String header= channelName.split("__retData_")[0]; + //String header= channelName.split("__retData_")[0]; for (TMLTask t: getTasks()){ if (channelName.contains(t.getName().split("__")[1])){ channelName = channelName.replace("_"+t.getName().split("__")[1],""); diff --git a/src/main/java/tmltranslator/toavatar/TML2Avatar.java b/src/main/java/tmltranslator/toavatar/TML2Avatar.java index 43f4430b0c..30980565bc 100644 --- a/src/main/java/tmltranslator/toavatar/TML2Avatar.java +++ b/src/main/java/tmltranslator/toavatar/TML2Avatar.java @@ -2115,7 +2115,7 @@ outerloop: return avspec; } - public void backtraceReachability(HashMap<AvatarPragmaReachability, ProVerifQueryResult> reachabilityResults) { + public void backtraceReachability( Map<AvatarPragmaReachability, ProVerifQueryResult> reachabilityResults) { for (AvatarPragmaReachability pragma: reachabilityResults.keySet()) { ProVerifQueryResult result = reachabilityResults.get(pragma); diff --git a/src/main/java/ui/AvatarDesignPanel.java b/src/main/java/ui/AvatarDesignPanel.java index 88e8454867..5e590ebbe4 100644 --- a/src/main/java/ui/AvatarDesignPanel.java +++ b/src/main/java/ui/AvatarDesignPanel.java @@ -63,6 +63,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; import java.util.*; +import java.util.List; /** * Class AvatarDesignPanel @@ -451,9 +452,9 @@ public class AvatarDesignPanel extends TURTLEPanel { resetModelBacktracingProVerif(); // Confidential attributes - HashMap<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults(); - LinkedList<AvatarAttribute> secretAttributes = new LinkedList<AvatarAttribute> (); - LinkedList<AvatarAttribute> nonSecretAttributes = new LinkedList<AvatarAttribute> (); + Map<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults(); + List<AvatarAttribute> secretAttributes = new LinkedList<AvatarAttribute> (); + List<AvatarAttribute> nonSecretAttributes = new LinkedList<AvatarAttribute> (); for (AvatarPragmaSecret pragma: confResults.keySet()) { ProVerifQueryResult result = confResults.get(pragma); @@ -505,7 +506,7 @@ public class AvatarDesignPanel extends TURTLEPanel { // Reachable states - HashMap<AvatarPragmaReachability, ProVerifQueryResult> reachResults = pvoa.getReachabilityResults(); + Map<AvatarPragmaReachability, ProVerifQueryResult> reachResults = pvoa.getReachabilityResults(); for (AvatarPragmaReachability pragma: reachResults.keySet()) { ProVerifQueryResult result = reachResults.get(pragma); @@ -530,7 +531,7 @@ public class AvatarDesignPanel extends TURTLEPanel { } } - HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> authResults = pvoa.getAuthenticityResults(); + Map<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> authResults = pvoa.getAuthenticityResults(); for (Object ob: abdp.getComponentList()) if (ob instanceof AvatarBDPragma) { AvatarBDPragma pragma = (AvatarBDPragma) ob; diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java index 0f8e24046f..d126806844 100644 --- a/src/main/java/ui/GTURTLEModeling.java +++ b/src/main/java/ui/GTURTLEModeling.java @@ -2031,20 +2031,26 @@ public class GTURTLEModeling { try { proverif = avatar2proverif.generateProVerif(true, true, 1, true, false); warnings = avatar2proverif.getWarnings(); + + // Issue #131 + final String proverifSpecFile = SpecConfigTTool.ProVerifCodeDirectory + "pvspec"; - if (!avatar2proverif.saveInFile("pvspec")) { + if (!avatar2proverif.saveInFile( proverifSpecFile )) { +// if (!avatar2proverif.saveInFile("pvspec")) { return; } RshClient rshc = new RshClient(ConfigurationTTool.ProVerifVerifierHost); - rshc.setCmd(ConfigurationTTool.ProVerifVerifierPath + " -in pitype pvspec"); + // Issue #131 + rshc.setCmd(ConfigurationTTool.ProVerifVerifierPath + " -in pitype " + proverifSpecFile ); +// rshc.setCmd(ConfigurationTTool.ProVerifVerifierPath + " -in pitype pvspec"); rshc.sendExecuteCommandRequest(); Reader data = rshc.getDataReaderFromProcess(); ProVerifOutputAnalyzer pvoa = getProVerifOutputAnalyzer(); pvoa.analyzeOutput(data, true); - HashMap<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults(); + Map<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults(); for (AvatarPragmaSecret pragma : confResults.keySet()) { if (confResults.get(pragma).isProved() && !confResults.get(pragma).isSatisfied()) { nonSecChans.add(pragma.getArg().getBlock().getName() + "__" + pragma.getArg().getName()); @@ -2055,7 +2061,7 @@ public class GTURTLEModeling { } } } - HashMap<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> authResults = pvoa.getAuthenticityResults(); + Map<AvatarPragmaAuthenticity, ProVerifQueryAuthResult> authResults = pvoa.getAuthenticityResults(); for (AvatarPragmaAuthenticity pragma : authResults.keySet()) { if (authResults.get(pragma).isProved() && !authResults.get(pragma).isSatisfied()) { nonAuthChans.add(pragma.getAttrA().getAttribute().getBlock().getName() + "__" + pragma.getAttrA().getAttribute().getName().replaceAll("_chData", "")); diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java index 836f53590f..1c1615bb1d 100644 --- a/src/main/java/ui/window/JDialogProverifVerification.java +++ b/src/main/java/ui/window/JDialogProverifVerification.java @@ -39,6 +39,56 @@ package ui.window; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Map; +import java.util.Vector; + +import javax.swing.Box; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTabbedPane; +import javax.swing.JTextField; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + import avatartranslator.AvatarPragma; import avatartranslator.AvatarPragmaAuthenticity; import avatartranslator.AvatarPragmaReachability; @@ -48,34 +98,21 @@ import launcher.LauncherException; import launcher.RshClient; import launcher.RshClientReader; import myutil.FileException; -import myutil.FileUtils; import myutil.GraphicLib; import myutil.MasterProcessInterface; import myutil.TraceManager; import proverifspec.ProVerifOutputAnalyzer; +import proverifspec.ProVerifOutputListener; import proverifspec.ProVerifQueryAuthResult; import proverifspec.ProVerifQueryResult; import proverifspec.ProVerifResultTraceStep; -import proverifspec.ProVerifOutputListener; +import tmltranslator.TMLMapping; import ui.AvatarDesignPanel; -import ui.util.IconManager; import ui.MainGUI; -import ui.TURTLEPanel; import ui.TMLArchiPanel; - +import ui.TURTLEPanel; import ui.interactivesimulation.JFrameSimulationSDPanel; -import tmltranslator.*; - -import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.io.*; -import java.util.*; +import ui.util.IconManager; /** @@ -152,7 +189,12 @@ public class JDialogProverifVerification extends JDialog implements ActionListen Map<JCheckBox, ArrayList<JCheckBox>> cpuTaskObjs = new HashMap<JCheckBox, ArrayList<JCheckBox>>(); private class MyMenuItem extends JMenuItem { - AvatarPragma pragma; + /** + * + */ + private static final long serialVersionUID = -344414299222823444L; + + AvatarPragma pragma; ProVerifQueryResult result; MyMenuItem(String text) { @@ -183,15 +225,21 @@ public class JDialogProverifVerification extends JDialog implements ActionListen private class ProVerifVerificationException extends Exception { - private String message; - - ProVerifVerificationException(String message) { - this.message = message; - } + /** + * + */ + private static final long serialVersionUID = -2359743729229833671L; + + // Issue #131 Already defined in super class + //private String message; - public String getMessage() { - return this.message; + public ProVerifVerificationException(String message) { + super( message ); } +// +// public String getMessage() { +// return this.message; +// } } /** @@ -787,13 +835,15 @@ public class JDialogProverifVerification extends JDialog implements ActionListen mgui.gtm.autoMapKeys(); } mode = NOT_STARTED; - } else { + } + else { testGo(); pathCode = code1.getText().trim(); - if (pathCode.isEmpty()) { - pathCode += "pvspec"; - } + // Issue #131: Not needed. Would duplicate file name +// if (pathCode.isEmpty()) { +// pathCode += "pvspec"; +// } SpecConfigTTool.checkAndCreateProverifDir(pathCode); @@ -933,7 +983,7 @@ public class JDialogProverifVerification extends JDialog implements ActionListen private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger() && e.getComponent() instanceof JList) { - JList curList = (JList) e.getComponent(); + JList<?> curList = (JList<?>) e.getComponent(); int row = curList.locationToIndex(e.getPoint()); curList.clearSelection(); curList.setSelectedIndex(row); -- GitLab