From 9c81fc65216435fdc834c2e64ca31aed0c943c8e Mon Sep 17 00:00:00 2001 From: Letitia Li <letitia.li@telecom-paristech.fr> Date: Thu, 12 Oct 2017 17:26:36 +0200 Subject: [PATCH] Performance Pragma fix --- .../java/tmltranslator/SecurityPattern.java | 1 + .../tmltranslator/toavatar/TML2Avatar.java | 26 +- src/main/java/ui/GTURTLEModeling.java | 2 +- src/main/java/ui/tmlad/TMLADEncrypt.java | 20 +- .../ui/tmlad/TMLActivityDiagramPanel.java | 10 +- .../JDialogCryptographicConfiguration.java | 843 ++++++++++-------- .../ui/window/JDialogPerformancePragma.java | 35 + 7 files changed, 539 insertions(+), 398 deletions(-) diff --git a/src/main/java/tmltranslator/SecurityPattern.java b/src/main/java/tmltranslator/SecurityPattern.java index e49d7afbc2..a9018cb0e2 100644 --- a/src/main/java/tmltranslator/SecurityPattern.java +++ b/src/main/java/tmltranslator/SecurityPattern.java @@ -56,6 +56,7 @@ public class SecurityPattern { public String nonce; public String formula; public String key; + public String algorithm=""; public SecurityPattern(String _name, String _type, String _overhead, String _size, String _enctime, String _dectime, String _nonce, String _formula, String _key){ this.name=_name; diff --git a/src/main/java/tmltranslator/toavatar/TML2Avatar.java b/src/main/java/tmltranslator/toavatar/TML2Avatar.java index b337ace686..d336ddaaa2 100644 --- a/src/main/java/tmltranslator/toavatar/TML2Avatar.java +++ b/src/main/java/tmltranslator/toavatar/TML2Avatar.java @@ -738,6 +738,8 @@ outerloop: //Add aencrypt method AvatarMethod aencrypt = new AvatarMethod("aencrypt", ae); block.addAttribute(new AvatarAttribute("encryptedKey_"+ae.securityPattern.key, AvatarType.INTEGER, block,null)); + block.addAttribute(new AvatarAttribute("key_"+ae.securityPattern.key, AvatarType.INTEGER, block,null)); + block.addAttribute(new AvatarAttribute("pubKey_"+ae.securityPattern.name, AvatarType.INTEGER, block,null)); aencrypt.addParameter(block.getAvatarAttributeWithName("key_"+ae.securityPattern.key)); aencrypt.addParameter(block.getAvatarAttributeWithName("pubKey_"+ae.securityPattern.name)); aencrypt.addReturnParameter(block.getAvatarAttributeWithName("encryptedKey_"+ae.securityPattern.key)); @@ -767,8 +769,11 @@ outerloop: ae.securityPattern.state1=as; } else if (ae.securityPattern.type.equals("Nonce")){ + //Do nothing except occupy time to forge nonce + + //Create a nonce by a random function - AvatarRandom arandom = new AvatarRandom("randomnonce",ae.getReferenceObject()); + /*AvatarRandom arandom = new AvatarRandom("randomnonce",ae.getReferenceObject()); arandom.setVariable(ae.securityPattern.name); arandom.setValues("0","10"); elementList.add(arandom); @@ -776,7 +781,7 @@ outerloop: tran = new AvatarTransition(block, "__afterrandom_"+ae.getName(), ae.getReferenceObject()); arandom.addNext(tran); elementList.add(tran); - block.addAttribute(new AvatarAttribute(ae.securityPattern.name, AvatarType.INTEGER, block, null)); + block.addAttribute(new AvatarAttribute(ae.securityPattern.name, AvatarType.INTEGER, block, null));*/ } else if (ae.securityPattern.type.equals("Hash")){ AvatarMethod hash = new AvatarMethod("hash", ae); @@ -1513,12 +1518,12 @@ outerloop: distributeKeys(); System.out.println("ALL KEYS " +accessKeys); - for (TMLTask t: accessKeys.keySet()){ + /*for (TMLTask t: accessKeys.keySet()){ System.out.println("TASK " +t.getName()); for (SecurityPattern sp: accessKeys.get(t)){ System.out.println(sp.name); } - } + }*/ for (TMLTask task:tasks){ @@ -2042,16 +2047,16 @@ outerloop: for (AvatarAttribute key: symKeys.get(sp)){ keys= keys+" "+key.getBlock().getName() + "."+key.getName(); } - avspec.addPragma(new AvatarPragmaInitialKnowledge("#InitialSessionKnowledge"+ keys, null, symKeys.get(sp), true)); + avspec.addPragma(new AvatarPragmaInitialKnowledge("#InitialSessionKnowledge "+ keys, null, symKeys.get(sp), true)); } } for (SecurityPattern sp:pubKeys.keySet()){ if (pubKeys.get(sp).size()!=0){ String keys = ""; - for (AvatarAttribute key: symKeys.get(sp)){ + for (AvatarAttribute key: pubKeys.get(sp)){ keys= keys+" "+key.getBlock().getName() + "."+key.getName(); } - avspec.addPragma(new AvatarPragmaInitialKnowledge("#InitialSessionKnowledge "+sp.name, null, pubKeys.get(sp),true)); + avspec.addPragma(new AvatarPragmaInitialKnowledge("#InitialSessionKnowledge "+keys, null, pubKeys.get(sp),true)); } } tmlmap.getTMLModeling().secChannelMap = secChannelMap; @@ -2119,9 +2124,10 @@ outerloop: else if (sp.type.equals("Asymmetric Encryption")){ AvatarAttribute pubkey = new AvatarAttribute("pubKey_"+sp.name, AvatarType.INTEGER, b, null); b.addAttribute(pubkey); + AvatarAttribute privkey = new AvatarAttribute("privKey_"+sp.name, AvatarType.INTEGER, b, null); b.addAttribute(privkey); - avspec.addPragma(new AvatarPragmaPrivatePublicKey("PrivatePublicKey "+sp.name, null, privkey, pubkey)); + avspec.addPragma(new AvatarPragmaPrivatePublicKey("#PrivatePublicKeys " + b.getName() + " " + privkey.getName() + " " + pubkey.getName(), null, privkey, pubkey)); if (pubKeys.containsKey(sp)){ pubKeys.get(sp).add(pubkey); } @@ -2135,10 +2141,14 @@ outerloop: AvatarBlock b2 = taskBlockMap.get(task2); pubkey = new AvatarAttribute("pubKey_"+sp.name, AvatarType.INTEGER, b2, null); b2.addAttribute(pubkey); + if (pubKeys.containsKey(sp)){ + pubKeys.get(sp).add(pubkey); + } } } } } + } public AvatarBlock createFifo(String name){ AvatarBlock fifo = new AvatarBlock("FIFO__FIFO"+name, avspec, null); diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java index 7bb68e4d45..301ec8365c 100755 --- a/src/main/java/ui/GTURTLEModeling.java +++ b/src/main/java/ui/GTURTLEModeling.java @@ -9479,7 +9479,7 @@ public class GTURTLEModeling { else { bl.addAttribute(new TAttribute(0, attr.getName(), attr.getType().getDefaultInitialValue(), type)); } - if (attr.getName().contains("key_")){ + if (attr.getName().contains("key_") || attr.getName().contains("privKey_")){ hasCrypto=true; bl.addCryptoElements(); } diff --git a/src/main/java/ui/tmlad/TMLADEncrypt.java b/src/main/java/ui/tmlad/TMLADEncrypt.java index f786c53c01..35081f5282 100755 --- a/src/main/java/ui/tmlad/TMLADEncrypt.java +++ b/src/main/java/ui/tmlad/TMLADEncrypt.java @@ -76,6 +76,7 @@ public class TMLADEncrypt extends TGCWithoutInternalComponent implements Embedde public String key =""; public String nonce=""; public String formula=""; + public String algorithm=""; protected int stateOfError = 0; // Not yet checked public TMLADEncrypt(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) { @@ -190,7 +191,7 @@ public class TMLADEncrypt extends TGCWithoutInternalComponent implements Embedde public boolean editOndoubleClick(JFrame frame) { //JDialogTwoString jdts = new JDialogTwoString(frame, "Setting channel's properties", "Channel name", channelName, "Nb of samples", nbOfSamples);] - String[] values=new String[]{securityContext, type, message_overhead, encTime, size, nonce, formula, decTime, key}; + String[] values=new String[]{securityContext, type, message_overhead, encTime, size, nonce, formula, decTime, key,algorithm}; String[] nonces=tdp.getMGUI().getAllNonce(); String[] keys = tdp.getMGUI().getAllKeys().toArray(new String[0]); JDialogCryptographicConfiguration jdms = new JDialogCryptographicConfiguration(frame, "Setting Cryptographic Configuration properties", values, nonces, keys); @@ -200,7 +201,7 @@ public class TMLADEncrypt extends TGCWithoutInternalComponent implements Embedde if (jdms.hasBeenSet() && (jdms.hasValidString(0))) { securityContext = jdms.getString(0); - type=jdms.getString(1); + type=jdms.getString(1); message_overhead=jdms.getString(2); encTime=jdms.getString(3); size=jdms.getString(4); @@ -208,7 +209,7 @@ public class TMLADEncrypt extends TGCWithoutInternalComponent implements Embedde formula = jdms.getString(6); decTime = jdms.getString(7); key = jdms.getString(8); - + algorithm=jdms.getString(9); return true; } @@ -239,16 +240,18 @@ public class TMLADEncrypt extends TGCWithoutInternalComponent implements Embedde sb.append(type); sb.append("\" overhead=\""); sb.append(message_overhead); - sb.append("\" size=\""); + sb.append("\" size=\""); sb.append(size); - sb.append("\" encTime=\""); + sb.append("\" encTime=\""); sb.append(encTime); - sb.append("\" decTime=\""); + sb.append("\" decTime=\""); sb.append(decTime); - sb.append("\" nonce=\""); + sb.append("\" nonce=\""); sb.append(nonce); - sb.append("\" key=\""); + sb.append("\" key=\""); sb.append(key); + sb.append("\" algorithm=\""); + sb.append(algorithm); sb.append("\" />\n"); sb.append("</extraparam>\n"); return new String(sb); @@ -287,6 +290,7 @@ public class TMLADEncrypt extends TGCWithoutInternalComponent implements Embedde decTime = elt.getAttribute("decTime"); nonce = elt.getAttribute("nonce"); key = elt.getAttribute("key"); + algorithm = elt.getAttribute("algorithm"); //System.out.println("eventName=" +eventName + " variable=" + result); } } diff --git a/src/main/java/ui/tmlad/TMLActivityDiagramPanel.java b/src/main/java/ui/tmlad/TMLActivityDiagramPanel.java index 33877457fd..eb6be9ed1f 100755 --- a/src/main/java/ui/tmlad/TMLActivityDiagramPanel.java +++ b/src/main/java/ui/tmlad/TMLActivityDiagramPanel.java @@ -216,8 +216,14 @@ public class TMLActivityDiagramPanel extends TDiagramPanel { for (TGComponent c: comps){ if (c instanceof TMLADEncrypt){ TMLADEncrypt en= (TMLADEncrypt) c; - if (!en.securityContext.isEmpty() && (en.type.equals("Symmetric Encryption") || en.type.equals("Asymmetric Encryption") || en.type.equals("MAC"))){ - ns.add(en.securityContext); + if (!en.securityContext.isEmpty()){ + if ((en.type.equals("Symmetric Encryption") || en.type.equals("MAC"))){ + ns.add(en.securityContext); + } + else if (en.type.equals("Asymmetric Encryption")) { + ns.add(en.securityContext); + //ns.add("pubKey" + en.securityContext); + } } } } diff --git a/src/main/java/ui/window/JDialogCryptographicConfiguration.java b/src/main/java/ui/window/JDialogCryptographicConfiguration.java index 200124d849..f9d5e7ebb3 100644 --- a/src/main/java/ui/window/JDialogCryptographicConfiguration.java +++ b/src/main/java/ui/window/JDialogCryptographicConfiguration.java @@ -48,6 +48,9 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; +import java.util.Vector; +import java.util.List; +import java.util.ArrayList; /** @@ -59,420 +62,502 @@ import java.util.HashMap; */ public class JDialogCryptographicConfiguration extends JDialogBase implements ActionListener { - private String [] values; + private String [] values; - private int nbString; + private int nbString; - private boolean set = false; + private boolean set = false; - private JPanel panel1; + private JPanel panel1; - // Panel1 - private JTextField [] texts; - private JButton inserts[]; - private HashMap<Integer, JComboBox<String>> helps; + private List<securityAlgorithm> secAlgs; + private Vector<String> algNames; + // Panel1 + private JTextField [] texts; + private JButton inserts[]; + private HashMap<Integer, JComboBox<String>> helps; - // Main Panel - private String[] nonces; - private String[] keys; + // Main Panel + private String[] nonces; + private String[] keys; - GridBagConstraints c0 = new GridBagConstraints(); - Container c; - /** Creates new form */ - // arrayDelay: [0] -> minDelay ; [1] -> maxDelay - public JDialogCryptographicConfiguration(Frame f, String title, String[] _values, String[] _nonces, String[] _keys) { + GridBagConstraints c0 = new GridBagConstraints(); + Container c; + /** Creates new form */ + // arrayDelay: [0] -> minDelay ; [1] -> maxDelay + public JDialogCryptographicConfiguration(Frame f, String title, String[] _values, String[] _nonces, String[] _keys) { - super(f, title, true); + super(f, title, true); - nbString = 9; + nbString = 10; - values=_values; - nonces=_nonces; - keys=_keys; - texts = new JTextField[nbString]; + values=_values; + nonces=_nonces; + keys=_keys; + texts = new JTextField[nbString]; + secAlgs= new ArrayList<securityAlgorithm>(); + algNames=new Vector<String>(); + initComponents(); + myInitComponents(); + pack(); + } - initComponents(); - myInitComponents(); - pack(); - } + private void myInitComponents() { + } - private void myInitComponents() { - } + private void initComponents() { - private void initComponents() { - inserts = new JButton[nbString]; - helps = new HashMap<>(); + //Add list of sample security algorithms + secAlgs.add(new securityAlgorithm("AES", "0","100","10","128","Symmetric Encryption")); + secAlgs.add(new securityAlgorithm("Triple-DES", "0","200","200","128","Symmetric Encryption")); + + secAlgs.add(new securityAlgorithm("RSA", "0","100","100","128","Asymmetric Encryption")); + secAlgs.add(new securityAlgorithm("ECC", "0","10","100","128","Asymmetric Encryption")); + + secAlgs.add(new securityAlgorithm("SHA-256", "0","100","100","128","Hash")); + secAlgs.add(new securityAlgorithm("Whirlpool", "0","100","100","128","Hash")); + + secAlgs.add(new securityAlgorithm("Poly-1305", "0","100","100","128","MAC")); + secAlgs.add(new securityAlgorithm("HMAC", "0","100","100","128","MAC")); + + for (securityAlgorithm secAlg: secAlgs){ + algNames.add(secAlg.name); + } + inserts = new JButton[nbString]; + helps = new HashMap<>(); - c = getContentPane(); - GridBagLayout gridbag0 = new GridBagLayout(); + c = getContentPane(); + GridBagLayout gridbag0 = new GridBagLayout(); - setFont(new Font("Helvetica", Font.PLAIN, 14)); - c.setLayout(gridbag0); + setFont(new Font("Helvetica", Font.PLAIN, 14)); + c.setLayout(gridbag0); - setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - if (values[1].contains("Encryption") || values[1].equals("MAC") || values[1].isEmpty()){ - panel1= new EncryptPanel(this); - } - else { - panel1=new funcPanel(this); - } - c0.gridwidth = 1; - c0.gridheight = 10; - c0.weighty = 1.0; - c0.weightx = 1.0; - c0.gridwidth = GridBagConstraints.REMAINDER; //end row - c.add(panel1, c0); - - - - - // main panel; - c0.gridwidth = 1; - c0.gridheight = 1; - c0.fill = GridBagConstraints.HORIZONTAL; - - initButtons(c0, c, this); - } - - public void actionPerformed(ActionEvent evt) { - String command = evt.getActionCommand(); - - // Compare the action command to the known actions. - if (command.equals("Save and Close")) { - closeDialog(); - } else if (command.equals("Cancel")) { - cancelDialog(); - } else if (inserts[0] != null) { - if (evt.getSource() == inserts[0]) { - texts[1].setText(helps.get(1).getSelectedItem().toString()); - boolean repanel = false; - if (helps.get(1).getSelectedIndex()==5 && !(panel1 instanceof advPanel)){ - values[1]=helps.get(1).getSelectedItem().toString(); - values[0]=texts[0].getText(); - values[3]=texts[3].getText(); - values[2]=texts[3].getText(); - values[5]=""; - values[4]=""; - repanel=true; - c.removeAll(); - panel1= new advPanel(this); + if (values[1].contains("Encryption") || values[1].equals("MAC") || values[1].isEmpty()){ + panel1= new EncryptPanel(this); } - else if ((helps.get(1).getSelectedIndex() >2) && !(panel1 instanceof funcPanel)){ - values[1]=helps.get(1).getSelectedItem().toString(); - values[0]=texts[0].getText(); - values[3]=texts[3].getText(); - values[2]=""; - values[5]=""; - values[6]=""; - repanel=true; - c.removeAll(); - panel1= new funcPanel(this); + else { + panel1=new funcPanel(this); } - else if ((helps.get(1).getSelectedIndex() <3) && !(panel1 instanceof EncryptPanel)){ - values[1]=helps.get(1).getSelectedItem().toString(); - values[0]=texts[0].getText(); - values[3]=texts[3].getText(); - values[4]=""; - values[6]=""; - c.removeAll(); - repanel=true; - panel1= new EncryptPanel(this); + c0.gridwidth = 1; + c0.gridheight = 10; + c0.weighty = 1.0; + c0.weightx = 1.0; + c0.gridwidth = GridBagConstraints.REMAINDER; //end row + c.add(panel1, c0); + + // main panel; + c0.gridwidth = 1; + c0.gridheight = 1; + c0.fill = GridBagConstraints.HORIZONTAL; + initButtons(c0, c, this); + } + public void actionPerformed(ActionEvent evt) { + String command = evt.getActionCommand(); + + // Compare the action command to the known actions. + if (command.equals("Save and Close")) { + closeDialog(); + } else if (command.equals("Cancel")) { + cancelDialog(); + } else if (inserts[0] != null) { + if (evt.getSource() == inserts[0]) { + texts[1].setText(helps.get(1).getSelectedItem().toString()); + boolean repanel = false; + if (helps.get(1).getSelectedIndex()==5 && !(panel1 instanceof advPanel)){ + values[1]=helps.get(1).getSelectedItem().toString(); + values[0]=texts[0].getText(); + values[3]=texts[3].getText(); + values[2]=texts[3].getText(); + values[5]=""; + values[4]=""; + values[9]=texts[9].getText(); + repanel=true; + c.removeAll(); + panel1= new advPanel(this); + } + else if ((helps.get(1).getSelectedIndex() >2) && !(panel1 instanceof funcPanel)){ + values[1]=helps.get(1).getSelectedItem().toString(); + values[0]=texts[0].getText(); + values[3]=texts[3].getText(); + values[2]=""; + values[5]=""; + values[6]=""; + values[9]=texts[9].getText(); + repanel=true; + c.removeAll(); + panel1= new funcPanel(this); + } + else if ((helps.get(1).getSelectedIndex() <3) && !(panel1 instanceof EncryptPanel)){ + values[1]=helps.get(1).getSelectedItem().toString(); + values[0]=texts[0].getText(); + values[3]=texts[3].getText(); + values[4]=""; + values[6]=""; + values[9]=""; + c.removeAll(); + repanel=true; + panel1= new EncryptPanel(this); + + } + + if (repanel){ + c0.gridwidth = 1; + c0.gridheight = 10; + c0.weighty = 1.0; + c0.weightx = 1.0; + c0.gridwidth = GridBagConstraints.REMAINDER; //end row + + c.add(panel1,c0); + // main panel; + c0.gridwidth = 1; + c0.gridheight = 1; + c0.fill = GridBagConstraints.HORIZONTAL; + closeButton = new JButton("Save and Close", IconManager.imgic25); + //closeButton.setPreferredSize(new Dimension(600, 50)); + closeButton.addActionListener(this); + c.add(closeButton, c0); + c0.gridwidth = GridBagConstraints.REMAINDER; //end row + cancelButton = new JButton("Cancel", IconManager.imgic27); + cancelButton.addActionListener(this); + c.add(cancelButton, c0); + this.invalidate(); + this.validate(); + this.repaint(); + } + } + if (evt.getSource() == inserts[5]) { + if (helps.get(5).getSelectedItem()!=null){ + texts[5].setText(helps.get(5).getSelectedItem().toString()); + } + } + if (evt.getSource() == inserts[8]) { + if (helps.get(8).getSelectedItem()!=null){ + texts[8].setText(helps.get(8).getSelectedItem().toString()); + } + } + //Using preset algorithm + if (evt.getSource() == inserts[9]) { + if (helps.get(9).getSelectedItem()!=null){ + texts[9].setText(helps.get(9).getSelectedItem().toString()); + for (securityAlgorithm secAlg: secAlgs){ + if (secAlg.name.equals(texts[9].getText())){ + //Set algorithm times + overhead + texts[1].setText(secAlg.type); + texts[2].setText(secAlg.overhead); + texts[3].setText(secAlg.encryptCC); + texts[7].setText(secAlg.decryptCC); + } + } + } + } } - - if (repanel){ - c0.gridwidth = 1; - c0.gridheight = 10; - c0.weighty = 1.0; - c0.weightx = 1.0; - c0.gridwidth = GridBagConstraints.REMAINDER; //end row - - c.add(panel1,c0); - // main panel; - c0.gridwidth = 1; - c0.gridheight = 1; - c0.fill = GridBagConstraints.HORIZONTAL; - closeButton = new JButton("Save and Close", IconManager.imgic25); - //closeButton.setPreferredSize(new Dimension(600, 50)); - closeButton.addActionListener(this); - c.add(closeButton, c0); - c0.gridwidth = GridBagConstraints.REMAINDER; //end row - cancelButton = new JButton("Cancel", IconManager.imgic27); - cancelButton.addActionListener(this); - c.add(cancelButton, c0); - this.invalidate(); - this.validate(); - this.repaint(); + } + + + + public class EncryptPanel extends JPanel { + EncryptPanel(JDialogCryptographicConfiguration j){ + GridBagConstraints c1 = new GridBagConstraints(); + GridBagLayout gridbag1 = new GridBagLayout(); + + this.setLayout(gridbag1); + + this.setBorder(new javax.swing.border.TitledBorder("Properties")); + + this.setPreferredSize(new Dimension(600, 200)); + + c1.weighty = 1.0; + c1.weightx = 1.0; + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + c1.fill = GridBagConstraints.BOTH; + c1.gridheight = 1; + add(new JLabel(" "), c1); + + c1.gridwidth = 1; + c1.gridheight = 1; + c1.weighty = 1.0; + c1.weightx = 1.0; + c1.anchor = GridBagConstraints.CENTER; + c1.fill = GridBagConstraints.HORIZONTAL; + c1.anchor = GridBagConstraints.CENTER; + String[] vals = new String[]{"Symmetric Encryption", "Asymmetric Encryption","MAC", "Hash", "Nonce", "Advanced"}; + // String1 + c1.gridwidth = 1; + add(new JLabel("Cryptographic Configuration Name"),c1); + texts[0]=new JTextField(values[0],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[0],c1); + + c1.gridwidth=1; + add(new JLabel("Security Pattern"), c1); + helps.put(1, new JComboBox<>(vals)); + helps.get(1).setSelectedItem(values[1]); + add(helps.get(1),c1); + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[0] = new JButton("Use"); + inserts[0].addActionListener(j); + add(inserts[0], c1); + texts[1]=new JTextField(values[1], 15); + add(texts[1], c1); + + c1.gridwidth = 1; + add(new JLabel("Overhead"),c1); + texts[2]=new JTextField(values[2],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[2],c1); + + c1.gridwidth = 1; + add(new JLabel("Encryption Computational Complexity"),c1); + texts[3]=new JTextField(values[3],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[3],c1); + + c1.gridwidth = 1; + add(new JLabel("Decryption Computational Complexity"),c1); + texts[7]=new JTextField(values[7],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[7],c1); + + c1.gridwidth = 1; + add(new JLabel("Nonce"),c1); + helps.put(5, new JComboBox<>(nonces)); + if (helps.get(5).getItemCount() > 0){ + helps.get(5).setSelectedItem(values[5]); + } + add(helps.get(5),c1); + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[5] = new JButton("Use"); + inserts[5].addActionListener(j); + add(inserts[5], c1); + texts[5]=new JTextField(values[5], 15); + add(texts[5], c1); + + c1.gridwidth = 1; + add(new JLabel("Encrypted Key"),c1); + helps.put(8, new JComboBox<>(keys)); + if (helps.get(8).getItemCount() > 0){ + helps.get(8).setSelectedItem(values[8]); + } + add(helps.get(8),c1); + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[8] = new JButton("Use"); + inserts[8].addActionListener(j); + add(inserts[8], c1); + texts[8]=new JTextField(values[8], 15); + add(texts[8], c1); + + c1.gridwidth = 1; + add(new JLabel("Algorithm"),c1); + helps.put(9, new JComboBox<>(algNames)); + helps.get(9).setSelectedItem(values[9]); + add(helps.get(9),c1); + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[9] = new JButton("Use"); + inserts[9].addActionListener(j); + add(inserts[9], c1); + texts[9]=new JTextField(values[9],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[9],c1); + } - } - if (evt.getSource() == inserts[5]) { - if (helps.get(5).getSelectedItem()!=null){ - texts[5].setText(helps.get(5).getSelectedItem().toString()); + + + + } + + public class funcPanel extends JPanel { + funcPanel(JDialogCryptographicConfiguration j){ + GridBagConstraints c1 = new GridBagConstraints(); + GridBagLayout gridbag1 = new GridBagLayout(); + + setLayout(gridbag1); + + setBorder(new javax.swing.border.TitledBorder("Properties")); + + setPreferredSize(new Dimension(600, 200)); + + c1.weighty = 1.0; + c1.weightx = 1.0; + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + c1.fill = GridBagConstraints.BOTH; + c1.gridheight = 1; + add(new JLabel(" "), c1); + + // second line panel1 + c1.gridwidth = 1; + c1.gridheight = 1; + c1.weighty = 1.0; + c1.weightx = 1.0; + c1.anchor = GridBagConstraints.CENTER; + c1.fill = GridBagConstraints.HORIZONTAL; + c1.anchor = GridBagConstraints.CENTER; + String[] vals = new String[]{"Symmetric Encryption", "Asymmetric Encryption","MAC", "Hash", "Nonce", "Advanced"}; + // String1 + c1.gridwidth = 1; + add(new JLabel("Cryptographic Configuration Name"),c1); + texts[0]=new JTextField(values[0],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[0],c1); + + c1.gridwidth=1; + add(new JLabel("Security Pattern"), c1); + helps.put(1, new JComboBox<>(vals)); + helps.get(1).setSelectedItem(values[1]); + add(helps.get(1),c1); + + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[0] = new JButton("Use"); + inserts[0].addActionListener(j); + add(inserts[0], c1); + texts[1]=new JTextField(values[1], 15); + add(texts[1], c1); + + c1.gridwidth = 1; + add(new JLabel("Computational Complexity"),c1); + texts[3]=new JTextField(values[3],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[3],c1); + + c1.gridwidth = 1; + add(new JLabel("Size"),c1); + texts[4]=new JTextField(values[4],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[4],c1); + + c1.gridwidth = 1; + add(new JLabel("Algorithm"),c1); + helps.put(9, new JComboBox<>(algNames)); + helps.get(9).setSelectedItem(values[9]); + add(helps.get(9),c1); + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[9] = new JButton("Use"); + inserts[9].addActionListener(j); + add(inserts[9], c1); + texts[9]=new JTextField(values[9],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[9],c1); } - } - if (evt.getSource() == inserts[8]) { - if (helps.get(8).getSelectedItem()!=null){ - texts[8].setText(helps.get(8).getSelectedItem().toString()); + } + + + public class advPanel extends JPanel { + advPanel(JDialogCryptographicConfiguration j){ + GridBagConstraints c1 = new GridBagConstraints(); + GridBagLayout gridbag1 = new GridBagLayout(); + + setLayout(gridbag1); + + setBorder(new javax.swing.border.TitledBorder("Properties")); + + setPreferredSize(new Dimension(600, 200)); + + c1.weighty = 1.0; + c1.weightx = 1.0; + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + c1.fill = GridBagConstraints.BOTH; + c1.gridheight = 1; + add(new JLabel(" "), c1); + + // second line panel1 + c1.gridwidth = 1; + c1.gridheight = 1; + c1.weighty = 1.0; + c1.weightx = 1.0; + c1.anchor = GridBagConstraints.CENTER; + c1.fill = GridBagConstraints.HORIZONTAL; + c1.anchor = GridBagConstraints.CENTER; + String[] vals = new String[]{"Symmetric Encryption", "Asymmetric Encryption","MAC", "Hash", "Nonce", "Advanced"}; + + // String1 + c1.gridwidth = 1; + add(new JLabel("Cryptographic Configuration Name"),c1); + texts[0]=new JTextField(values[0],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[0],c1); + + c1.gridwidth=1; + add(new JLabel("Security Pattern"), c1); + helps.put(1, new JComboBox<>(vals)); + helps.get(1).setSelectedItem(values[1]); + add(helps.get(1),c1); + c1.gridwidth=GridBagConstraints.REMAINDER; + inserts[0] = new JButton("Use"); + inserts[0].addActionListener(j); + add(inserts[0], c1); + texts[1]=new JTextField(values[1], 15); + add(texts[1], c1); + + c1.gridwidth = 1; + add(new JLabel("Overhead"),c1); + texts[2]=new JTextField(values[2],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[2],c1); + + + c1.gridwidth = 1; + add(new JLabel("Computational Complexity"),c1); + texts[3]=new JTextField(values[3],15); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + add(texts[3],c1); + + + + c1.gridwidth=1; + add(new JLabel("Custom Security Formula"), c1); + c1.gridwidth = GridBagConstraints.REMAINDER; //end row + texts[6] = new JTextField(values[6], 15); + add(texts[6],c1); + } - } } - } - - - - public class EncryptPanel extends JPanel { - EncryptPanel(JDialogCryptographicConfiguration j){ - GridBagConstraints c1 = new GridBagConstraints(); - GridBagLayout gridbag1 = new GridBagLayout(); - - this.setLayout(gridbag1); - - this.setBorder(new javax.swing.border.TitledBorder("Properties")); - - this.setPreferredSize(new Dimension(600, 200)); - - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - c1.fill = GridBagConstraints.BOTH; - c1.gridheight = 1; - add(new JLabel(" "), c1); - - c1.gridwidth = 1; - c1.gridheight = 1; - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.anchor = GridBagConstraints.CENTER; - c1.fill = GridBagConstraints.HORIZONTAL; - c1.anchor = GridBagConstraints.CENTER; - String[] vals = new String[]{"Symmetric Encryption", "Asymmetric Encryption","MAC", "Hash", "Nonce", "Advanced"}; - // String1 - c1.gridwidth = 1; - add(new JLabel("Cryptographic Configuration Name"),c1); - texts[0]=new JTextField(values[0],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[0],c1); - - c1.gridwidth=1; - add(new JLabel("Security Pattern"), c1); - helps.put(1, new JComboBox<>(vals)); - helps.get(1).setSelectedItem(values[1]); - add(helps.get(1),c1); - c1.gridwidth=GridBagConstraints.REMAINDER; - inserts[0] = new JButton("Use"); - inserts[0].addActionListener(j); - add(inserts[0], c1); - texts[1]=new JTextField(values[1], 15); - add(texts[1], c1); - - c1.gridwidth = 1; - add(new JLabel("Overhead"),c1); - texts[2]=new JTextField(values[2],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[2],c1); - - c1.gridwidth = 1; - add(new JLabel("Encryption Computational Complexity"),c1); - texts[3]=new JTextField(values[3],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[3],c1); - - c1.gridwidth = 1; - add(new JLabel("Decryption Computational Complexity"),c1); - texts[7]=new JTextField(values[7],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[7],c1); - - c1.gridwidth = 1; - add(new JLabel("Nonce"),c1); - helps.put(5, new JComboBox<>(nonces)); - if (helps.get(5).getItemCount() > 0){ - helps.get(5).setSelectedItem(values[5]); + + public void closeDialog() { + set = true; + dispose(); } - add(helps.get(5),c1); - c1.gridwidth=GridBagConstraints.REMAINDER; - inserts[5] = new JButton("Use"); - inserts[5].addActionListener(j); - add(inserts[5], c1); - texts[5]=new JTextField(values[5], 15); - add(texts[5], c1); - - c1.gridwidth = 1; - add(new JLabel("Encrypted Key"),c1); - helps.put(8, new JComboBox<>(keys)); - if (helps.get(8).getItemCount() > 0){ - helps.get(8).setSelectedItem(values[8]); + + public String getString(int i) { + if (texts[i]!=null){ + return texts[i].getText(); + } + return ""; } - add(helps.get(8),c1); - c1.gridwidth=GridBagConstraints.REMAINDER; - inserts[8] = new JButton("Use"); - inserts[8].addActionListener(j); - add(inserts[8], c1); - texts[8]=new JTextField(values[8], 15); - add(texts[8], c1); + public boolean hasValidString(int i) { + return texts[i] != null && texts[i].getText().length() > 0; } - } - - public class funcPanel extends JPanel { - funcPanel(JDialogCryptographicConfiguration j){ - GridBagConstraints c1 = new GridBagConstraints(); - GridBagLayout gridbag1 = new GridBagLayout(); - - setLayout(gridbag1); - - setBorder(new javax.swing.border.TitledBorder("Properties")); - - setPreferredSize(new Dimension(600, 200)); - - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - c1.fill = GridBagConstraints.BOTH; - c1.gridheight = 1; - add(new JLabel(" "), c1); - - // second line panel1 - c1.gridwidth = 1; - c1.gridheight = 1; - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.anchor = GridBagConstraints.CENTER; - c1.fill = GridBagConstraints.HORIZONTAL; - c1.anchor = GridBagConstraints.CENTER; - String[] vals = new String[]{"Symmetric Encryption", "Asymmetric Encryption","MAC", "Hash", "Nonce", "Advanced"}; - // String1 - c1.gridwidth = 1; - add(new JLabel("Cryptographic Configuration Name"),c1); - texts[0]=new JTextField(values[0],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[0],c1); - - c1.gridwidth=1; - add(new JLabel("Security Pattern"), c1); - helps.put(1, new JComboBox<>(vals)); - helps.get(1).setSelectedItem(values[1]); - add(helps.get(1),c1); - - c1.gridwidth=GridBagConstraints.REMAINDER; - inserts[0] = new JButton("Use"); - inserts[0].addActionListener(j); - add(inserts[0], c1); - texts[1]=new JTextField(values[1], 15); - add(texts[1], c1); - - c1.gridwidth = 1; - add(new JLabel("Computational Complexity"),c1); - texts[3]=new JTextField(values[3],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[3],c1); - - c1.gridwidth = 1; - add(new JLabel("Size"),c1); - texts[4]=new JTextField(values[4],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[4],c1); - - } - } - - -public class advPanel extends JPanel { - advPanel(JDialogCryptographicConfiguration j){ - GridBagConstraints c1 = new GridBagConstraints(); - GridBagLayout gridbag1 = new GridBagLayout(); - - setLayout(gridbag1); - - setBorder(new javax.swing.border.TitledBorder("Properties")); - - setPreferredSize(new Dimension(600, 200)); - - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - c1.fill = GridBagConstraints.BOTH; - c1.gridheight = 1; - add(new JLabel(" "), c1); - - // second line panel1 - c1.gridwidth = 1; - c1.gridheight = 1; - c1.weighty = 1.0; - c1.weightx = 1.0; - c1.anchor = GridBagConstraints.CENTER; - c1.fill = GridBagConstraints.HORIZONTAL; - c1.anchor = GridBagConstraints.CENTER; - String[] vals = new String[]{"Symmetric Encryption", "Asymmetric Encryption","MAC", "Hash", "Nonce", "Advanced"}; - - // String1 - c1.gridwidth = 1; - add(new JLabel("Cryptographic Configuration Name"),c1); - texts[0]=new JTextField(values[0],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[0],c1); - - c1.gridwidth=1; - add(new JLabel("Security Pattern"), c1); - helps.put(1, new JComboBox<>(vals)); - helps.get(1).setSelectedItem(values[1]); - add(helps.get(1),c1); - c1.gridwidth=GridBagConstraints.REMAINDER; - inserts[0] = new JButton("Use"); - inserts[0].addActionListener(j); - add(inserts[0], c1); - texts[1]=new JTextField(values[1], 15); - add(texts[1], c1); - - c1.gridwidth = 1; - add(new JLabel("Overhead"),c1); - texts[2]=new JTextField(values[2],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[2],c1); - - - c1.gridwidth = 1; - add(new JLabel("Computational Complexity"),c1); - texts[3]=new JTextField(values[3],15); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - add(texts[3],c1); - - - - c1.gridwidth=1; - add(new JLabel("Custom Security Formula"), c1); - c1.gridwidth = GridBagConstraints.REMAINDER; //end row - texts[6] = new JTextField(values[6], 15); - add(texts[6],c1); - } - } - - public void closeDialog() { - set = true; - dispose(); - } - - public String getString(int i) { - if (texts[i]!=null){ - return texts[i].getText(); + + + public boolean hasBeenSet() { + return set; } - return ""; - } - public boolean hasValidString(int i) { - return texts[i] != null && texts[i].getText().length() > 0; + public void cancelDialog() { + dispose(); } + public class securityAlgorithm { + String name; + String overhead; + String encryptCC; + String decryptCC; + String keysize; + String type; + public securityAlgorithm(String name, String overhead, String encryptCC, String decryptCC, String keysize, String type){ + this.name=name; + this.overhead=overhead; + this.encryptCC = encryptCC; + this.decryptCC= decryptCC; + this.keysize= keysize; + this.type=type; + } + } - public boolean hasBeenSet() { - return set; - } - public void cancelDialog() { - dispose(); - } } diff --git a/src/main/java/ui/window/JDialogPerformancePragma.java b/src/main/java/ui/window/JDialogPerformancePragma.java index fa053e982d..1ae0fd6bd1 100644 --- a/src/main/java/ui/window/JDialogPerformancePragma.java +++ b/src/main/java/ui/window/JDialogPerformancePragma.java @@ -263,6 +263,41 @@ public class JDialogPerformancePragma extends JDialogBase implements ActionListe setFont(f); c.setLayout(new BorderLayout()); //setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + helpPopup = new JPopupMenu(); + //JTextArea jft = new JTextArea("UPPAAL pragmas"); + //helpPopup.add(jft); + JLabel t = new JLabel(""); + JLabel header= new JLabel(" Performance Pragma"); + Font headerFont=new Font(t.getFont().getName(),Font.BOLD,t.getFont().getSize()+2); + header.setFont(headerFont); + helpPopup.add(header); + //Text + helpPopup.add(new JLabel(" Performance Pragma allow us to query and record ")); + helpPopup.add(new JLabel(" the latency (in cycles) between two events after simulation")); + helpPopup.add(new JLabel(" Depending on the format of the pragma, results can be the")); + helpPopup.add(new JLabel(" numeric average latency value or a verified true/false result")); + + JLabel example =new JLabel(" Examples:"); + example.setFont(headerFont); + helpPopup.add(example); + + Font exFont=new Font(t.getFont().getName(),Font.ITALIC,t.getFont().getSize()); + JLabel t1 = new JLabel(" Latency(block1.state1, block2.s)<10:"); + t1.setFont(exFont); + helpPopup.add(t1); + helpPopup.add(new JLabel(" Will be marked with a green check mark or ")); + helpPopup.add(new JLabel(" red cross depending on simulation results")); + + JLabel t2 = new JLabel(" Latency(block1.state1, block2.s)?:"); + t2.setFont(exFont); + helpPopup.add(t2); + + helpPopup.add(new JLabel(" Will be marked with the average latency")); + helpPopup.add(new JLabel(" time after simulation")); + helpPopup.setPreferredSize(new Dimension(600,250)); + + textarea = new JTextArea(); textarea.setEditable(true); -- GitLab