devsecops-engine-tools 1.64.0__py3-none-any.whl → 1.65.0__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.

@@ -218,7 +218,7 @@ def get_inputs_from_cli(args):
218
218
  type=str,
219
219
  required=False,
220
220
  default="false",
221
- help="Enable or disable context creation. Applies only to engine_iac and engine_container. Default is false."
221
+ help="Enable or disable context creation. Applies to engine_iac, engine_container and engine_dependencies. Default is false."
222
222
  )
223
223
 
224
224
  TOOLS = {
@@ -0,0 +1,15 @@
1
+ from dataclasses import dataclass
2
+ from typing import List, Optional
3
+
4
+ @dataclass
5
+ class ContextDependencies:
6
+ cve_id: List[str]
7
+ severity: str
8
+ component: str
9
+ package_name: str
10
+ installed_version: str
11
+ fixed_version: Optional[List[str]]
12
+ impact_paths: Optional[List[List[dict]]]
13
+ description: str
14
+ references: Optional[List[str]]
15
+ source_tool: str
@@ -4,6 +4,10 @@ from abc import ABCMeta, abstractmethod
4
4
  class ToolGateway(metaclass=ABCMeta):
5
5
  @abstractmethod
6
6
  def run_tool_dependencies_sca(
7
- self, remote_config, dict_args,to_scan, secret_tool, token_engine_dependencies,**kwargs
7
+ self, remote_config, dict_args,to_scan, secret_tool, token_engine_dependencies, **kwargs
8
8
  ) -> str:
9
9
  "run tool dependencies sca"
10
+
11
+ @abstractmethod
12
+ def get_dependencies_context_from_results(self, path_file_results, **kwargs) -> None:
13
+ "get_dependencies_context_from_results"
@@ -39,7 +39,7 @@ class DependenciesScan:
39
39
 
40
40
  Return: dict: SCA scanning results.
41
41
  """
42
- return self.tool_run.run_tool_dependencies_sca(
42
+ dependencies_scanned = self.tool_run.run_tool_dependencies_sca(
43
43
  self.remote_config,
44
44
  self.dict_args,
45
45
  self.exclusions,
@@ -50,6 +50,11 @@ class DependenciesScan:
50
50
  build_id=self.build_id,
51
51
  build_url=self.build_url
52
52
  )
53
+
54
+ if self.dict_args.get("context") == "true":
55
+ self.tool_run.get_dependencies_context_from_results(dependencies_scanned, remote_config=self.remote_config)
56
+
57
+ return dependencies_scanned
53
58
 
54
59
  def deserializator(self, dependencies_scanned):
55
60
  """
@@ -22,7 +22,6 @@ class DependencyCheckDeserialize(DeserializatorGateway):
22
22
 
23
23
  def get_list_findings(self, dependencies_scanned_file, remote_config) -> "list[Finding]":
24
24
  dependencies, namespace = self.filter_vulnerabilities_by_confidence(dependencies_scanned_file, remote_config)
25
-
26
25
  list_open_vulnerabilities = []
27
26
 
28
27
  for dependency in dependencies:
@@ -30,30 +29,21 @@ class DependencyCheckDeserialize(DeserializatorGateway):
30
29
  if vulnerabilities_node:
31
30
  vulnerabilities = vulnerabilities_node.findall('ns:vulnerability', namespace)
32
31
  for vulnerability in vulnerabilities:
33
- fix = "Not found"
34
- vulnerable_software = vulnerability.find('ns:vulnerableSoftware', namespace)
35
- if vulnerable_software:
36
- software = vulnerable_software.findall('ns:software', namespace)
37
- if len(software) > 0:
38
- fix = software[0].get("versionEndExcluding", "Not found").lower()
39
-
40
- id = vulnerability.find('ns:name', namespace).text[:28]
41
- cvss = ", ".join(f"{child.tag.split('}')[-1]}: {child.text}" for child in vulnerability.find('ns:cvssV3', namespace)) if vulnerability.find('ns:cvssV3', namespace) else ""
42
- where = self.get_where(dependency, namespace)
43
- description = vulnerability.find('ns:description', namespace).text if vulnerability.find('ns:description', namespace).text else ""
44
- severity = vulnerability.find('ns:severity', namespace).text.lower()
45
-
32
+ data = self.extract_common_vuln_data(vulnerability, dependency, namespace)
33
+ cvss_node = vulnerability.find('ns:cvssV3', namespace)
34
+ cvss = ", ".join(f"{child.tag.split('}')[-1]}: {child.text}" for child in cvss_node) if cvss_node else ""
35
+
46
36
  finding_open = Finding(
47
- id=id,
37
+ id=data["id"],
48
38
  cvss=cvss,
49
- where=where,
50
- description=description[:120].replace("\n\n", " ").replace("\n", " ").strip() if len(description) > 0 else "No description available",
51
- severity=severity,
39
+ where=data["where"],
40
+ description=data["description"][:120].replace("\n\n", " ").replace("\n", " ").strip() if data["description"] else "No description available",
41
+ severity=data["severity"],
52
42
  identification_date=datetime.now().strftime("%d%m%Y"),
53
43
  published_date_cve=None,
54
44
  module="engine_dependencies",
55
45
  category=Category.VULNERABILITY,
56
- requirements=fix,
46
+ requirements=data["fix"] or "Not found",
57
47
  tool="DEPENDENCY_CHECK",
58
48
  )
59
49
  list_open_vulnerabilities.append(finding_open)
@@ -169,4 +159,43 @@ class DependencyCheckDeserialize(DeserializatorGateway):
169
159
 
170
160
  return f"{component_name}:{component_version}"
171
161
 
172
- return ""
162
+ return ""
163
+
164
+ def extract_fix_version(self, vulnerability, namespace):
165
+ fix = "Not found"
166
+ vulnerable_software = vulnerability.find('ns:vulnerableSoftware', namespace)
167
+ if vulnerable_software:
168
+ software = vulnerable_software.findall('ns:software', namespace)
169
+ if software:
170
+ fix = software[0].get("versionEndExcluding", "Not found").lower()
171
+ return fix if fix != "Not found" else None
172
+
173
+ def extract_common_vuln_data(self, vulnerability, dependency, namespace):
174
+ fix = self.extract_fix_version(vulnerability, namespace)
175
+ id = vulnerability.find('ns:name', namespace).text[:28]
176
+
177
+ where = self.get_where(dependency, namespace)
178
+
179
+ description = vulnerability.find('ns:description', namespace)
180
+ description_text = description.text if description is not None and description.text else ""
181
+
182
+ severity = vulnerability.find('ns:severity', namespace).text.lower()
183
+
184
+ return {
185
+ "id": id,
186
+ "fix": fix,
187
+ "where": where,
188
+ "description": description_text,
189
+ "severity": severity
190
+ }
191
+
192
+ def extract_references(self, vulnerability, namespace):
193
+ references_list = []
194
+ references_node = vulnerability.find('ns:references', namespace)
195
+ if references_node:
196
+ references = references_node.findall('ns:reference', namespace)
197
+ for ref in references:
198
+ url = ref.find('ns:url', namespace).text
199
+ if url:
200
+ references_list.append(url)
201
+ return list(set(references_list))
@@ -1,12 +1,20 @@
1
1
  from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.gateways.tool_gateway import (
2
2
  ToolGateway,
3
3
  )
4
+ from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.driven_adapters.dependency_check.dependency_check_deserialize import (
5
+ DependencyCheckDeserialize,
6
+ )
7
+ from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.ContextDependencies import (
8
+ ContextDependencies,
9
+ )
4
10
 
5
11
  import requests
6
12
  import subprocess
7
13
  import os
8
14
  import platform
9
15
  import shutil
16
+ from dataclasses import asdict
17
+ import json
10
18
 
11
19
  from devsecops_engine_tools.engine_utilities.utils.utils import Utils
12
20
  from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.helpers.get_artifacts import (
@@ -144,3 +152,44 @@ class DependencyCheckTool(ToolGateway):
144
152
  command_prefix = self.select_operative_system(cli_version)
145
153
  self.scan_dependencies(command_prefix, to_scan, token_engine_dependencies)
146
154
  return self.search_result()
155
+
156
+ def get_dependencies_context_from_results(self, path_file_results, remote_config):
157
+ deserializer = DependencyCheckDeserialize()
158
+ dependencies, namespace = deserializer.filter_vulnerabilities_by_confidence(path_file_results, remote_config)
159
+ context_dependencies_list = []
160
+
161
+ for dependency in dependencies:
162
+ vulnerabilities_node = dependency.find('ns:vulnerabilities', namespace)
163
+ if vulnerabilities_node:
164
+ vulnerabilities = vulnerabilities_node.findall('ns:vulnerability', namespace)
165
+ for vulnerability in vulnerabilities:
166
+ data = deserializer.extract_common_vuln_data(vulnerability, dependency, namespace)
167
+ references = deserializer.extract_references(vulnerability, namespace)
168
+
169
+ context = ContextDependencies(
170
+ cve_id=data["id"],
171
+ severity=data["severity"],
172
+ component=data["where"],
173
+ package_name=data["where"].split(":")[0] if data["where"] else "",
174
+ installed_version=data["where"].split(":")[2].lower() if len(data["where"].split(":")) == 3 else data["where"].split(":")[1].lower(),
175
+ fixed_version=[data["fix"]] if data["fix"] else [],
176
+ impact_paths=[],
177
+ description=data["description"],
178
+ references=references,
179
+ source_tool="Dependency Check"
180
+ )
181
+ context_dependencies_list.append(context)
182
+
183
+ print("===== BEGIN CONTEXT OUTPUT =====")
184
+ print(
185
+ json.dumps(
186
+ {
187
+ "dependencies_context": [
188
+ asdict(context) for context in context_dependencies_list
189
+ ]
190
+ },
191
+ indent=4,
192
+ )
193
+ )
194
+ print("===== END CONTEXT OUTPUT =====")
195
+
@@ -1,6 +1,9 @@
1
1
  from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.gateways.tool_gateway import (
2
2
  ToolGateway,
3
3
  )
4
+ from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.ContextDependencies import (
5
+ ContextDependencies,
6
+ )
4
7
 
5
8
  import subprocess
6
9
  import platform
@@ -8,6 +11,7 @@ import requests
8
11
  import re
9
12
  import os
10
13
  import json
14
+ from dataclasses import asdict, dataclass
11
15
 
12
16
  from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.helpers.get_artifacts import (
13
17
  GetArtifacts,
@@ -231,3 +235,53 @@ class XrayScan(ToolGateway):
231
235
  )
232
236
 
233
237
  return results_file
238
+
239
+ def get_dependencies_context_from_results(self, path_file_results, remote_config):
240
+ with open(path_file_results, "r") as file:
241
+ scan_results = json.load(file)
242
+ context_dependencies_list = []
243
+
244
+ for scan in scan_results:
245
+ vulnerabilities = scan.get("vulnerabilities", [])
246
+ for finding in vulnerabilities:
247
+ cve_ids = [cve.get("cve") for cve in finding.get("cves", []) if cve.get("cve")]
248
+ description = finding.get("summary", "")
249
+ severity = finding.get("severity", "unknown").lower()
250
+ references = finding.get("references", [])
251
+ components = finding.get("components", {})
252
+ component_list = list(components.keys()) if components else []
253
+ for pkg_id, comp_data in components.items():
254
+ fixed_version = comp_data.get("fixed_versions", [])
255
+ impact_paths = comp_data.get("impact_paths", [])
256
+ package_name = ""
257
+ installed_version = ""
258
+ if ":" in pkg_id:
259
+ parts = pkg_id.split(":")
260
+ package_name = parts[-2].replace("//", "")
261
+ installed_version = parts[-1]
262
+ context = ContextDependencies(
263
+ cve_id=cve_ids,
264
+ severity=severity,
265
+ component=pkg_id,
266
+ package_name=package_name,
267
+ installed_version=installed_version,
268
+ fixed_version=fixed_version,
269
+ impact_paths=impact_paths,
270
+ description=description,
271
+ references=references,
272
+ source_tool="Jfrog Xray"
273
+ )
274
+ context_dependencies_list.append(context)
275
+
276
+ print("===== BEGIN CONTEXT OUTPUT =====")
277
+ print(
278
+ json.dumps(
279
+ {
280
+ "dependencies_context": [
281
+ asdict(context) for context in context_dependencies_list
282
+ ]
283
+ },
284
+ indent=4,
285
+ )
286
+ )
287
+ print("===== END CONTEXT OUTPUT =====")
@@ -1 +1 @@
1
- version = '1.64.0'
1
+ version = '1.65.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.64.0
3
+ Version: 1.65.0
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -76,7 +76,7 @@ pip3 install devsecops-engine-tools
76
76
  ### Scan running - flags (CLI)
77
77
 
78
78
  ```bash
79
- devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_source ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --remote_config_branch ["remote_config_branch"] --module ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container", "engine_risk", "engine_code"] --tool ["nuclei", "bearer", "checkov", "kics", "kubescape", "trufflehog", "gitleaks", "prisma", "trivy", "xray", "dependency_check"] --folder_path ["Folder path scan engine_iac, engine_code, engine_dependencies and engine_secret"] --platform ["k8s","cloudformation","docker", "openapi", "terraform"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --token_external_checks ["token_external_checks"] --xray_mode ["scan", "audit","build-scan"] --image_to_scan ["image_to_scan"] --dast_file_path ["dast_file_path"]
79
+ devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_source ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --remote_config_branch ["remote_config_branch"] --module ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container", "engine_risk", "engine_code"] --tool ["nuclei", "bearer", "checkov", "kics", "kubescape", "trufflehog", "gitleaks", "prisma", "trivy", "xray", "dependency_check"] --folder_path ["Folder path scan engine_iac, engine_code, engine_dependencies and engine_secret"] --platform ["k8s","cloudformation","docker", "openapi", "terraform"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --token_external_checks ["token_external_checks"] --xray_mode ["scan", "audit","build-scan"] --image_to_scan ["image_to_scan"] --dast_file_path ["dast_file_path"] --terraform_repo_root ["terraform_files_repo"]
80
80
  ```
81
81
 
82
82
  ### Structure Remote Config
@@ -1,9 +1,9 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=8mcxhmLsT0Rx1Ay5WSfadsnf8wByG1uKeEIE-PxcOBI,19
2
+ devsecops_engine_tools/version.py,sha256=W2P0BAqjPk-aQMJpAkGVJh62-hjBrs2BY0jO6DxTdBo,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
6
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=xTSgAmEwyx_57kbtabwPndn2Dku0wtNyU4Fl5SUXSrk,10570
6
+ devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=sacJDgi_oPUIWUfO6vrg1kDvjpbeLzfGHgqL3xwcGao,10586
7
7
  devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -226,22 +226,23 @@ devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_de
226
226
  devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
227
  devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/ContextDependencies.py,sha256=wm_QYNrAWePWsn6YXBtHRriIp1mfx2awuitzuBRwd5o,376
229
230
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
230
231
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
232
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py,sha256=A4WPW-cNMlitI7-P2L-W2hFUPvIU7Ejk6JxRJGATfwc,301
232
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py,sha256=3DrF1v-E5tUGAj2N9f47o5TqPljCGjurWecUz36vRPY,281
233
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py,sha256=78WSYsEzt4394FEURSBmwV1pBztlORXaePFQ6GOZGGk,444
233
234
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=jrdWJhy9i6E_JFqXQDDgE7It-wYXjY3o9CgEfSTovsw,1741
235
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=F8ro58O475MNwXN2QRvGqcdkYMYb6upeFl8PV6tc-dQ,1979
235
236
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py,sha256=cTM8IQRZJBr5zG5nhCkTxuw2fCHDZ3wrPgQhRjG88pg,968
236
237
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py,sha256=E3-ff4NcyIvPCN5xUV_d0Vh7k1OVXqbPrHzUPJBgmr0,2283
237
238
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
239
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
240
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=I_YM6Zscvg0VzDAwltarwZTO3K8n1xZeTBfv92LEa5s,7940
241
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_tool.py,sha256=dBR17PB5cqyxBIlSw339AifEw077PT_xoq4fB8qs9jc,4895
241
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_deserialize.py,sha256=yT8C4bGIMii8XE8wnJW0bv6NI2DP-fpvGZTnG5H7gSg,8875
242
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/dependency_check_tool.py,sha256=NMJAq4tgYg3iPeAu3ZnfTwa-tTnkwfZLFr_W_Bu1WeY,7240
242
243
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
244
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py,sha256=ZUk-e1PKzV7uRAT7BpET363pgl2eMnXMCGSpewsOpKg,2236
244
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py,sha256=Z6PHC5mV14q6yDDQ75qskjtIbV0mUn1LI47yshgY89Q,8910
245
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py,sha256=Z69iiuMJBYViSsBjTza-n59-jlevI1ydEGpIwifPPWs,11528
245
246
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
246
247
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py,sha256=t2nAJ86ZyL6nz_tdrcWZ3cf5pnXhJ_q1AfVAbNhcrSk,3772
247
248
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -351,8 +352,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
351
352
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
352
353
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
353
354
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
354
- devsecops_engine_tools-1.64.0.dist-info/METADATA,sha256=J3BE-6g7AGZN5M3YxhZsalQE13EChLkeiDt1cRPdO1I,12005
355
- devsecops_engine_tools-1.64.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
356
- devsecops_engine_tools-1.64.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
357
- devsecops_engine_tools-1.64.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
358
- devsecops_engine_tools-1.64.0.dist-info/RECORD,,
355
+ devsecops_engine_tools-1.65.0.dist-info/METADATA,sha256=AqaWYDQFBChN1TXEHTLQGZZfRlK8NTkZqmYsN3wwPj4,12052
356
+ devsecops_engine_tools-1.65.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
357
+ devsecops_engine_tools-1.65.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
358
+ devsecops_engine_tools-1.65.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
359
+ devsecops_engine_tools-1.65.0.dist-info/RECORD,,