devsecops-engine-tools 1.34.1__py3-none-any.whl → 1.35.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.

Files changed (20) hide show
  1. devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +1 -1
  2. devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +1 -1
  3. devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +6 -0
  4. devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +30 -10
  5. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +61 -45
  6. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +126 -29
  7. devsecops_engine_tools/engine_sast/engine_code/src/domain/usecases/code_scan.py +1 -1
  8. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py +2 -1
  9. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +2 -1
  10. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +1 -1
  11. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_tool.py +2 -1
  12. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +8 -5
  13. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +1 -1
  14. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py +1 -1
  15. devsecops_engine_tools/version.py +1 -1
  16. {devsecops_engine_tools-1.34.1.dist-info → devsecops_engine_tools-1.35.0.dist-info}/METADATA +1 -1
  17. {devsecops_engine_tools-1.34.1.dist-info → devsecops_engine_tools-1.35.0.dist-info}/RECORD +20 -20
  18. {devsecops_engine_tools-1.34.1.dist-info → devsecops_engine_tools-1.35.0.dist-info}/WHEEL +0 -0
  19. {devsecops_engine_tools-1.34.1.dist-info → devsecops_engine_tools-1.35.0.dist-info}/entry_points.txt +0 -0
  20. {devsecops_engine_tools-1.34.1.dist-info → devsecops_engine_tools-1.35.0.dist-info}/top_level.txt +0 -0
@@ -109,7 +109,7 @@ def get_inputs_from_cli(args):
109
109
  type=parse_choices({"all", "docker", "k8s", "cloudformation", "openapi", "terraform"}),
110
110
  required=False,
111
111
  default="all",
112
- help="Platform to scan, only apply engine_iac tool",
112
+ help="Platform to scan, applies only to the engine_iac tool and it is possible to select several {all, docker, k8s, cloudformation, openapi, terraform}",
113
113
  )
114
114
  parser.add_argument(
115
115
  "--use_secrets_manager",
@@ -11,7 +11,7 @@ class Exclusions:
11
11
  self.expired_date = kwargs.get("expired_date", "")
12
12
  self.severity = kwargs.get("severity", "")
13
13
  self.hu = kwargs.get("hu", "")
14
- self.reason = kwargs.get("reason", "Risk Accepted")
14
+ self.reason = kwargs.get("reason", "DevSecOps policy")
15
15
  self.vm_id = kwargs.get("vm_id", "")
16
16
  self.vm_id_url = kwargs.get("vm_id_url", "")
17
17
  self.service = kwargs.get("service", "")
@@ -37,3 +37,9 @@ class VulnerabilityManagementGateway(metaclass=ABCMeta):
37
37
  self, sbom_components, service, dict_args, secret_tool, config_tool
38
38
  ):
39
39
  "send_sbom_components"
40
+
41
+ @abstractmethod
42
+ def get_black_list(
43
+ self, dict_args, secret_tool, config_tool
44
+ ):
45
+ "get_black_list"
@@ -1,5 +1,5 @@
1
1
  import sys
2
- import re
2
+ from itertools import chain
3
3
  from dataclasses import dataclass
4
4
  from functools import reduce
5
5
 
@@ -54,7 +54,7 @@ class BreakBuild:
54
54
  )
55
55
 
56
56
  def process(self, findings_list: "list[Finding]", input_core: InputCore, args: any):
57
- sys.stdout.reconfigure(encoding='utf-8')
57
+ sys.stdout.reconfigure(encoding="utf-8")
58
58
  devops_platform_gateway = self.devops_platform_gateway
59
59
  printer_table_gateway = self.printer_table_gateway
60
60
  threshold = input_core.threshold_defined
@@ -241,9 +241,11 @@ class BreakBuild:
241
241
  ),
242
242
  )
243
243
  )
244
-
244
+
245
245
  if devops_platform_gateway.get_variable("stage") == "build":
246
- print(devops_platform_gateway.result_pipeline("succeeded_with_issues"))
246
+ print(
247
+ devops_platform_gateway.result_pipeline("succeeded_with_issues")
248
+ )
247
249
  else:
248
250
  print(devops_platform_gateway.result_pipeline("succeeded"))
249
251
 
@@ -267,7 +269,12 @@ class BreakBuild:
267
269
  }
268
270
 
269
271
  ids_vulnerabilitites = list(
270
- map(lambda x: x.id, vulnerabilities_without_exclusions_list)
272
+ chain.from_iterable(
273
+ (
274
+ [x.id, x.description] if x.tool == "XRAY" else [x.id]
275
+ for x in vulnerabilities_without_exclusions_list
276
+ )
277
+ )
271
278
  )
272
279
  ids_match = list(filter(lambda x: x in ids_vulnerabilitites, threshold.cve))
273
280
  if len(ids_match) > 0:
@@ -301,7 +308,11 @@ class BreakBuild:
301
308
  status = "failed"
302
309
  else:
303
310
  if devops_platform_gateway.get_variable("stage") == "build":
304
- print(devops_platform_gateway.result_pipeline("succeeded_with_issues"))
311
+ print(
312
+ devops_platform_gateway.result_pipeline(
313
+ "succeeded_with_issues"
314
+ )
315
+ )
305
316
  scan_result["compliances"] = {
306
317
  "threshold": {"critical": compliance_critical},
307
318
  "status": status,
@@ -334,7 +345,10 @@ class BreakBuild:
334
345
  (
335
346
  elem.create_date
336
347
  for elem in exclusions
337
- if elem.id == item.id and (elem.where in item.where or "all" in elem.where)
348
+ if elem.id == item.id
349
+ and (
350
+ elem.where in item.where or "all" in elem.where
351
+ )
338
352
  ),
339
353
  None,
340
354
  ),
@@ -342,7 +356,10 @@ class BreakBuild:
342
356
  (
343
357
  elem.expired_date
344
358
  for elem in exclusions
345
- if elem.id == item.id and (elem.where in item.where or "all" in elem.where)
359
+ if elem.id == item.id
360
+ and (
361
+ elem.where in item.where or "all" in elem.where
362
+ )
346
363
  ),
347
364
  None,
348
365
  ),
@@ -350,7 +367,10 @@ class BreakBuild:
350
367
  (
351
368
  elem.reason
352
369
  for elem in exclusions
353
- if elem.id == item.id and (elem.where in item.where or "all" in elem.where)
370
+ if elem.id == item.id
371
+ and (
372
+ elem.where in item.where or "all" in elem.where
373
+ )
354
374
  ),
355
375
  None,
356
376
  ),
@@ -378,4 +398,4 @@ class BreakBuild:
378
398
  custom_message,
379
399
  )
380
400
  )
381
- return scan_result
401
+ return scan_result
@@ -37,7 +37,7 @@ from devsecops_engine_tools.engine_sca.engine_dependencies.src.applications.runn
37
37
  runner_engine_dependencies,
38
38
  )
39
39
  from devsecops_engine_tools.engine_dast.src.applications.runner_dast_scan import (
40
- runner_engine_dast
40
+ runner_engine_dast,
41
41
  )
42
42
  from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
43
43
  define_env,
@@ -47,8 +47,6 @@ from devsecops_engine_tools.engine_utilities import settings
47
47
 
48
48
  logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
49
49
 
50
- MESSAGE_ENABLED = "not yet enabled"
51
-
52
50
 
53
51
  class HandleScan:
54
52
  def __init__(
@@ -104,7 +102,7 @@ class HandleScan:
104
102
  dict_args,
105
103
  config_tool["ENGINE_DAST"],
106
104
  secret_tool,
107
- self.devops_platform_gateway
105
+ self.devops_platform_gateway,
108
106
  )
109
107
  self._use_vulnerability_management(
110
108
  config_tool, input_core, dict_args, secret_tool, env
@@ -133,48 +131,16 @@ class HandleScan:
133
131
  return findings_list, input_core
134
132
  elif "engine_dependencies" in dict_args["tool"]:
135
133
  findings_list, input_core, sbom_components = runner_engine_dependencies(
136
- dict_args, config_tool, secret_tool, self.devops_platform_gateway, self.sbom_tool_gateway
137
- )
138
- self._use_vulnerability_management(
139
- config_tool,
140
- input_core,
141
134
  dict_args,
135
+ config_tool,
142
136
  secret_tool,
143
- env,
144
- sbom_components
137
+ self.devops_platform_gateway,
138
+ self.sbom_tool_gateway,
145
139
  )
146
- return findings_list, input_core
147
-
148
- def _define_threshold_quality_vuln(
149
- self, input_core: InputCore, dict_args, secret_tool, config_tool
150
- ):
151
- quality_vulnerability_management = (
152
- input_core.threshold_defined.quality_vulnerability_management
153
- )
154
- if quality_vulnerability_management:
155
- product_type = self.vulnerability_management.get_product_type_service(
156
- input_core.scope_pipeline, dict_args, secret_tool, config_tool
140
+ self._use_vulnerability_management(
141
+ config_tool, input_core, dict_args, secret_tool, env, sbom_components
157
142
  )
158
- if product_type:
159
- pt_name = product_type.name
160
- apply_qualitypt = next(
161
- filter(
162
- lambda qapt: pt_name in qapt,
163
- quality_vulnerability_management["PTS"],
164
- ),
165
- None,
166
- )
167
- if apply_qualitypt:
168
- pt_info = apply_qualitypt[pt_name]
169
- pt_profile = pt_info["PROFILE"]
170
- pt_apps = pt_info["APPS"]
171
-
172
- input_core.threshold_defined.vulnerability = (
173
- LevelVulnerability(quality_vulnerability_management[pt_profile])
174
- if pt_apps == "ALL"
175
- or any(map(lambda pd: pd in input_core.scope_pipeline, pt_apps))
176
- else input_core.threshold_defined.vulnerability
177
- )
143
+ return findings_list, input_core
178
144
 
179
145
  def _use_vulnerability_management(
180
146
  self,
@@ -207,9 +173,15 @@ class HandleScan:
207
173
  self.devops_platform_gateway.get_variable("branch_tag"),
208
174
  self.devops_platform_gateway.get_variable("commit_hash"),
209
175
  env,
210
- self.devops_platform_gateway.get_variable("vm_product_type_name"),
211
- self.devops_platform_gateway.get_variable("vm_product_name"),
212
- self.devops_platform_gateway.get_variable("vm_product_description"),
176
+ self.devops_platform_gateway.get_variable(
177
+ "vm_product_type_name"
178
+ ),
179
+ self.devops_platform_gateway.get_variable(
180
+ "vm_product_name"
181
+ ),
182
+ self.devops_platform_gateway.get_variable(
183
+ "vm_product_description"
184
+ ),
213
185
  )
214
186
  )
215
187
 
@@ -222,6 +194,10 @@ class HandleScan:
222
194
  config_tool,
223
195
  )
224
196
 
197
+ self._update_threshold_cve(
198
+ input_core, dict_args, secret_tool, config_tool
199
+ )
200
+
225
201
  self._define_threshold_quality_vuln(
226
202
  input_core, dict_args, secret_tool, config_tool
227
203
  )
@@ -239,3 +215,43 @@ class HandleScan:
239
215
  )
240
216
  except ExceptionFindingsExcepted as ex2:
241
217
  logger.error(str(ex2))
218
+
219
+ def _update_threshold_cve(
220
+ self, input_core: InputCore, dict_args, secret_tool, config_tool
221
+ ):
222
+ input_core.threshold_defined.cve.extend(
223
+ self.vulnerability_management.get_black_list(
224
+ dict_args, secret_tool, config_tool
225
+ )
226
+ )
227
+
228
+ def _define_threshold_quality_vuln(
229
+ self, input_core: InputCore, dict_args, secret_tool, config_tool
230
+ ):
231
+ quality_vulnerability_management = (
232
+ input_core.threshold_defined.quality_vulnerability_management
233
+ )
234
+ if quality_vulnerability_management:
235
+ product_type = self.vulnerability_management.get_product_type_service(
236
+ input_core.scope_pipeline, dict_args, secret_tool, config_tool
237
+ )
238
+ if product_type:
239
+ pt_name = product_type.name
240
+ apply_qualitypt = next(
241
+ filter(
242
+ lambda qapt: pt_name in qapt,
243
+ quality_vulnerability_management["PTS"],
244
+ ),
245
+ None,
246
+ )
247
+ if apply_qualitypt:
248
+ pt_info = apply_qualitypt[pt_name]
249
+ pt_profile = pt_info["PROFILE"]
250
+ pt_apps = pt_info["APPS"]
251
+
252
+ input_core.threshold_defined.vulnerability = (
253
+ LevelVulnerability(quality_vulnerability_management[pt_profile])
254
+ if pt_apps == "ALL"
255
+ or any(map(lambda pd: pd in input_core.scope_pipeline, pt_apps))
256
+ else input_core.threshold_defined.vulnerability
257
+ )
@@ -13,7 +13,7 @@ from devsecops_engine_tools.engine_utilities.defect_dojo import (
13
13
  Engagement,
14
14
  Product,
15
15
  Component,
16
- FindingExclusion
16
+ FindingExclusion,
17
17
  )
18
18
  from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
19
19
  from devsecops_engine_tools.engine_core.src.domain.model.report import Report
@@ -82,7 +82,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
82
82
  "DEPENDENCY_CHECK": "Dependency Check Scan",
83
83
  "SONARQUBE": "SonarQube API Import",
84
84
  "GITLEAKS": "Gitleaks Scan",
85
- "NUCLEI": "Nuclei Scan"
85
+ "NUCLEI": "Nuclei Scan",
86
86
  }
87
87
 
88
88
  if any(
@@ -254,9 +254,11 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
254
254
  )
255
255
 
256
256
  white_list = self._get_finding_exclusion(
257
- session_manager, dd_max_retries, {
257
+ session_manager,
258
+ dd_max_retries,
259
+ {
258
260
  "type": "white_list",
259
- }
261
+ },
260
262
  )
261
263
 
262
264
  exclusions_white_list = self._get_findings_with_exclusions(
@@ -299,7 +301,9 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
299
301
  "HOST_DEFECT_DOJO"
300
302
  ]
301
303
 
302
- session_manager = self._get_session_manager(dict_args, secret_tool, config_tool)
304
+ session_manager = self._get_session_manager(
305
+ dict_args, secret_tool, config_tool
306
+ )
303
307
 
304
308
  findings = self._get_findings(
305
309
  session_manager,
@@ -316,13 +320,18 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
316
320
  )
317
321
 
318
322
  white_list = self._get_finding_exclusion(
319
- session_manager, max_retries, {
323
+ session_manager,
324
+ max_retries,
325
+ {
320
326
  "type": "white_list",
321
- }
327
+ },
322
328
  )
323
329
 
324
330
  all_exclusions = self._get_report_exclusions(
325
- all_findings, self._format_date_to_dd_format, host_dd=host_dd, white_list=white_list
331
+ all_findings,
332
+ self._format_date_to_dd_format,
333
+ host_dd=host_dd,
334
+ white_list=white_list,
326
335
  )
327
336
 
328
337
  return all_findings, all_exclusions
@@ -401,6 +410,26 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
401
410
  )
402
411
  )
403
412
 
413
+ def get_black_list(self, dict_args, secret_tool, config_tool):
414
+ try:
415
+ session_manager = self._get_session_manager(
416
+ dict_args, secret_tool, config_tool
417
+ )
418
+
419
+ exclusions_black_list = self._get_finding_exclusion(
420
+ session_manager,
421
+ config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["MAX_RETRIES_QUERY"],
422
+ {
423
+ "type": "black_list",
424
+ },
425
+ )
426
+
427
+ return [entry.unique_id_from_tool for entry in exclusions_black_list]
428
+ except Exception as ex:
429
+ raise ExceptionVulnerabilityManagement(
430
+ "Error getting black list with the following error: {0} ".format(ex)
431
+ )
432
+
404
433
  def _build_request_importscan(
405
434
  self,
406
435
  vulnerability_management: VulnerabilityManagement,
@@ -502,19 +531,34 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
502
531
  if finding.risk_accepted:
503
532
  exclusions.append(
504
533
  self._create_report_exclusion(
505
- finding, date_fn, "engine_risk", self.RISK_ACCEPTED, host_dd, **kwargs
534
+ finding,
535
+ date_fn,
536
+ "engine_risk",
537
+ self.RISK_ACCEPTED,
538
+ host_dd,
539
+ **kwargs,
506
540
  )
507
541
  )
508
542
  elif finding.false_p:
509
543
  exclusions.append(
510
544
  self._create_report_exclusion(
511
- finding, date_fn, "engine_risk", self.FALSE_POSITIVE, host_dd, **kwargs
545
+ finding,
546
+ date_fn,
547
+ "engine_risk",
548
+ self.FALSE_POSITIVE,
549
+ host_dd,
550
+ **kwargs,
512
551
  )
513
552
  )
514
553
  elif finding.out_of_scope:
515
554
  exclusions.append(
516
555
  self._create_report_exclusion(
517
- finding, date_fn, "engine_risk", self.OUT_OF_SCOPE, host_dd, **kwargs
556
+ finding,
557
+ date_fn,
558
+ "engine_risk",
559
+ self.OUT_OF_SCOPE,
560
+ host_dd,
561
+ **kwargs,
518
562
  )
519
563
  )
520
564
  elif finding.risk_status == "Transfer Accepted":
@@ -525,26 +569,45 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
525
569
  "engine_risk",
526
570
  self.TRANSFERRED_FINDING,
527
571
  host_dd,
528
- **kwargs
572
+ **kwargs,
529
573
  )
530
574
  )
531
575
  elif finding.risk_status == self.ON_WHITELIST:
532
576
  exclusions.append(
533
577
  self._create_report_exclusion(
534
- finding, date_fn, "engine_risk", self.ON_WHITELIST, host_dd, **kwargs
578
+ finding,
579
+ date_fn,
580
+ "engine_risk",
581
+ self.ON_WHITELIST,
582
+ host_dd,
583
+ **kwargs,
535
584
  )
536
585
  )
537
586
  return exclusions
538
587
 
539
588
  def _get_findings_with_exclusions(
540
- self, session_manager, service, max_retries, query_params, tool, date_fn, reason, **kwargs
589
+ self,
590
+ session_manager,
591
+ service,
592
+ max_retries,
593
+ query_params,
594
+ tool,
595
+ date_fn,
596
+ reason,
597
+ **kwargs,
541
598
  ):
542
599
  findings = self._get_findings(
543
600
  session_manager, service, max_retries, query_params
544
601
  )
545
602
 
546
603
  return map(
547
- partial(self._create_exclusion, date_fn=date_fn, tool=tool, reason=reason, **kwargs),
604
+ partial(
605
+ self._create_exclusion,
606
+ date_fn=date_fn,
607
+ tool=tool,
608
+ reason=reason,
609
+ **kwargs,
610
+ ),
548
611
  findings,
549
612
  )
550
613
 
@@ -567,30 +630,60 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
567
630
  def _date_reason_based(self, finding, date_fn, reason, tool, **kwargs):
568
631
  def get_vuln_id(finding, tool):
569
632
  if tool == "engine_risk":
570
- return finding.id[0]["vulnerability_id"] if finding.id else finding.vuln_id_from_tool
633
+ return (
634
+ finding.id[0]["vulnerability_id"]
635
+ if finding.id
636
+ else finding.vuln_id_from_tool
637
+ )
571
638
  else:
572
- return finding.vulnerability_ids[0]["vulnerability_id"] if finding.vulnerability_ids else finding.vuln_id_from_tool
639
+ return (
640
+ finding.vulnerability_ids[0]["vulnerability_id"]
641
+ if finding.vulnerability_ids
642
+ else finding.vuln_id_from_tool
643
+ )
573
644
 
574
645
  def get_dates_from_whitelist(vuln_id, white_list):
575
- matching_finding = next(filter(lambda x: x.unique_id_from_tool == vuln_id, white_list), None)
646
+ matching_finding = next(
647
+ filter(lambda x: x.unique_id_from_tool == vuln_id, white_list), None
648
+ )
576
649
  if matching_finding:
577
- return date_fn(matching_finding.create_date), date_fn(matching_finding.expiration_date)
650
+ return date_fn(matching_finding.create_date), date_fn(
651
+ matching_finding.expiration_date
652
+ )
578
653
  return date_fn(None), date_fn(None)
579
654
 
580
655
  reason_to_dates = {
581
- self.FALSE_POSITIVE: lambda: (date_fn(finding.last_status_update), date_fn(None)),
582
- self.OUT_OF_SCOPE: lambda: (date_fn(finding.last_status_update), date_fn(None)),
583
- self.TRANSFERRED_FINDING: lambda: (date_fn(finding.transfer_finding.date), date_fn(finding.transfer_finding.expiration_date)),
584
- self.RISK_ACCEPTED: lambda: (date_fn(finding.accepted_risks[-1]["created"]), date_fn(finding.accepted_risks[-1]["expiration_date"])),
585
- self.ON_WHITELIST: lambda: get_dates_from_whitelist(get_vuln_id(finding, tool), kwargs.get("white_list", [])),
656
+ self.FALSE_POSITIVE: lambda: (
657
+ date_fn(finding.last_status_update),
658
+ date_fn(None),
659
+ ),
660
+ self.OUT_OF_SCOPE: lambda: (
661
+ date_fn(finding.last_status_update),
662
+ date_fn(None),
663
+ ),
664
+ self.TRANSFERRED_FINDING: lambda: (
665
+ date_fn(finding.transfer_finding.date),
666
+ date_fn(finding.transfer_finding.expiration_date),
667
+ ),
668
+ self.RISK_ACCEPTED: lambda: (
669
+ date_fn(finding.accepted_risks[-1]["created"]),
670
+ date_fn(finding.accepted_risks[-1]["expiration_date"]),
671
+ ),
672
+ self.ON_WHITELIST: lambda: get_dates_from_whitelist(
673
+ get_vuln_id(finding, tool), kwargs.get("white_list", [])
674
+ ),
586
675
  }
587
676
 
588
- create_date, expired_date = reason_to_dates.get(reason, lambda: (date_fn(None), date_fn(None)))()
677
+ create_date, expired_date = reason_to_dates.get(
678
+ reason, lambda: (date_fn(None), date_fn(None))
679
+ )()
589
680
  return create_date, expired_date
590
681
 
591
682
  def _create_exclusion(self, finding, date_fn, tool, reason, **kwargs):
592
- create_date, expired_date = self._date_reason_based(finding, date_fn, reason, tool, **kwargs)
593
-
683
+ create_date, expired_date = self._date_reason_based(
684
+ finding, date_fn, reason, tool, **kwargs
685
+ )
686
+
594
687
  return Exclusions(
595
688
  id=(
596
689
  finding.vuln_id_from_tool
@@ -608,8 +701,12 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
608
701
  reason=reason,
609
702
  )
610
703
 
611
- def _create_report_exclusion(self, finding, date_fn, tool, reason, host_dd, **kwargs):
612
- create_date, expired_date = self._date_reason_based(finding, date_fn, reason, tool, **kwargs)
704
+ def _create_report_exclusion(
705
+ self, finding, date_fn, tool, reason, host_dd, **kwargs
706
+ ):
707
+ create_date, expired_date = self._date_reason_based(
708
+ finding, date_fn, reason, tool, **kwargs
709
+ )
613
710
 
614
711
  return Exclusions(
615
712
  id=(
@@ -70,7 +70,7 @@ class CodeScan:
70
70
  expired_date=exc.get("expired_date", ""),
71
71
  severity=exc.get("severity", ""),
72
72
  hu=exc.get("hu", ""),
73
- reason=exc.get("reason", "Risk acceptance"),
73
+ reason=exc.get("reason", "DevSecOps policy"),
74
74
  )
75
75
  list_exclusions.append(exclusion)
76
76
  return list_exclusions, skip_tool
@@ -14,5 +14,6 @@ class ToolGateway(metaclass=ABCMeta):
14
14
  secret_tool,
15
15
  secret_external_checks,
16
16
  agent_tem_dir:str,
17
- tool) -> str:
17
+ tool,
18
+ folder_path) -> str:
18
19
  "run tool secret scan"
@@ -54,7 +54,8 @@ class SecretScan:
54
54
  secret_tool,
55
55
  secret_external_checks,
56
56
  self.devops_platform_gateway.get_variable("temp_directory"),
57
- tool)
57
+ tool,
58
+ dict_args["folder_path"])
58
59
  finding_list = self.tool_deserialize.get_list_vulnerability(
59
60
  findings,
60
61
  self.devops_platform_gateway.get_variable("os"),
@@ -52,7 +52,7 @@ class SetInputCore:
52
52
  expired_date=item.get("expired_date", ""),
53
53
  severity=item.get("severity", ""),
54
54
  hu=item.get("hu", ""),
55
- reason=item.get("reason", "Risk acceptance"),
55
+ reason=item.get("reason", "DevSecOps policy"),
56
56
  )
57
57
  for item in value[tool]
58
58
  ]
@@ -92,7 +92,8 @@ class GitleaksTool(ToolGateway):
92
92
  secret_tool, # For external checks
93
93
  secret_external_checks, # For external checks
94
94
  agent_temp_dir,
95
- tool
95
+ tool,
96
+ folder_path = None
96
97
  ):
97
98
  command = [self._COMMAND, "dir"]
98
99
  finding_path = os.path.join(agent_work_folder, "gitleaks_report.json")
@@ -62,7 +62,8 @@ class TrufflehogRun(ToolGateway):
62
62
  secret_tool,
63
63
  secret_external_checks,
64
64
  agent_temp_dir,
65
- tool
65
+ tool,
66
+ folder_path
66
67
  ):
67
68
  trufflehog_command = "trufflehog"
68
69
  if "Windows" in agent_os:
@@ -84,7 +85,8 @@ class TrufflehogRun(ToolGateway):
84
85
  include_paths,
85
86
  [repository_name] * len(include_paths),
86
87
  [enable_custom_rules] * len(include_paths),
87
- [agent_os] * len(include_paths)
88
+ [agent_os] * len(include_paths),
89
+ [folder_path] * len(include_paths)
88
90
  )
89
91
  findings, file_findings = self.create_file(self.decode_output(results), agent_work_folder, config_tool, tool)
90
92
  return findings, file_findings
@@ -117,10 +119,11 @@ class TrufflehogRun(ToolGateway):
117
119
  include_path,
118
120
  repository_name,
119
121
  enable_custom_rules,
120
- agent_os
122
+ agent_os,
123
+ folder_path
121
124
  ):
122
- command = f"{trufflehog_command} filesystem {agent_work_folder + '/' + repository_name} --include-paths {include_path} --exclude-paths {exclude_path} --no-verification --no-update --json"
123
-
125
+ path = agent_work_folder if folder_path is not None else f"{agent_work_folder}/{repository_name}"
126
+ command = f"{trufflehog_command} filesystem {path} --include-paths {include_path} --exclude-paths {exclude_path} --no-verification --no-update --json"
124
127
  if enable_custom_rules:
125
128
  command = command.replace("--no-verification --no-update --json", f"--config {agent_work_folder}//rules//trufflehog//custom-rules.yaml --no-verification --no-update --json" if "Windows" in agent_os else
126
129
  "/tmp/rules/trufflehog/custom-rules.yaml --no-verification --no-update --json" if "Linux" in agent_os else
@@ -36,7 +36,7 @@ class SetInputCore:
36
36
  expired_date=item.get("expired_date", ""),
37
37
  severity=item.get("severity", ""),
38
38
  hu=item.get("hu", ""),
39
- reason=item.get("reason", "Risk acceptance"),
39
+ reason=item.get("reason", "DevSecOps policy"),
40
40
  )
41
41
  )
42
42
 
@@ -25,7 +25,7 @@ class SetInputCore:
25
25
  expired_date=item.get("expired_date", ""),
26
26
  severity=item.get("severity", ""),
27
27
  hu=item.get("hu", ""),
28
- reason=item.get("reason", "Risk acceptance"),
28
+ reason=item.get("reason", "DevSecOps policy"),
29
29
  )
30
30
  for item in value[tool]
31
31
  ]
@@ -1 +1 @@
1
- version = '1.34.1'
1
+ version = '1.35.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.34.1
3
+ Version: 1.35.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
@@ -1,16 +1,16 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=_YF4JMX8wipRFnFsoe2hCSL0yq3pGTYTQez7aZoQedw,19
2
+ devsecops_engine_tools/version.py,sha256=AhwlqZYhNUZRiQCFEqxX4A3RccAOI4GKRaFQDLe8wGs,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=PcYxH6NQIPkFPMkeOEUs5iw2k-gL0HKuOek2uhR4gIQ,8080
6
+ devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=68fhJcBdGM3DElwGGvZWFI9JJVAHrGUFTuaDa_qVxMg,8181
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
10
10
  devsecops_engine_tools/engine_core/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  devsecops_engine_tools/engine_core/src/domain/model/component.py,sha256=_rWtP0v_lyOZ4s5FGZc0rOJ3eh4AAWuGMaXzSYBcZMU,94
12
12
  devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=YLeOj4O7kNsUx8RD6pwBQdFLYbkm7Eh-F-ohZ3jFGbs,599
13
- devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=RjFKIpGVuntnvFZ6GlOYODrChKsUcWxPVQLGeGOeqfo,751
13
+ devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=ujzfzp_gwkd2Qzy_F8be3evgDVk2pxbSa0YuMlM2aYU,754
14
14
  devsecops_engine_tools/engine_core/src/domain/model/finding.py,sha256=MntDksQuPt1L-1Ww3nK7NbMLfVwRjxPGCN_oHYXbbWk,383
15
15
  devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzCwsGxnrlvvk84S5iNYJRDQWbaQP9MwR3N7tVM,422
16
16
  devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py,sha256=ntn_UWqHc6sT5g_LozBdjdewTQxFsp7Kt8M0xqw-k_o,98
@@ -24,11 +24,11 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gate
24
24
  devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=ROBsh7Lyu62a5RqZ4KgGQcwrBzbHRwxAJ9Rj3LoupQc,602
25
25
  devsecops_engine_tools/engine_core/src/domain/model/gateway/sbom_manager.py,sha256=HpkUZYbmW72r4KDIPWwDmAOU_uawmKaexxmWheR9QAA,321
26
26
  devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
27
- devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=Szw5ONhHDRVgnBIUzCS0kkY3GbosZTS41kJVOcx3kSM,1302
27
+ devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=MsNHO4x78KqMkJ3u3gxPltyBIqP5gB3tRBlN-w7VtBg,1429
28
28
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=0JK4U5LGxzrLVZOw68j1PMxmLTDPru7Kts_-RtAG0jA,15965
29
+ devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=OLaovhcWWA6n1TkoSGZhnfjfQis1R33WztEN3DG6gII,16645
30
30
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=RirHqsW5AhGjV7ITa13bW_BfM6VE99DffrPASoB9SN0,9403
31
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=XHLeVIVLrXv4oZF8GY6InEqWg0dszMb-0XBJFX7RZjY,10161
31
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=HKwsK09-rRbW7y7aOrsCJLGaa279XeUB3M8k6SsGFtA,10723
32
32
  devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
33
33
  devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -38,7 +38,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=buCBJ6kAg-5b_7P-gWzem6NEMbk5lK9Hx0Zuf-BQfXQ,5090
40
40
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=ma6TTlrXnUqGJ6DXM7PQzgZyoTK6Wd-tvMXLITpOvaA,27330
41
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=erkwrgzqUXArghRmFfgyWiS0UeQmo0eSKIgqkvmcRMA,29388
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=KCg6tTDncasrRZbB20QiLZNE6TKYkfgQ9zP0wPd3xe0,3925
44
44
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -125,7 +125,7 @@ devsecops_engine_tools/engine_sast/engine_code/src/domain/model/config_tool.py,s
125
125
  devsecops_engine_tools/engine_sast/engine_code/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  devsecops_engine_tools/engine_sast/engine_code/src/domain/model/gateways/tool_gateway.py,sha256=kseBXn2SzCaFNJLghY9bTOCVvD2v5t7DKcfxgSmvBc0,459
127
127
  devsecops_engine_tools/engine_sast/engine_code/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
- devsecops_engine_tools/engine_sast/engine_code/src/domain/usecases/code_scan.py,sha256=4LVJffD-v5kbbJz1qNM9CjVEQgh-6UOpgjXMUqhQ3sg,5989
128
+ devsecops_engine_tools/engine_sast/engine_code/src/domain/usecases/code_scan.py,sha256=LbsUQtQNrKlNO_9X5o5G32gCAYWHlaQwZDYMQtArOnw,5990
129
129
  devsecops_engine_tools/engine_sast/engine_code/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
130
  devsecops_engine_tools/engine_sast/engine_code/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
131
  devsecops_engine_tools/engine_sast/engine_code/src/infrastructure/driven_adapters/bearer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -173,18 +173,18 @@ devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py,sha256=4
173
173
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
174
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
175
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py,sha256=4fYPengHW3K0uVP6wHgOiNu-gRb08m78E7QZayZ2LC4,441
176
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py,sha256=Ow6CpzKoUhZzLl2hAlWW7vn-of1TTdamemLqhgxZvkg,729
176
+ devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py,sha256=VMhjJFEXxFT7tqY3m2c384IhBRjCk7YMZ-DKs9lHivA,771
177
177
  devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py,sha256=MZveRxMAE3x8aTuqaePsQYD7PDuh0I4_EKPnHKsEkYI,4481
179
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py,sha256=VbpiXDHIGeFAGHWb6FBR1axRvh5R2vCOzeYsDkQoHAE,3189
178
+ devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py,sha256=pziX0qZ5Ac4QDcJLxLLdpm5XBIRTjOFp8D_LEU_MdQk,4528
179
+ devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py,sha256=mfmzInLUV2W-uqAOua_haCZnEByqrDVyTfTzq5DftwY,3190
180
180
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
181
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
182
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
183
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_deserealizator.py,sha256=IERIxeHhtQj0npBoL4_qb2mRlNgEUjg603DqGA49RQ4,1617
184
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_tool.py,sha256=FTkxlZu9PSX53wri7I0zN6iNdbXEioEvjmLm_ZqxUiM,5978
184
+ devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_tool.py,sha256=tSsX5gtv_EzMYnhTzpRdxXT__eiqWELj1hS61N5t5ek,6006
185
185
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
186
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py,sha256=mrSqPrkMiikxQ_uY-rF2I8QvicsOMdMBzTC8CTV3Wk8,2392
187
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=TnGnbwBOiPiFoeCP7-vswi-Y_yjtJJ2D2W9XYaA4ZGs,7938
187
+ devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=6QUE1DMiTcX46TRK_K8zx89ugpmoKNqyin6wSb2DUwM,8103
188
188
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
189
  devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py,sha256=N5fiG2r5FoxcDdZ12D5hrkeqnu8eRILtxYLq3aj_LfY,1090
190
190
  devsecops_engine_tools/engine_sca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -203,7 +203,7 @@ devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/too
203
203
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
204
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=N61PjZAecSqhGTYc2HcyuBqdhDTFZ6ZpQMmOQH17h9Y,4122
205
205
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py,sha256=4wgBTQSDE-C5v01C3Vxzeq0DJKZUSqQ5TVLG7yPZPKs,926
206
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py,sha256=n-SjcDl6YPAnUWqkOYXsVr-mTiS4rGxj4sS2YkXo6xw,2632
206
+ devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py,sha256=1F1l-_2izb_ENhE0c0iz42L8FyPv07ZGsQbkJzDI_uA,2633
207
207
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
208
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
209
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -231,7 +231,7 @@ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/
231
231
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
232
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py,sha256=0JYY5g3bSSiEqFdsN5phglX76z3YpiyGTL_CvBvO274,1562
233
233
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py,sha256=cTM8IQRZJBr5zG5nhCkTxuw2fCHDZ3wrPgQhRjG88pg,968
234
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py,sha256=0M53iuI0VEDcYk9G4EuAFTc1Iok3xqiWLHYuKaU3dqg,2250
234
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py,sha256=yy-S8nP7KGFUA9e19SaSvX5fnRTH_pjuwAGL-oDfOdM,2251
235
235
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
236
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
237
  devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/dependency_check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -347,8 +347,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
347
347
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
348
348
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
349
349
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=XFap4yOK7ItLWsqbwDhvLd7NpDhs7i-UGJAMD6jjd7w,6687
350
- devsecops_engine_tools-1.34.1.dist-info/METADATA,sha256=1umHvpFWStmlzYIrwLd9sjjU-uBOVtMMqHLv5kXg8Io,11592
351
- devsecops_engine_tools-1.34.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
352
- devsecops_engine_tools-1.34.1.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
353
- devsecops_engine_tools-1.34.1.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
354
- devsecops_engine_tools-1.34.1.dist-info/RECORD,,
350
+ devsecops_engine_tools-1.35.0.dist-info/METADATA,sha256=NOdqyaGyAmy__8RBhDfRx59201ldTDtLfRz1MOOXzdw,11592
351
+ devsecops_engine_tools-1.35.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
352
+ devsecops_engine_tools-1.35.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
353
+ devsecops_engine_tools-1.35.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
354
+ devsecops_engine_tools-1.35.0.dist-info/RECORD,,