From 11daa68f1d7e34810ddf9e9a29222c7bb6c20f1d Mon Sep 17 00:00:00 2001
From: jerray <jawher.jerray@eurecom.fr>
Date: Fri, 12 May 2023 15:18:03 +0200
Subject: [PATCH] Add confidentiality pragma only for channels with the option
 check confidentiality

---
 .../tmltranslator/toavatarsec/TML2Avatar.java | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
index 5b24369897..54fd4ca8c9 100644
--- a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
+++ b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
@@ -1834,12 +1834,29 @@ public class TML2Avatar {
             for (SecurityPattern secPattern : secPatterns) {
                 AvatarAttribute sec = block.getAvatarAttributeWithName(secPattern.name);
                 if (sec != null) {
+                    boolean checkAuthSecPattern = false;
+                    for (TMLChannel ch : tmlmodel.getChannels(task)) {
+                        if (ch.hasOriginTask(task) && ch.isCheckConfChannel()) {
+                            TraceManager.addDev("1842 ch.name= " + ch.getName());
+                            for (TMLActivityElement actElem : task.getActivityDiagram().getElements()){
+                                if (actElem instanceof TMLWriteChannel) {
+                                    TMLWriteChannel wc = (TMLWriteChannel) actElem;
+                                    if(wc.hasChannel(ch) && actElem.securityPattern.getName().equals(secPattern.getName())){
+                                        checkAuthSecPattern = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
                     //sec = new AvatarAttribute(secPattern.name, AvatarType.INTEGER, block, null);
                     //AvatarAttribute enc = new AvatarAttribute(secPattern.name+"_encrypted", AvatarType.INTEGER, block, null);
                     //	block.addAttribute(sec);
                     //	block.addAttribute(enc);
                     //}
-                    avspec.addPragma(new AvatarPragmaSecret("#Confidentiality " + block.getName() + "." + secPattern.name, null, sec));
+                    if (checkAuthSecPattern) {
+                        avspec.addPragma(new AvatarPragmaSecret("#Confidentiality " + block.getName() + "." + secPattern.name, null, sec));
+                    }
                 }
             }
 
-- 
GitLab