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

@@ -144,7 +144,7 @@ def get_inputs_from_cli(args):
144
144
  parser.add_argument(
145
145
  "--token_external_checks",
146
146
  required=False,
147
- help="Token for downloading external checks from engine_iac if is necessary. Ej: github:token, ssh:privatekey:pass",
147
+ help="Token for downloading external checks from engine_iac or engine_secret if is necessary. Ej: github:token, ssh:privatekey:pass",
148
148
  )
149
149
  parser.add_argument(
150
150
  "--xray_mode",
@@ -136,7 +136,8 @@ class HandleScan:
136
136
  findings_list, input_core = runner_secret_scan(
137
137
  dict_args,
138
138
  config_tool["ENGINE_SECRET"]["TOOL"],
139
- self.devops_platform_gateway
139
+ self.devops_platform_gateway,
140
+ secret_tool
140
141
  )
141
142
  if (
142
143
  dict_args["use_vulnerability_management"] == "true"
@@ -36,5 +36,5 @@ class SecretsManager(SecretsManagerGateway):
36
36
  secret_dict = json.loads(secret)
37
37
  return secret_dict
38
38
  except NoCredentialsError as e:
39
- logger.error("Error getting secret: {e}")
39
+ logger.error(f"Error getting secret: {e}")
40
40
  return None
@@ -11,7 +11,7 @@ from devsecops_engine_tools.engine_utilities.git_cli.infrastructure.git_run impo
11
11
  GitRun
12
12
  )
13
13
 
14
- def runner_secret_scan(dict_args, tool, devops_platform_gateway):
14
+ def runner_secret_scan(dict_args, tool, devops_platform_gateway, secret_tool):
15
15
  try:
16
16
  tool_deserealizator = None
17
17
  tool_gateway = None
@@ -25,7 +25,8 @@ def runner_secret_scan(dict_args, tool, devops_platform_gateway):
25
25
  dict_args = dict_args,
26
26
  tool=tool,
27
27
  tool_deserealizator = tool_deserealizator,
28
- git_gateway = git_gateway
28
+ git_gateway = git_gateway,
29
+ secret_tool = secret_tool
29
30
  )
30
31
  except Exception as e:
31
32
  raise Exception(f"Error engine_secret : {str(e)}")
@@ -9,3 +9,6 @@ class DeserializeConfigTool:
9
9
  self.exclude_path = json_data[tool]["EXCLUDE_PATH"]
10
10
  self.number_threads = json_data[tool]["NUMBER_THREADS"]
11
11
  self.target_branches = json_data["TARGET_BRANCHES"]
12
+ self.enable_custom_rules = json_data[tool]["ENABLE_CUSTOM_RULES"]
13
+ self.external_dir_owner = json_data[tool]["EXTERNAL_DIR_OWNER"]
14
+ self.external_dir_repo = json_data[tool]["EXTERNAL_DIR_REPOSITORY"]
@@ -1,5 +1,5 @@
1
1
  from abc import ABCMeta, abstractmethod
2
-
2
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.DeserializeConfigTool import DeserializeConfigTool
3
3
 
4
4
  class ToolGateway(metaclass=ABCMeta):
5
5
  @abstractmethod
@@ -8,9 +8,10 @@ class ToolGateway(metaclass=ABCMeta):
8
8
  @abstractmethod
9
9
  def run_tool_secret_scan(self,
10
10
  files_pullrequest: dict,
11
- exclude_path: dict,
12
11
  agent_os: str,
13
12
  agent_work_folder: str,
14
- num_threads: int,
15
- repository_name: str) -> str:
13
+ repository_name: str,
14
+ config_tool: DeserializeConfigTool,
15
+ secret_tool,
16
+ secret_external_checks) -> str:
16
17
  "run tool secret scan"
@@ -28,9 +28,10 @@ class SecretScan:
28
28
  self.tool_deserialize = tool_deserialize
29
29
  self.git_gateway = git_gateway
30
30
 
31
- def process(self, skip_tool, config_tool):
31
+ def process(self, skip_tool, config_tool, secret_tool, dict_args):
32
32
  finding_list = []
33
33
  file_path_findings = ""
34
+ secret_external_checks=dict_args["token_external_checks"]
34
35
  if skip_tool == False:
35
36
  self.tool_gateway.install_tool(self.devops_platform_gateway.get_variable("os"), self.devops_platform_gateway.get_variable("temp_directory"))
36
37
  files_pullrequest = self.git_gateway.get_files_pull_request(
@@ -45,12 +46,12 @@ class SecretScan:
45
46
  self.devops_platform_gateway.get_variable("repository_provider"))
46
47
  findings, file_path_findings = self.tool_gateway.run_tool_secret_scan(
47
48
  files_pullrequest,
48
- config_tool.exclude_path,
49
49
  self.devops_platform_gateway.get_variable("os"),
50
50
  self.devops_platform_gateway.get_variable("path_directory"),
51
- config_tool.number_threads,
52
- self.devops_platform_gateway.get_variable("repository")
53
- )
51
+ self.devops_platform_gateway.get_variable("repository"),
52
+ config_tool,
53
+ secret_tool,
54
+ secret_external_checks)
54
55
  finding_list = self.tool_deserialize.get_list_vulnerability(
55
56
  findings,
56
57
  self.devops_platform_gateway.get_variable("os"),
@@ -7,6 +7,13 @@ import concurrent.futures
7
7
  from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.tool_gateway import (
8
8
  ToolGateway,
9
9
  )
10
+ from devsecops_engine_tools.engine_utilities.github.infrastructure.github_api import (
11
+ GithubApi,
12
+ )
13
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
14
+ from devsecops_engine_tools.engine_utilities import settings
15
+
16
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
10
17
 
11
18
  result = []
12
19
 
@@ -40,20 +47,34 @@ class TrufflehogRun(ToolGateway):
40
47
  def run_tool_secret_scan(
41
48
  self,
42
49
  files_commits,
43
- exclude_paths,
44
50
  agent_os,
45
51
  agent_work_folder,
46
- num_threads,
47
52
  repository_name,
53
+ config_tool,
54
+ secret_tool,
55
+ secret_external_checks
48
56
  ):
49
57
  trufflehog_command = "trufflehog"
50
58
  if "Windows" in agent_os:
51
59
  trufflehog_command = "C:/Trufflehog/bin/trufflehog.exe"
52
60
  with open(f"{agent_work_folder}/excludedPath.txt", "w") as file:
53
- file.write("\n".join(exclude_paths))
61
+ file.write("\n".join(config_tool.exclude_path))
54
62
  exclude_path = f"{agent_work_folder}/excludedPath.txt"
55
63
  include_paths = self.config_include_path(files_commits, agent_work_folder)
56
- with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
64
+ enable_custom_rules = config_tool.enable_custom_rules.lower()
65
+ secret = None
66
+
67
+ if secret_tool is not None:
68
+ secret = secret_tool["github_token"] if "github" in secret_tool else None
69
+ elif secret_external_checks is not None:
70
+ secret = secret_external_checks.split("github:")[1] if "github" in secret_external_checks else None
71
+
72
+ if enable_custom_rules == "true" and secret is not None:
73
+ self.configurate_external_checks(config_tool, secret)
74
+ else: #In case that remote config from tool is enable but in the args dont send any type of secrets. So dont modified command
75
+ enable_custom_rules == "false"
76
+
77
+ with concurrent.futures.ThreadPoolExecutor(max_workers=config_tool.number_threads) as executor:
57
78
  results = executor.map(
58
79
  self.run_trufflehog,
59
80
  [trufflehog_command] * len(include_paths),
@@ -61,6 +82,7 @@ class TrufflehogRun(ToolGateway):
61
82
  [exclude_path] * len(include_paths),
62
83
  include_paths,
63
84
  [repository_name] * len(include_paths),
85
+ [enable_custom_rules] * len(include_paths),
64
86
  )
65
87
  findings, file_findings = self.create_file(self.decode_output(results), agent_work_folder)
66
88
  return findings, file_findings
@@ -90,8 +112,13 @@ class TrufflehogRun(ToolGateway):
90
112
  exclude_path,
91
113
  include_path,
92
114
  repository_name,
115
+ enable_custom_rules
93
116
  ):
94
117
  command = f"{trufflehog_command} filesystem {agent_work_folder + '/' + repository_name} --include-paths {include_path} --exclude-paths {exclude_path} --no-verification --json"
118
+
119
+ if enable_custom_rules == "true":
120
+ command = command.replace("--no-verification --json", "--config /tmp/rules/trufflehog/custom-rules.yaml --no-verification --json")
121
+
95
122
  result = subprocess.run(command, capture_output=True, shell=True, text=True)
96
123
  return result.stdout.strip()
97
124
 
@@ -115,4 +142,15 @@ class TrufflehogRun(ToolGateway):
115
142
  find["SourceMetadata"]["Data"]["Filesystem"]["file"] = where_text
116
143
  json_str = json.dumps(find)
117
144
  file.write(json_str + '\n')
118
- return findings, file_findings
145
+ return findings, file_findings
146
+
147
+ def configurate_external_checks(self, config_tool, secret):
148
+ try:
149
+ github_api = GithubApi(secret)
150
+ github_api.download_latest_release_assets(
151
+ config_tool.external_dir_owner,
152
+ config_tool.external_dir_repo,
153
+ "/tmp",
154
+ )
155
+ except Exception as ex:
156
+ logger.error(f"An error ocurred download external checks {ex}")
@@ -4,13 +4,13 @@ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.usecases.set_in
4
4
  SetInputCore,
5
5
  )
6
6
 
7
- def engine_secret_scan(devops_platform_gateway, tool_gateway, dict_args, tool, tool_deserealizator, git_gateway):
7
+ def engine_secret_scan(devops_platform_gateway, tool_gateway, dict_args, tool, tool_deserealizator, git_gateway, secret_tool):
8
8
  exclusions = devops_platform_gateway.get_remote_config(
9
9
  dict_args["remote_config_repo"], "engine_sast/engine_secret/Exclusions.json"
10
10
  )
11
11
  secret_scan = SecretScan(tool_gateway, devops_platform_gateway, tool_deserealizator, git_gateway)
12
12
  config_tool = secret_scan.complete_config_tool(dict_args, tool)
13
13
  skip_tool = secret_scan.skip_from_exclusion(exclusions)
14
- finding_list, file_path_findings = secret_scan.process(skip_tool, config_tool)
14
+ finding_list, file_path_findings = secret_scan.process(skip_tool, config_tool, secret_tool, dict_args)
15
15
  input_core = SetInputCore(devops_platform_gateway, dict_args, tool, config_tool)
16
16
  return finding_list, input_core.set_input_core(file_path_findings)
@@ -1 +1 @@
1
- version = '1.11.2'
1
+ version = '1.11.4'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.11.2
3
+ Version: 1.11.4
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -1,9 +1,9 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=oIWp2mvq7bBicZcvI_RJq4wlMsQh7x2xN_TUFBR4Kzk,19
2
+ devsecops_engine_tools/version.py,sha256=dLej3TvDZZqWTdmM8kau4jcXAhNExTiL86KzPRNkyCQ,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=r4XhvElDN8DSkEEWSZ9nMi1V5j1hRDON0Y6rnRMT7-w,7179
6
+ devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=HIxw71J4LILlgHoDLT_snIVImTUSKSZ7kz4SfUxNDEw,7196
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
@@ -27,13 +27,13 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_manage
27
27
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=JP-i5SFaMN7Yi4uDCe_AE1kJ197g1IJGcwQdq-RYbk4,16198
29
29
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=Au_ZXqwDi3CbVpQWAd29oruDAcZ1RX4e7OABSa_aRyA,7093
30
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=T1NIik_mrV1sSF-2yc5QXFJxaiOkXXNsRciObfOcvP4,7012
30
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=yrPQdNvFNDeS4g4UxdxFDj-yw17K_OZ3T-HDEiePknE,7041
31
31
  devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
32
32
  devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=-9gFDcvOIiXDIv4TUXR9zP83GBgR3v-xgp3QgcoaCo4,1926
36
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py,sha256=YW5n1SkeZFCNqFK8RCPmUxdy1NNEiOc-tHcYzSVAJOM,1658
36
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py,sha256=YcioUKsI_heIIcN8ITSoiebxMhUyo6G3cQ7BLOodV2U,1659
37
37
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=blI4ZrquRE4y6DJ7N2YRx1nL0wrAXvdpx0fLSUf5qwA,4831
39
39
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -137,25 +137,25 @@ devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/file_ge
137
137
  devsecops_engine_tools/engine_sast/engine_secret/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  devsecops_engine_tools/engine_sast/engine_secret/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
139
  devsecops_engine_tools/engine_sast/engine_secret/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
- devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py,sha256=yMzDoT6EpCVeuI-BLs0YfvAWcuWKWnSPoWSawdL_Cxk,1341
140
+ devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py,sha256=Th6koLvl0fn5SUAXTZ4cy9PEPKMjYpbB9A2S5rSYWxU,1394
141
141
  devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
142
  devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
143
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py,sha256=jSzaen30gGA1p3KPX70Zzx7P8yyZxtuNG9s1fBuzjwg,603
144
+ devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py,sha256=BSRubkd0WGZbhHleFl4PIPLScCTTUI8KnXO6B_xsyeo,828
145
145
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
146
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
147
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py,sha256=4fYPengHW3K0uVP6wHgOiNu-gRb08m78E7QZayZ2LC4,441
148
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py,sha256=juharYjy__KyB0fFCbU30k_aLd_9cQgsoCMeodq9ebA,593
148
+ devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py,sha256=KncnzIAmjmnt3qNWiRY0bnEvk_L68V16xQIILsWjhUg,778
149
149
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py,sha256=lxvqAtn3TD9xe-VYeVarlRbdG8eWpP5AtoMA0u8hqJI,3904
150
+ devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py,sha256=si5QB_2fB3XpigVlEZlSi1OICL0d8KFusYT3CxKFupM,3990
151
151
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py,sha256=k0LZd9PJpqEDns6DLYRGu9DzpRZeFsxAnowcjP5Rml4,2838
152
152
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
153
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
155
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py,sha256=WpFFswOmP38cLvfZHCrPDiRtdwH86n1CqVNS3K4s6uA,1968
156
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=cvCSKTDN-4oL9H5EZF_-WrP5bNamFt0WfeCwaMO_Nfo,5345
156
+ devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=MIf5Bun5dBnk_py-5vi8TvFQQ8HiHD9dlAv_XTC67Fc,7152
157
157
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py,sha256=WJJVGqE0PJMoATi8ubTGsqyrx4KqEQluXCg9Hk-NiOw,982
158
+ devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py,sha256=TAEZ2HquyM_0ZWMh5_8-qE0OI5EMG0VfyOlypZswbLI,1019
159
159
  devsecops_engine_tools/engine_sca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
160
  devsecops_engine_tools/engine_sca/engine_container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
161
  devsecops_engine_tools/engine_sca/engine_container/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -286,8 +286,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
286
286
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
287
287
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
288
288
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=esLnDBxP9MQBvV8noVohTrdWSVuljTKRpZgrn2kaD_c,192
289
- devsecops_engine_tools-1.11.2.dist-info/METADATA,sha256=uRLLQfYRs_IosP3kHVzWoHJq8Oc7XEEua1uVkUpLU5g,10854
290
- devsecops_engine_tools-1.11.2.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
291
- devsecops_engine_tools-1.11.2.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
292
- devsecops_engine_tools-1.11.2.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
293
- devsecops_engine_tools-1.11.2.dist-info/RECORD,,
289
+ devsecops_engine_tools-1.11.4.dist-info/METADATA,sha256=au1AunWdHwuu_4rt25z_G1K1Xkbp1m2DznMMNcweu18,10854
290
+ devsecops_engine_tools-1.11.4.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
291
+ devsecops_engine_tools-1.11.4.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
292
+ devsecops_engine_tools-1.11.4.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
293
+ devsecops_engine_tools-1.11.4.dist-info/RECORD,,