From c5d0bf021cdb311fae4db06a54ca56bcb8c9ec16 Mon Sep 17 00:00:00 2001 From: Letitia Li <letitia.li@telecom-paristech.fr> Date: Mon, 29 May 2017 09:25:05 +0200 Subject: [PATCH] TML verification update --- .../toproverif/AVATAR2ProVerif.java | 4 +- src/tmltranslator/TMLModeling.java | 286 ++++++++++-------- src/tmltranslator/toavatar/TML2Avatar.java | 89 +++--- src/ui/GTURTLEModeling.java | 9 +- .../JDialogCryptographicConfiguration.java | 2 +- 5 files changed, 217 insertions(+), 173 deletions(-) diff --git a/src/avatartranslator/toproverif/AVATAR2ProVerif.java b/src/avatartranslator/toproverif/AVATAR2ProVerif.java index 6de4f4bc0f..709ca3ce8d 100755 --- a/src/avatartranslator/toproverif/AVATAR2ProVerif.java +++ b/src/avatartranslator/toproverif/AVATAR2ProVerif.java @@ -1250,7 +1250,9 @@ public class AVATAR2ProVerif implements AvatarTranslator { if (! (args.get(i) instanceof AvatarAttribute)) { CheckingError ce = new CheckingError(CheckingError.BEHAVIOR_ERROR, "'" + args.get(i).getName () + "' should be an attribute (ignored)"); ce.setAvatarBlock(arg.block); - ce.setTDiagramPanel(((AvatarDesignPanel)(this.avspec.getReferenceObject())).getAvatarSMDPanel(arg.block.getName())); + if (this.avspec.getReferenceObject() instanceof AvatarDesignPanel){ + ce.setTDiagramPanel(((AvatarDesignPanel)(this.avspec.getReferenceObject())).getAvatarSMDPanel(arg.block.getName())); + } ce.setTGComponent((TGComponent)(_asme.getReferenceObject())); this.warnings.add(ce); ok = false; diff --git a/src/tmltranslator/TMLModeling.java b/src/tmltranslator/TMLModeling.java index 281c13a28f..bee0b1c30e 100755 --- a/src/tmltranslator/TMLModeling.java +++ b/src/tmltranslator/TMLModeling.java @@ -692,7 +692,7 @@ public class TMLModeling { } public void backtrace(ProVerifOutputAnalyzer pvoa, String mappingName){ - //System.out.println("Backtracing Confidentiality"); + System.out.println("Backtracing Confidentiality"); LinkedList<AvatarAttribute> secretAttributes = pvoa.getSecretTerms (); LinkedList<AvatarAttribute> nonSecretAttributes = pvoa.getNonSecretTerms (); for (AvatarAttribute attr: secretAttributes){ @@ -726,18 +726,20 @@ public class TMLModeling { } } List<String> channels=secChannelMap.get(attr.getName()); - for (String channelName: channels){ - // if (channelName!=null){ - channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkConf){ - port.checkSecConfStatus = 2; - port.secName= attr.getName(); - } - } - } - } + if (channels!=null){ + for (String channelName: channels){ + // if (channelName!=null){ + channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkConf){ + port.checkSecConfStatus = 2; + port.secName= attr.getName(); + } + } + } + } + } for (TMLTask t:getTasks()){ if (t.getReferenceObject()==null){ continue; @@ -782,18 +784,20 @@ public class TMLModeling { } } List<String> channels=secChannelMap.get(attr.getName()); - for (String channelName: channels){ -// if (channelName!=null){ - channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkConf){ - port.checkSecConfStatus = 3; - port.secName= attr.getName(); - } - } - } - } + if (channels!=null){ + for (String channelName: channels){ +// if (channelName!=null){ + channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkConf){ + port.checkSecConfStatus = 3; + port.secName= attr.getName(); + } + } + } + } + } for (TMLTask t:getTasks()){ if (t.getReferenceObject() instanceof TMLCPrimitiveComponent){ TMLCPrimitiveComponent comp = (TMLCPrimitiveComponent) t.getReferenceObject(); @@ -804,6 +808,7 @@ public class TMLModeling { } } } + System.out.println("Finished backtracing"); return; } public void backtraceAuthenticity(LinkedList<String> satisfiedAuthenticity, LinkedList<String> satisfiedWeakAuthenticity,LinkedList<String> nonSatisfiedAuthenticity, String mappingName){ @@ -867,19 +872,21 @@ public class TMLModeling { }*/ signalName=signalName.split("__")[1]; List<String> channels=secChannelMap.get(signalName); - for (String channelName: channels){ - // if (channelName!=null){ - channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkAuth){ - port.checkStrongAuthStatus = 2; - port.secName= signalName; - } - } - } - } - } + if (channels!=null){ + for (String channelName: channels){ + // if (channelName!=null){ + channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkAuth){ + port.checkStrongAuthStatus = 2; + port.secName= signalName; + } + } + } + } + } + } for (String s: satisfiedWeakAuthenticity){ String signalName = s.split("_chData")[0]; signalName = signalName.split("__")[1]; @@ -932,20 +939,22 @@ public class TMLModeling { }*/ signalName = signalName.split("__")[1]; List<String> channels=secChannelMap.get(signalName); - for (String channelName:channels){ -// if (channelName!=null){ - System.out.println("original channel " + channelName); - channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkAuth){ - port.checkWeakAuthStatus = 2; - port.secName= signalName; - } - } - } - } - } + if (channels!=null){ + for (String channelName:channels){ +// if (channelName!=null){ + System.out.println("original channel " + channelName); + channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkAuth){ + port.checkWeakAuthStatus = 2; + port.secName= signalName; + } + } + } + } + } + } for (String s: nonSatisfiedAuthenticity){ System.out.println(s); String signalName = s.split("_chData")[0]; @@ -1009,101 +1018,110 @@ public class TMLModeling { } }*/ List<String> channels=secChannelMap.get(signalName); - for (String channelName:channels){ -// if (channelName!=null){ - channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkAuth){ - port.checkStrongAuthStatus = 3; - port.secName= signalName; - } - } - } - } - } - - //In case of HSM - for (String s: satisfiedWeakAuthenticity){ - String signalName = s.split("__decrypt")[0]; - signalName = signalName.split("__")[1]; - List<String> channels=secChannelMap.get(signalName); - for (String channelName: channels){ -// if (channelName!=null){ - if (channelName.contains("retData_") || channelName.contains("data_")){ - channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); - //channelName=channelName.split("__retData_")[1]; - String header= channelName.split("__retData_")[0]; - for (TMLTask t: getTasks()){ - if (channelName.contains(t.getName().split("__")[1])){ - channelName = channelName.replace("_"+t.getName().split("__")[1],""); - } - } - TMLChannel channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ + if (channels!=null){ + for (String channelName:channels){ +// if (channelName!=null){ + channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ if (port.checkAuth){ - port.checkWeakAuthStatus = 2; + port.checkStrongAuthStatus = 3; port.secName= signalName; - } - } - } + } + } + } } - } + } } + //In case of HSM + for (String s: nonSatisfiedAuthenticity){ String signalName = s.split("__decrypt")[0]; signalName = signalName.split("__")[1]; List<String> channels=secChannelMap.get(signalName); - for (String channelName: channels){ - //if (channelName!=null){ - if (channelName.contains("retData_") || channelName.contains("data_")){ - channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); - //channelName=channelName.split("__retData_")[1]; - String header= channelName.split("__retData_")[0]; - for (TMLTask t: getTasks()){ - if (channelName.contains(t.getName().split("__")[1])){ - channelName = channelName.replace("_"+t.getName().split("__")[1],""); - } - } - TMLChannel channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkAuth){ - port.checkWeakAuthStatus = 3; - port.secName= signalName; - } - } - } - } - } + if (channels!=null){ + for (String channelName: channels){ + //if (channelName!=null){ + if (channelName.contains("retData_") || channelName.contains("data_")){ + channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); + //channelName=channelName.split("__retData_")[1]; + String header= channelName.split("__retData_")[0]; + for (TMLTask t: getTasks()){ + if (channelName.contains(t.getName().split("__")[1])){ + channelName = channelName.replace("_"+t.getName().split("__")[1],""); + } + } + TMLChannel channel = getChannelByShortName(channelName); + if (channel!=null){ + + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkAuth){ + port.checkWeakAuthStatus = 3; + port.secName= signalName; + } + } + } + } + } + } } - for (String s: satisfiedAuthenticity){ + for (String s: satisfiedWeakAuthenticity){ String signalName = s.split("__decrypt")[0]; signalName = signalName.split("__")[1]; List<String> channels=secChannelMap.get(signalName); - for (String channelName: channels){ + if (channels!=null){ + for (String channelName: channels){ // if (channelName!=null){ - if (channelName.contains("retData_") || channelName.contains("data_")){ - channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); - //channelName=channelName.split("__retData_")[1]; - String header= channelName.split("__retData_")[0]; - for (TMLTask t: getTasks()){ - if (channelName.contains(t.getName().split("__")[1])){ - channelName = channelName.replace("_"+t.getName().split("__")[1],""); - } - } - TMLChannel channel = getChannelByShortName(channelName); - if (channel!=null){ - for (TMLCPrimitivePort port:channel.ports){ - if (port.checkAuth){ - port.checkStrongAuthStatus = 2; - port.secName= signalName; - } - } - } - } - } + if (channelName.contains("retData_") || channelName.contains("data_")){ + channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); + //channelName=channelName.split("__retData_")[1]; + String header= channelName.split("__retData_")[0]; + for (TMLTask t: getTasks()){ + if (channelName.contains(t.getName().split("__")[1])){ + channelName = channelName.replace("_"+t.getName().split("__")[1],""); + } + } + TMLChannel channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkAuth){ + port.checkWeakAuthStatus = 2; + port.secName= signalName; + } + } + } + } + } + } + } + for (String s: satisfiedAuthenticity){ + String signalName = s.split("__decrypt")[0]; + signalName = signalName.split("__")[1]; + List<String> channels=secChannelMap.get(signalName); + if (channels!=null){ + for (String channelName: channels){ +// if (channelName!=null){ + if (channelName.contains("retData_") || channelName.contains("data_")){ + channelName=channelName.replaceAll("retData_","").replaceAll("data_",""); + //channelName=channelName.split("__retData_")[1]; + String header= channelName.split("__retData_")[0]; + for (TMLTask t: getTasks()){ + if (channelName.contains(t.getName().split("__")[1])){ + channelName = channelName.replace("_"+t.getName().split("__")[1],""); + } + } + TMLChannel channel = getChannelByShortName(channelName); + if (channel!=null){ + for (TMLCPrimitivePort port:channel.ports){ + if (port.checkAuth){ + port.checkStrongAuthStatus = 2; + port.secName= signalName; + } + } + } + } + } + } } } public void clearBacktracing(){ diff --git a/src/tmltranslator/toavatar/TML2Avatar.java b/src/tmltranslator/toavatar/TML2Avatar.java index 60d2bc47c4..06045e847b 100644 --- a/src/tmltranslator/toavatar/TML2Avatar.java +++ b/src/tmltranslator/toavatar/TML2Avatar.java @@ -670,15 +670,15 @@ public class TML2Avatar { } else if (ae.securityPattern.type.equals("Symmetric Encryption")){ if (!ae.securityPattern.nonce.isEmpty()){ - block.addAttribute(new AvatarAttribute("nonce_"+ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); + block.addAttribute(new AvatarAttribute(ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); AvatarMethod concat2 = new AvatarMethod("concat2",ae); concat2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); - concat2.addParameter(block.getAvatarAttributeWithName("nonce_"+ae.securityPattern.nonce)); + concat2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.nonce)); concat2.addReturnParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); - if (block.getAvatarAttributeWithName(ae.securityPattern.name) !=null && block.getAvatarAttributeWithName("nonce_"+ae.securityPattern.nonce)!=null){ + if (block.getAvatarAttributeWithName(ae.securityPattern.name) !=null && block.getAvatarAttributeWithName(ae.securityPattern.nonce)!=null){ block.addMethod(concat2); } - tran.addAction(ae.securityPattern.name+"=concat2("+ae.securityPattern.name + ",nonce_"+ae.securityPattern.nonce+")"); + tran.addAction(ae.securityPattern.name+"=concat2("+ae.securityPattern.name + ","+ae.securityPattern.nonce+")"); } //Securing a key instead of data if (!ae.securityPattern.key.isEmpty()){ @@ -708,14 +708,14 @@ public class TML2Avatar { } else if (ae.securityPattern.type.equals("Asymmetric Encryption")){ if (!ae.securityPattern.nonce.isEmpty()){ - block.addAttribute(new AvatarAttribute("nonce_"+ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); + block.addAttribute(new AvatarAttribute(ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); AvatarMethod concat2 = new AvatarMethod("concat2",ae); concat2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); - concat2.addParameter(block.getAvatarAttributeWithName("nonce_"+ae.securityPattern.nonce)); - if (block.getAvatarAttributeWithName(ae.securityPattern.name) !=null && block.getAvatarAttributeWithName("nonce_"+ae.securityPattern.nonce)!=null){ + concat2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.nonce)); + if (block.getAvatarAttributeWithName(ae.securityPattern.name) !=null && block.getAvatarAttributeWithName(ae.securityPattern.nonce)!=null){ block.addMethod(concat2); } - tran.addAction(ae.securityPattern.name+"=concat2("+ae.securityPattern.name + ",nonce_"+ae.securityPattern.nonce+")"); + tran.addAction(ae.securityPattern.name+"=concat2("+ae.securityPattern.name + ","+ae.securityPattern.nonce+")"); } //Securing a key instead of data if (!ae.securityPattern.key.isEmpty()){ @@ -741,7 +741,7 @@ public class TML2Avatar { ae.securityPattern.state1=as; } else if (ae.securityPattern.type.equals("Nonce")){ - block.addAttribute(new AvatarAttribute("nonce_"+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); @@ -774,7 +774,7 @@ public class TML2Avatar { tran.addAction(ae.securityPattern.name+"_encrypted = concat2("+ae.securityPattern.name+"_mac,"+ae.securityPattern.name+")"); } - AvatarAttributeState authOrigin = new AvatarAttributeState(ae.securityPattern.name+"1",ae.getReferenceObject(),block.getAvatarAttributeWithName(ae.securityPattern.name), as); + AvatarAttributeState authOrigin = new AvatarAttributeState(block.getName()+"."+as.getName(),ae.getReferenceObject(),block.getAvatarAttributeWithName(ae.securityPattern.name), as); signalAuthOriginMap.put(ae.securityPattern.name, authOrigin); as.addNext(tran); elementList.add(as); @@ -784,9 +784,9 @@ public class TML2Avatar { block.addAttribute(new AvatarAttribute(ae.securityPattern.name, AvatarType.INTEGER, block, null)); block.addAttribute(new AvatarAttribute(ae.securityPattern.name+"_encrypted", AvatarType.INTEGER, block, null)); if (ae.securityPattern.type.equals("Symmetric Encryption")){ - if (ae.securityPattern.key.isEmpty()){ + if (ae.securityPattern.key.isEmpty()){ AvatarMethod sdecrypt = new AvatarMethod("sdecrypt", ae); - block.addAttribute(new AvatarAttribute(ae.securityPattern.name, AvatarType.INTEGER, block,null)); + block.addAttribute(new AvatarAttribute(ae.securityPattern.name, AvatarType.INTEGER, block,null)); sdecrypt.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name+"_encrypted")); sdecrypt.addParameter(block.getAvatarAttributeWithName("key_"+ae.securityPattern.name)); if (block.getAvatarAttributeWithName(ae.securityPattern.name+"_encrypted")!=null && block.getAvatarAttributeWithName("key_"+ae.securityPattern.name)!=null){ @@ -808,20 +808,20 @@ public class TML2Avatar { elementList.add(tran); as.addNext(tran); if (!ae.securityPattern.nonce.isEmpty()){ - block.addAttribute(new AvatarAttribute("testnonce_"+ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); - AvatarMethod get2 = new AvatarMethod("get2",ae); - get2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); - get2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); - get2.addParameter(block.getAvatarAttributeWithName("testnonce_"+ae.securityPattern.nonce)); - if (block.getAvatarAttributeWithName(ae.securityPattern.name)!=null && block.getAvatarAttributeWithName(ae.securityPattern.name)!=null && block.getAvatarAttributeWithName("testnonce_"+ae.securityPattern.nonce)!=null) { - block.addMethod(get2); - } - tran.addAction("get2("+ae.securityPattern.name + ","+ae.securityPattern.name+",testnonce_"+ae.securityPattern.nonce+")"); - AvatarState guardState = new AvatarState(ae.getName()+"_guarded", ae.getReferenceObject()); - tran.addNext(guardState); - tran=new AvatarTransition(block, "__guard_"+ae.getName(), ae.getReferenceObject()); - guardState.addNext(tran); - tran.setGuard("testnonce_"+ae.securityPattern.nonce+"== nonce_" + ae.securityPattern.nonce); + block.addAttribute(new AvatarAttribute("testnonce_"+ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); + AvatarMethod get2 = new AvatarMethod("get2",ae); + get2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); + get2.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); + get2.addParameter(block.getAvatarAttributeWithName("testnonce_"+ae.securityPattern.nonce)); + if (block.getAvatarAttributeWithName(ae.securityPattern.name)!=null && block.getAvatarAttributeWithName(ae.securityPattern.name)!=null && block.getAvatarAttributeWithName("testnonce_"+ae.securityPattern.nonce)!=null) { + block.addMethod(get2); + } + tran.addAction("get2("+ae.securityPattern.name + ","+ae.securityPattern.name+",testnonce_"+ae.securityPattern.nonce+")"); + AvatarState guardState = new AvatarState(ae.getName()+"_guarded", ae.getReferenceObject()); + tran.addNext(guardState); + tran=new AvatarTransition(block, "__guard_"+ae.getName(), ae.getReferenceObject()); + guardState.addNext(tran); + tran.setGuard("testnonce_"+ae.securityPattern.nonce+"==" + ae.securityPattern.nonce); } AvatarState dummy = new AvatarState(ae.getName()+"_dummy", ae.getReferenceObject()); ae.securityPattern.state2=dummy; @@ -873,12 +873,13 @@ public class TML2Avatar { if (block.getAvatarAttributeWithName(ae.securityPattern.name)!=null && block.getAvatarAttributeWithName(ae.securityPattern.name)!=null) { block.addMethod(get2); } + tran.addAction("get2("+ae.securityPattern.name + ","+ae.securityPattern.name+",testnonce_"+ae.securityPattern.nonce+")"); AvatarState guardState = new AvatarState(ae.getName()+"_guarded", ae.getReferenceObject()); tran.addNext(guardState); tran=new AvatarTransition(block, "__guard_"+ae.getName(), ae.getReferenceObject()); guardState.addNext(tran); - tran.setGuard("testnonce_"+ae.securityPattern.nonce+"== nonce_" + ae.securityPattern.nonce); + tran.setGuard("testnonce_"+ae.securityPattern.nonce+"==" + ae.securityPattern.nonce); } AvatarState dummy = new AvatarState(ae.getName()+"_dummy", ae.getReferenceObject()); tran.addNext(dummy); @@ -888,7 +889,8 @@ public class TML2Avatar { elementList.add(tran); ae.securityPattern.state2=dummy; if (ae.securityPattern.nonce.isEmpty()){ - AvatarAttributeState authDest = new AvatarAttributeState(ae.securityPattern.name+"2",ae.getReferenceObject(),block.getAvatarAttributeWithName(ae.securityPattern.name), dummy); + + AvatarAttributeState authDest = new AvatarAttributeState(ae.securityPattern.name+"2",ae.getReferenceObject(),block.getAvatarAttributeWithName(ae.securityPattern.name), dummy); signalAuthDestMap.put(ae.securityPattern.name, authDest); } else { @@ -909,7 +911,9 @@ public class TML2Avatar { block.addMethod(get2); tran.addAction("get2("+ae.securityPattern.name+"_encrypted,"+ae.securityPattern.name+","+ae.securityPattern.name+"_mac)"); - + if (!ae.securityPattern.nonce.isEmpty()){ + tran.addAction("get2("+ae.securityPattern.name + ","+ae.securityPattern.name+",testnonce_"+ae.securityPattern.nonce+")"); + } AvatarMethod verifymac = new AvatarMethod("verifyMAC", ae); block.addAttribute(new AvatarAttribute("testnonce_"+ae.securityPattern.name, AvatarType.BOOLEAN, block, null)); verifymac.addParameter(block.getAvatarAttributeWithName(ae.securityPattern.name)); @@ -919,6 +923,7 @@ public class TML2Avatar { if (block.getAvatarAttributeWithName(ae.securityPattern.name)!=null && block.getAvatarAttributeWithName("key_"+ae.securityPattern.name)!=null){ block.addMethod(verifymac); + } tran.addAction("testnonce_"+ae.securityPattern.name+"=verifyMAC("+ae.securityPattern.name+", key_"+ae.securityPattern.name+","+ae.securityPattern.name+"_mac)"); @@ -928,11 +933,26 @@ public class TML2Avatar { as.addNext(tran); AvatarState guardState = new AvatarState(ae.getName()+"_guarded", ae.getReferenceObject()); tran.addNext(guardState); + + tran=new AvatarTransition(block, "__guard_"+ae.getName(), ae.getReferenceObject()); + elementList.add(guardState); elementList.add(tran); guardState.addNext(tran); + if (!ae.securityPattern.nonce.isEmpty()){ + block.addAttribute(new AvatarAttribute("testnonce_"+ae.securityPattern.nonce, AvatarType.INTEGER, block, null)); + //Add extra state and transition + tran.setGuard("testnonce_"+ae.securityPattern.nonce+"==" + ae.securityPattern.nonce); + AvatarState guardState2 = new AvatarState(ae.getName()+"_guarded2", ae.getReferenceObject()); + tran.addNext(guardState2); + tran=new AvatarTransition(block, "__guard_"+ae.getName(), ae.getReferenceObject()); + elementList.add(guardState2); + elementList.add(tran); + + guardState2.addNext(tran); + } tran.setGuard("testnonce_"+ae.securityPattern.name); } AvatarState dummy = new AvatarState(ae.getName()+"_dummy", ae.getReferenceObject()); @@ -992,8 +1012,8 @@ public class TML2Avatar { if (ae.securityPattern!=null){ if (ae.securityPattern.type.equals("Nonce")){ - block.addAttribute(new AvatarAttribute("nonce_"+ae.securityPattern.name, AvatarType.INTEGER, block,null)); - as.addValue("nonce_"+ae.securityPattern.name); + block.addAttribute(new AvatarAttribute(ae.securityPattern.name, AvatarType.INTEGER, block,null)); + as.addValue(ae.securityPattern.name); } else if (!ae.securityPattern.key.isEmpty()){ as.addValue("encryptedKey_"+ae.securityPattern.key); @@ -1070,14 +1090,14 @@ public class TML2Avatar { AvatarAttribute channelData= new AvatarAttribute(getName(ch.getName())+"_chData", AvatarType.INTEGER, block, null); block.addAttribute(channelData); } - AvatarAttributeState authOrigin = new AvatarAttributeState(ch.getName()+"__destination",ae.getReferenceObject(),block.getAvatarAttributeWithName(getName(ch.getName())+"_chData"), signalState); + AvatarAttributeState authOrigin = new AvatarAttributeState(block.getName()+signalState.getName(),ae.getReferenceObject(),block.getAvatarAttributeWithName(getName(ch.getName())+"_chData"), signalState); signalAuthOriginMap.put(ch.getName(), authOrigin); } AvatarActionOnSignal as = new AvatarActionOnSignal(ae.getName(), sig, ae.getReferenceObject()); if (ae.securityPattern!=null){ if (ae.securityPattern.type.equals("Nonce")){ - as.addValue("nonce_"+ae.securityPattern.name); + as.addValue(ae.securityPattern.name); } else if (!ae.securityPattern.key.isEmpty()){ as.addValue("encryptedKey_"+ae.securityPattern.key); @@ -1586,7 +1606,8 @@ public class TML2Avatar { //Add authenticity pragmas for (String s: signalAuthOriginMap.keySet()){ if (signalAuthDestMap.containsKey(s)){ - AvatarPragmaAuthenticity pragma = new AvatarPragmaAuthenticity("#Authenticity "+s, signalAuthOriginMap.get(s).getReferenceObject(), signalAuthOriginMap.get(s), signalAuthDestMap.get(s)); + AvatarPragmaAuthenticity pragma = new AvatarPragmaAuthenticity("#Authenticity " + signalAuthOriginMap.get(s).getName() + " " + signalAuthDestMap.get(s).getName(), signalAuthOriginMap.get(s).getReferenceObject(), signalAuthOriginMap.get(s), signalAuthDestMap.get(s)); + //System.out.println("adding pragma " + s); avspec.addPragma(pragma); } } diff --git a/src/ui/GTURTLEModeling.java b/src/ui/GTURTLEModeling.java index 751149ff2d..d12f47a9e2 100755 --- a/src/ui/GTURTLEModeling.java +++ b/src/ui/GTURTLEModeling.java @@ -2577,7 +2577,7 @@ public class GTURTLEModeling { } } - if (tg.getY() > ypos && tg!=dec){ + if (tg.getY() > ypos && tg!=dec && tg!=comp){ tg.setCd(tg.getX(), tg.getY()+yShift); } @@ -9197,7 +9197,8 @@ public class GTURTLEModeling { AvatarSMDReceiveSignal smdrs = new AvatarSMDReceiveSignal(x, y, x, x*2, y, y*2, false, null, smp); tgcomp=smdrs; smp.addComponent(smdrs, x, y, false, true); - String name=sig.minString(); +// String name=sig.minString(); + String name=sig.getName()+"("+((AvatarActionOnSignal)asme).getValues().get(0)+")"; smdrs.setValue(name); // sig.setName(name); smdrs.recalculateSize(); @@ -9214,7 +9215,8 @@ public class GTURTLEModeling { AvatarSMDSendSignal smdss = new AvatarSMDSendSignal(x, y, x, x*2, y, y*2, false, null, smp); tgcomp=smdss; smp.addComponent(smdss, x, y, false, true); - String name=sig.minString(); + String name=sig.getName()+"("+((AvatarActionOnSignal)asme).getValues().get(0)+")"; + //String name=sig.minString(); smdss.setValue(name); smdss.recalculateSize(); SMDMap.put(asme, smdss); @@ -9516,6 +9518,7 @@ public class GTURTLEModeling { } } else if (p.getName().contains("Authenticity")){ + t=p.getName(); } s=s.concat(t+"\n"); // i++; diff --git a/src/ui/window/JDialogCryptographicConfiguration.java b/src/ui/window/JDialogCryptographicConfiguration.java index 187b3c3e90..2045bc4c3d 100644 --- a/src/ui/window/JDialogCryptographicConfiguration.java +++ b/src/ui/window/JDialogCryptographicConfiguration.java @@ -115,7 +115,7 @@ public class JDialogCryptographicConfiguration extends javax.swing.JDialog imple setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - if (values[1].contains("Encryption") || values[1].isEmpty()){ + if (values[1].contains("Encryption") || values[1].equals("MAC") || values[1].isEmpty()){ panel1= new EncryptPanel(this); } else { -- GitLab