devsecops-engine-tools 1.7.29__py3-none-any.whl → 1.7.31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of devsecops-engine-tools might be problematic. Click here for more details.

@@ -55,6 +55,8 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
55
55
  "XRAY": "JFrog Xray On Demand Binary Scan",
56
56
  "TRUFFLEHOG": "Trufflehog Scan",
57
57
  "TRIVY": "Trivy Scan",
58
+ "KUBESCAPE": "Kubescape Scanner",
59
+ "KICS": "KICS Scanner"
58
60
  }
59
61
 
60
62
  if any(
@@ -11,12 +11,12 @@ from devsecops_engine_tools.engine_utilities.github.models.GithubPredefinedVaria
11
11
  from devsecops_engine_tools.engine_utilities.github.infrastructure.github_api import (
12
12
  GithubApi,
13
13
  )
14
- import os
15
14
 
16
15
 
17
16
  @dataclass
18
17
  class GithubActions(DevopsPlatformGateway):
19
18
  OKGREEN = "\033[92m"
19
+ WARNING = "\033[93m"
20
20
  FAIL = "\033[91m"
21
21
  ENDC = "\033[0m"
22
22
  ICON_FAIL = "\u2718"
@@ -49,7 +49,8 @@ class GithubActions(DevopsPlatformGateway):
49
49
  def result_pipeline(self, type):
50
50
  results = {
51
51
  "failed": f"{self.FAIL}{self.ICON_FAIL}Failed{self.ENDC}",
52
- "succeeded": f"{self.OKGREEN}{self.ICON_SUCCESS}Succeeded{self.ENDC}"
52
+ "succeeded": f"{self.OKGREEN}{self.ICON_SUCCESS}Succeeded{self.ENDC}",
53
+ "succeeded_with_issues": f"{self.WARNING}{self.ICON_SUCCESS}Succeeded with issues{self.ENDC}"
53
54
  }
54
55
  return results.get(type)
55
56
 
@@ -77,10 +78,10 @@ class GithubActions(DevopsPlatformGateway):
77
78
  "repository": BuildVariables.github_repository,
78
79
  "pipeline_name": (
79
80
  BuildVariables.github_workflow
80
- if SystemVariables.build.value() == "build"
81
+ if SystemVariables.github_job.value() == "build"
81
82
  else ReleaseVariables.github_workflow
82
83
  ),
83
- "stage": SystemVariables.build,
84
+ "stage": SystemVariables.github_job,
84
85
  "path_directory": SystemVariables.github_workspace,
85
86
  "os": AgentVariables.runner_os,
86
87
  "work_folder": AgentVariables.github_workspace,
@@ -7,6 +7,9 @@ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_ada
7
7
  from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_adapters.kubescape.kubescape_tool import (
8
8
  KubescapeTool
9
9
  )
10
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_adapters.kics.kics_tool import (
11
+ KicsTool
12
+ )
10
13
 
11
14
 
12
15
  def runner_engine_iac(dict_args, tool, secret_tool, devops_platform_gateway, env):
@@ -17,6 +20,7 @@ def runner_engine_iac(dict_args, tool, secret_tool, devops_platform_gateway, env
17
20
  tools = {
18
21
  "CHECKOV": CheckovTool(),
19
22
  "KUBESCAPE": KubescapeTool(),
23
+ "KICS": KicsTool()
20
24
  }
21
25
 
22
26
  if tool in tools:
@@ -21,3 +21,13 @@ class ConfigTool:
21
21
  self.exclusions_all = None
22
22
  self.exclusions_scope = None
23
23
  self.rules_all = {}
24
+ if "KICS_LINUX" in json_data[tool]:
25
+ self.kics_linux = json_data[tool]["KICS_LINUX"]
26
+ if "KICS_WINDOWS" in json_data[tool]:
27
+ self.kics_windows = json_data[tool]["KICS_WINDOWS"]
28
+ if "KICS_MAC" in json_data[tool]:
29
+ self.kics_mac = json_data[tool]["KICS_MAC"]
30
+ if "PATH_KICS" in json_data[tool]:
31
+ self.path_kics = json_data[tool]["PATH_KICS"]
32
+ if "DOWNLOAD_KICS_ASSETS" in json_data[tool]:
33
+ self.download_kics_assets = json_data[tool]["DOWNLOAD_KICS_ASSETS"]
@@ -0,0 +1,57 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.finding import (
2
+ Category,
3
+ Finding,
4
+ )
5
+ from datetime import datetime
6
+ from dataclasses import dataclass
7
+
8
+
9
+ @dataclass
10
+ class KicsDeserealizator:
11
+ def get_list_finding(self, results_scan_list: list) -> "list[Finding]":
12
+ list_open_findings = []
13
+
14
+ for result in results_scan_list:
15
+ finding_open = Finding(
16
+ id=result.get("id"),
17
+ cvss=None,
18
+ where=result.get("file_name"),
19
+ description=result.get("description"),
20
+ severity=result.get("severity").lower(),
21
+ identification_date=datetime.now().strftime("%d%m%Y"),
22
+ published_date_cve=None,
23
+ module="engine_iac",
24
+ category=Category.VULNERABILITY,
25
+ requirements=None,
26
+ tool="Kics"
27
+ )
28
+ list_open_findings.append(finding_open)
29
+
30
+ return list_open_findings
31
+
32
+ def get_findings(self, data):
33
+ filtered_results = []
34
+ for query in data.get("queries", []):
35
+ severity = query.get("severity", "").upper()
36
+ if severity in {"LOW", "MEDIUM", "HIGH", "CRITICAL"}:
37
+ description = query.get("query_name", "")
38
+ query_id = query.get("query_id", "")
39
+ for file in query.get("files", []):
40
+ file_name = file.get("file_name", "")
41
+ filtered_results.append({
42
+ "severity": severity,
43
+ "description": description,
44
+ "file_name": file_name,
45
+ "id": query_id
46
+ })
47
+ return filtered_results
48
+
49
+ def calculate_total_vulnerabilities(self, data):
50
+ severity_counters = data.get("severity_counters", {})
51
+
52
+ critical = severity_counters.get("CRITICAL", 0)
53
+ high = severity_counters.get("HIGH", 0)
54
+ medium = severity_counters.get("MEDIUM", 0)
55
+ low = severity_counters.get("LOW", 0)
56
+
57
+ return critical + high + medium + low
@@ -0,0 +1,140 @@
1
+ import subprocess
2
+ import json
3
+ import platform
4
+ import requests
5
+ import os
6
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.model.gateways.tool_gateway import (
7
+ ToolGateway,
8
+ )
9
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.model.config_tool import (
10
+ ConfigTool,
11
+ )
12
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_adapters.kics.kics_deserealizator import (
13
+ KicsDeserealizator
14
+ )
15
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
16
+ from devsecops_engine_tools.engine_utilities import settings
17
+ from devsecops_engine_tools.engine_utilities.github.infrastructure.github_api import GithubApi
18
+
19
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
20
+
21
+
22
+ class KicsTool(ToolGateway):
23
+
24
+ def download(self, file, url):
25
+ try:
26
+ response = requests.get(url)
27
+ with open(file, "wb") as f:
28
+ f.write(response.content)
29
+ except Exception as ex:
30
+ logger.error(f"An error ocurred downloading {file} {ex}")
31
+
32
+ def install_tool(self, file, url, command_prefix):
33
+ github_api = GithubApi()
34
+ kics = f"./{command_prefix}/kics"
35
+ installed = subprocess.run(
36
+ ["which", command_prefix],
37
+ stdout=subprocess.PIPE,
38
+ stderr=subprocess.PIPE,
39
+ )
40
+ if installed.returncode == 1:
41
+ try:
42
+ self.download(file, url)
43
+ github_api.unzip_file(file, command_prefix)
44
+ subprocess.run(["chmod", "+x", kics])
45
+ return kics
46
+ except Exception as e:
47
+ logger.error(f"Error installing KICS: {e}")
48
+ else:
49
+ return command_prefix
50
+
51
+ def install_tool_windows(self, file, url, command_prefix):
52
+ try:
53
+ subprocess.run(
54
+ [command_prefix, "version"],
55
+ stdout=subprocess.PIPE,
56
+ stderr=subprocess.PIPE,
57
+ )
58
+ return command_prefix
59
+ except:
60
+ try:
61
+ github_api = GithubApi()
62
+ self.download(file, url)
63
+ github_api.unzip_file(file, command_prefix)
64
+ return f"./{command_prefix}/kics"
65
+
66
+ except Exception as e:
67
+ logger.error(f"Error installing KICS: {e}")
68
+
69
+ def execute_kics(self, folders_to_scan, prefix):
70
+ folders = ','.join(folders_to_scan)
71
+ command = [prefix, "scan", "-p", folders, "-q", "./kics_assets/assets", "--report-formats", "json", "-o", "./"]
72
+ try:
73
+ subprocess.run(command, capture_output=True)
74
+ except subprocess.CalledProcessError as e:
75
+ logger.error(f"Error during KICS execution: {e}")
76
+
77
+ def load_results(self):
78
+ try:
79
+ with open('results.json') as f:
80
+ data = json.load(f)
81
+ return data
82
+ except Exception as ex:
83
+ logger.error(f"An error ocurred loading KICS results {ex}")
84
+ return None
85
+
86
+ def select_operative_system(self, os_platform, folders_to_scan, config_tool: ConfigTool, path_kics):
87
+ command_prefix = path_kics
88
+ if os_platform == "Linux":
89
+ kics_zip = "kics_linux.zip"
90
+ url_kics = config_tool.kics_linux
91
+ command_prefix = self.install_tool(kics_zip, url_kics, command_prefix)
92
+ elif os_platform == "Windows":
93
+ kics_zip = "kics_windows.zip"
94
+ url_kics = config_tool.kics_windows
95
+ command_prefix = self.install_tool_windows(kics_zip, url_kics, command_prefix)
96
+ elif os_platform == "Darwin":
97
+ kics_zip = "kics_macos.zip"
98
+ url_kics = config_tool.kics_mac
99
+ command_prefix = self.install_tool(kics_zip, url_kics, command_prefix)
100
+ else:
101
+ logger.warning(f"{os_platform} is not supported.")
102
+ return [], None
103
+
104
+ self.execute_kics(folders_to_scan, command_prefix)
105
+
106
+ def get_assets(self, kics_version):
107
+ name_zip = "assets_compressed.zip"
108
+ assets_url = f"https://github.com/Checkmarx/kics/releases/download/v{kics_version}/extracted-info.zip"
109
+ self.download(name_zip, assets_url)
110
+
111
+ directory_assets = "kics_assets"
112
+ github_api = GithubApi()
113
+ github_api.unzip_file(name_zip, directory_assets)
114
+
115
+ def run_tool(
116
+ self, config_tool: ConfigTool, folders_to_scan, environment, platform_to_scan, secret_tool
117
+ ):
118
+ kics_version = config_tool.version
119
+ path_kics = config_tool.path_kics
120
+ download_kics_assets = config_tool.download_kics_assets
121
+ if download_kics_assets:
122
+ self.get_assets(kics_version)
123
+
124
+ os_platform = platform.system()
125
+ self.select_operative_system(os_platform, folders_to_scan, config_tool, path_kics)
126
+
127
+ data = self.load_results()
128
+ if data:
129
+ kics_deserealizator = KicsDeserealizator()
130
+ total_vulnerabilities = kics_deserealizator.calculate_total_vulnerabilities(data)
131
+ path_file = os.path.abspath("results.json")
132
+
133
+ if total_vulnerabilities == 0:
134
+ return [], path_file
135
+
136
+ filtered_results = kics_deserealizator.get_findings(data)
137
+ finding_list = kics_deserealizator.get_list_finding(filtered_results)
138
+
139
+ return finding_list, path_file
140
+ return [], None
@@ -24,7 +24,7 @@ class BaseEnum(Enum):
24
24
  class SystemVariables(BaseEnum):
25
25
  github_access_token = "github.access.token"
26
26
  github_workspace = "github.workspace"
27
- build = "build"
27
+ github_job = "github.job"
28
28
  github_server_url = "github.server.url"
29
29
  github_repository = "github.repository"
30
30
  github_event_number = "github.event.number"
@@ -1 +1 @@
1
- version = '1.7.29'
1
+ version = '1.7.31'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.7.29
3
+ Version: 1.7.31
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -98,13 +98,17 @@ devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_con
98
98
  <th>Type</th>
99
99
  </tr>
100
100
  <tr>
101
- <td rowspan="2">ENGINE_IAC</td>
101
+ <td rowspan="3">ENGINE_IAC</td>
102
102
  <td><a href="https://www.checkov.io/">CHECKOV</a></td>
103
103
  <td>Free</td>
104
104
  </tr>
105
105
  <tr>
106
106
  <td><a href="https://kubescape.io/">KUBESCAPE</a></td>
107
107
  <td>Free</td>
108
+ </tr>
109
+ <tr>
110
+ <td><a href="https://www.kics.io/">KICS</a></td>
111
+ <td>Free</td>
108
112
  </tr>
109
113
  <tr>
110
114
  <td>ENGINE_DAST</td>
@@ -150,6 +154,57 @@ devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Re
150
154
 
151
155
  ![Dashboard Grafana](docs/demo_session.svg)
152
156
 
157
+ ### Scan running sample - Github Actions
158
+
159
+ The remote config should be in a GitHub repository, either public or private.
160
+
161
+ **If the repository is public:**
162
+
163
+ 1. The yml file containing the workflow should be configured using the default secret **GITHUB_TOKEN**.
164
+ For more information, refer to [Automatic token authentication](https://docs.github.com/en/actions/security-guides/automatic-token-authentication).
165
+
166
+ **If the repository is private:**
167
+
168
+ 1. Create a personal access token with the necessary permissions to access the repository.
169
+ 2. Add the token as a secret in the GitHub repository.
170
+ ![Dashboard Grafana](docs/secret_token.png)
171
+
172
+ 3. Configure the yml file containing the workflow using the created secret.
173
+
174
+ **Example of the workflow yml:**
175
+
176
+ ```yaml
177
+ name: DevSecOps Engine Tools
178
+ on:
179
+ push:
180
+ branches:
181
+ - feature/*
182
+ env:
183
+ GITHUB_ACCESS_TOKEN: ${{ secrets.GH_ACCESSTOKEN }} #In this case, the remote config repository is private
184
+ # When the remote config repository is public, the secret should be like this: ${{ secrets.GITHUB_TOKEN }}
185
+
186
+ jobs:
187
+ release:
188
+ runs-on: ubuntu-latest
189
+ steps:
190
+ - uses: actions/checkout@v4
191
+
192
+ - name: Set up Python
193
+ uses: actions/setup-python@v5
194
+ with:
195
+ python-version: "3.12"
196
+
197
+ - name: Set up Python
198
+ run: |
199
+ # Install devsecops-engine-tools
200
+ pip3 install -q devsecops-engine-tools
201
+ output=$(devsecops-engine-tools --platform_devops github --remote_config_repo remote_config --tool engine_iac)
202
+ echo "$output"
203
+ if [[ $output == *"✘Failed"* ]]; then
204
+ exit 1
205
+ fi
206
+ ```
207
+
153
208
  # Metrics
154
209
 
155
210
  With the flag **--send_metrics true** and the configuration of the AWS-METRICS_MANAGER driven adapter in ConfigTool.json of the engine_core the tool will send the report to bucket s3. In the [metrics](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/metrics/) folder you will find the base of the cloud formation template to deploy the infra and dashboard in grafana.
@@ -1,5 +1,5 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=1ZRQMXakbKgdqgC-xNRAgwTBDcQ7kv9IvKeDbDzIzfw,19
2
+ devsecops_engine_tools/version.py,sha256=Tca23yRPfWkiFCGCli2_DjySHpzpH0VrKME5ge3f-9w,19
3
3
  devsecops_engine_tools/engine_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  devsecops_engine_tools/engine_core/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  devsecops_engine_tools/engine_core/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -36,9 +36,9 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
36
36
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=Ot1j5my-iEpU-ZYy9yNXkwmwLOmJ3f95JyyAUcpFN5g,4967
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=qOqipt7P6THEjoaBwpIPO8OEN9OKpW6u_X_c4DeGhx8,10903
39
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=6xQ9coU37r9g3lYlxWEVGiM8WBWSL_5TP-6EVr8BWAY,10992
40
40
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=PsDCUfVHgUJL9AKwB2FyQ6VdUtgawyYTtvRcSscX_9A,3723
41
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=JhTfHCR4G29VByrS7ntKZwXbfCHpO0C3D8vIQlBD4rQ,3855
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py,sha256=O1waYz_6ElcOkU3Nb4suJs2ZJIo0YLoFuNXi9-j-wSs,3811
44
44
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -81,12 +81,12 @@ devsecops_engine_tools/engine_sast/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
81
81
  devsecops_engine_tools/engine_sast/engine_iac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  devsecops_engine_tools/engine_sast/engine_iac/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py,sha256=6iHwgOQLu3rXyyQrlt7gxAsfOlLwupvyum7ejziX-dg,1151
84
+ devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py,sha256=lN5bywQHIBmKeQ8HV_pGha29lZQ8Dl0IuhXxqeRCZd0,1307
85
85
  devsecops_engine_tools/engine_sast/engine_iac/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  devsecops_engine_tools/engine_sast/engine_iac/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
88
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py,sha256=NLV61UALqRWJHq4uvxcH4CugtQGMAwCr-RM5UvZuUC8,1243
89
+ devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py,sha256=K8kzxap2I3ogHQvunWb23SxqCCDuvnoUO5fSvRz_g-E,1790
90
90
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
91
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py,sha256=tqOkmy5fRMvCFjuQUSdGdWd-PrShtJi0YDlAQ8htMzM,216
92
92
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -97,6 +97,9 @@ devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters
97
97
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py,sha256=qbE6wUO5_WFXF_QolL0JYelaRGEOUakPEZR_6HAKzzI,4355
98
98
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py,sha256=gBwnQ20QExHTrN1nvErUUqb_IMHvYKJijqc55XwZHQk,1404
99
99
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py,sha256=ddPjhbOe2w-kQmiBLP6udBPmXZhVZqQLwOEdgvt1r1s,7664
100
+ devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_deserealizator.py,sha256=b1X5GWz2snJtsKZcGEsILNc178hv9p-lg-el0Jc-_Eo,2084
102
+ devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_tool.py,sha256=5XTYxq0aptupaQfwwXTYDCKGGd4YyGdRP9y6yckoGuk,5345
100
103
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
104
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/kubescape_deserealizator.py,sha256=i-hKFmR-OriwiiBg-3E3RKc7hjI1E8jv8Z7dQ8_Q0qE,2885
102
105
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/kubescape_tool.py,sha256=wcornvTaU5o2MtZj_KkgWvNABW2rCd08sZkaMbbZoTI,4707
@@ -232,7 +235,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/repository/_
232
235
  devsecops_engine_tools/engine_utilities/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
236
  devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
237
  devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py,sha256=AURk8GGAkNuHCqTEsiS6UxClL_YYJoqtBrWGBSYgWO4,2436
235
- devsecops_engine_tools/engine_utilities/github/models/GithubPredefinedVariables.py,sha256=uPoiBRo0tlxQ69cqob40hmIdNk1BSbKqF1hpjsvhXdQ,1579
238
+ devsecops_engine_tools/engine_utilities/github/models/GithubPredefinedVariables.py,sha256=LmIvCVDyszInElu_-Pt034q1Zaajp-QA3ge-RtimxHg,1589
236
239
  devsecops_engine_tools/engine_utilities/github/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
240
  devsecops_engine_tools/engine_utilities/input_validations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
241
  devsecops_engine_tools/engine_utilities/input_validations/env_utils.py,sha256=nHp9YIuG1k-IvxssQslrE9ny62juJMovmBTzcM7PPk0,258
@@ -247,8 +250,8 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
247
250
  devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
248
251
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=GAslbWaBpwP3mP6fBsgVl07TTBgcCggQTy8h2M9ibeo,612
249
252
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
250
- devsecops_engine_tools-1.7.29.dist-info/METADATA,sha256=vUeXrSsQrFqqYsv9W4qKTyf9l6-sBll7JOd-yHDG2E0,5969
251
- devsecops_engine_tools-1.7.29.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
252
- devsecops_engine_tools-1.7.29.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
253
- devsecops_engine_tools-1.7.29.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
254
- devsecops_engine_tools-1.7.29.dist-info/RECORD,,
253
+ devsecops_engine_tools-1.7.31.dist-info/METADATA,sha256=6MoaA3dTvTpV-3DJODIYxIV5QltvFQLXcVlnZ75iCVo,7691
254
+ devsecops_engine_tools-1.7.31.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
255
+ devsecops_engine_tools-1.7.31.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
256
+ devsecops_engine_tools-1.7.31.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
257
+ devsecops_engine_tools-1.7.31.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.2.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5