Thu, 07 Jul 2022 11:23:56 +0200
Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the interface to CycloneDX. |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import os |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt6.QtCore import QCoreApplication |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt6.QtWidgets import QDialog |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from EricWidgets.EricApplication import ericApp |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from EricWidgets import EricMessageBox |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | from packageurl import PackageURL |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
9141
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
20 | from cyclonedx.model import ( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
21 | ExternalReference, ExternalReferenceType, LicenseChoice, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
22 | OrganizationalContact, OrganizationalEntity, Tool, XsUri |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
23 | ) |
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | from cyclonedx.model.bom import Bom |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | from cyclonedx.model.component import Component |
9119 | 26 | from cyclonedx.model.vulnerability import Vulnerability, VulnerabilitySource |
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | from cyclonedx.output import ( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | OutputFormat, SchemaVersion, get_instance as get_output_instance |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | from cyclonedx.parser import BaseParser |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | from cyclonedx_py.parser.pipenv import PipEnvFileParser |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | from cyclonedx_py.parser.poetry import PoetryFileParser |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | from cyclonedx_py.parser.requirements import RequirementsFileParser |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
9119 | 36 | from PipInterface.PipVulnerabilityChecker import ( |
37 | Package, VulnerabilityCheckError | |
38 | ) | |
39 | ||
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | class CycloneDXEnvironmentParser(BaseParser): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | Class implementing a parser to get package data for a named environment. |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | def __init__(self, venvName): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | Constructor |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | @param venvName name of the virtual environment |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | @type str |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | super().__init__() |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | pip = ericApp().getObject("Pip") |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | packages = pip.getLicenses(venvName) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | for package in packages: |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | comp = Component( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | name=package["Name"], |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | version=package["Version"], |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | author=package["Author"], |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | description=package["Description"], |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | purl=PackageURL( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | type='pypi', |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | name=package["Name"], |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | version=package["Version"] |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | for lic in package["License"].split(";"): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | comp.licenses.add( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | LicenseChoice(license_expression=lic.strip()) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self._components.append(comp) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | def createCycloneDXFile(venvName): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | Function to create a CyccloneDX SBOM file. |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | @param venvName name of the virtual environment |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | @type str |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | @exception RuntimeError raised to indicate illegal creation parameters |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | """ |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | from .CycloneDXConfigDialog import CycloneDXConfigDialog |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | dlg = CycloneDXConfigDialog(venvName) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9119 | 87 | (inputSource, inputFile, fileFormat, schemaVersion, sbomFile, |
9141
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
88 | withVulnerabilities, withDependencies, metadataDict) = dlg.getData() |
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | |
9119 | 90 | # check error conditions first |
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | if inputSource not in ("environment", "pipenv", "poetry", |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | "requirements"): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | raise RuntimeError("Unsupported input source given.") |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | if fileFormat not in ("XML", "JSON"): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | raise RuntimeError("Unsupported SBOM file format given.") |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | if inputSource == "environment": |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | parser = CycloneDXEnvironmentParser(venvName) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | else: |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | # all other parsers need an input file |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | if not os.path.isfile(inputFile): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | EricMessageBox.warning( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | None, |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | QCoreApplication.translate( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | "CycloneDX", "CycloneDX - SBOM Creation"), |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | QCoreApplication.translate( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | "CycloneDX", |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | "<p>The configured input file <b>{0}</b> does not" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | " exist. Aborting...</p>" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | ).format(inputFile) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | return |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | if inputSource == "pipenv": |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | parser = PipEnvFileParser(pipenv_lock_filename=inputFile) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | elif inputSource == "poetry": |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | parser = PoetryFileParser(poetry_lock_filename=inputFile) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | elif inputSource == "requirements": |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | parser = RequirementsFileParser(requirements_file=inputFile) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
9119 | 121 | if withVulnerabilities: |
122 | addCycloneDXVulnerabilities(parser) | |
123 | ||
9122 | 124 | if withDependencies: |
125 | addCycloneDXDependencies(parser, venvName) | |
126 | ||
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | if fileFormat == "XML": |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | outputFormat = OutputFormat.XML |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | elif fileFormat == "JSON": |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | outputFormat = OutputFormat.JSON |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | if parser.has_warnings(): |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | excludedList = ["<li>{0}</li>".format(warning.get_item()) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | for warning in parser.get_warnings()] |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | EricMessageBox.warning( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | None, |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | QCoreApplication.translate( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | "CycloneDX", "CycloneDX - SBOM Creation"), |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | QCoreApplication.translate( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | "CycloneDX", |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | "<p>Some of the dependencies do not have pinned version" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | " numbers.<ul>{0}</ul>The above listed packages will NOT" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | " be included in the generated CycloneDX SBOM file as" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | " version is a mandatory field.</p>" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | ).format("".join(excludedList)) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | bom = Bom.from_parser(parser=parser) |
9141
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
149 | _amendMetaData(bom.metadata, metadataDict) |
9117
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | output = get_output_instance( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | bom=bom, |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | output_format=outputFormat, |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | schema_version=SchemaVersion['V{0}'.format( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | schemaVersion.replace('.', '_') |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | )] |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | ) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | output.output_to_file(filename=sbomFile, allow_overwrite=True) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | EricMessageBox.information( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | None, |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | QCoreApplication.translate( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | "CycloneDX", "CycloneDX - SBOM Creation"), |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | QCoreApplication.translate( |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | "CycloneDX", |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | "<p>The SBOM data was written to file <b>{0}</b>.</p>" |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | ).format(sbomFile) |
c6afba2049cf
CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | ) |
9119 | 168 | |
169 | ||
170 | def addCycloneDXVulnerabilities(parser): | |
171 | """ | |
172 | Function to add vulnerability data to the list of created components. | |
173 | ||
174 | @param parser reference to the parser object containing the list of | |
175 | components | |
176 | @type BaseParser | |
177 | """ | |
178 | components = parser.get_components() | |
179 | ||
180 | packages = [ | |
181 | Package(name=component.name, version=component.version) | |
182 | for component in components | |
183 | ] | |
184 | ||
185 | pip = ericApp().getObject("Pip") | |
186 | error, vulnerabilities = pip.getVulnerabilityChecker().check(packages) | |
187 | ||
188 | if error == VulnerabilityCheckError.OK: | |
189 | for package in vulnerabilities: | |
190 | component = findCyccloneDXComponent(components, package) | |
191 | if component: | |
192 | for vuln in vulnerabilities[package]: | |
193 | component.add_vulnerability(Vulnerability( | |
194 | id=vuln.cve, | |
195 | description=vuln.advisory, | |
196 | recommendation="upgrade required", | |
197 | source=VulnerabilitySource(name="pyup.io") | |
198 | )) | |
199 | ||
200 | ||
9122 | 201 | def addCycloneDXDependencies(parser, venvName): |
202 | """ | |
203 | Function to add dependency data to the list of created components. | |
204 | ||
205 | @param parser reference to the parser object containing the list of | |
206 | components | |
207 | @type BaseParser | |
208 | @param venvName name of the virtual environment | |
209 | @type str | |
210 | """ | |
211 | components = parser.get_components() | |
212 | ||
213 | pip = ericApp().getObject("Pip") | |
214 | dependencies = pip.getDependencyTree(venvName) | |
215 | for dependency in dependencies: | |
216 | _addCycloneDXDependency(dependency, components) | |
217 | ||
218 | ||
219 | def _addCycloneDXDependency(dependency, components): | |
220 | """ | |
221 | Function to add a dependency to the given list of components. | |
222 | ||
223 | @param dependency dependency to be added | |
224 | @type dict | |
225 | @param components list of components | |
226 | @type list of Component | |
227 | """ | |
228 | component = findCyccloneDXComponent(components, dependency["package_name"]) | |
229 | if component is not None: | |
230 | bomRefs = component.dependencies | |
231 | for dep in dependency["dependencies"]: | |
232 | depComponent = findCyccloneDXComponent( | |
233 | components, dep["package_name"]) | |
234 | if depComponent is not None: | |
235 | bomRefs.add(depComponent.bom_ref) | |
236 | # recursively add sub-dependencies | |
237 | _addCycloneDXDependency(dep, components) | |
238 | component.dependencies = bomRefs | |
239 | ||
240 | ||
9119 | 241 | def findCyccloneDXComponent(components, name): |
242 | """ | |
243 | Function to find a component in a given list of components. | |
244 | ||
245 | @param components list of components to scan | |
246 | @type list of Component | |
247 | @param name name of the component to search for | |
248 | @type str | |
249 | @return reference to the found component or None | |
250 | @rtype Component or None | |
251 | """ | |
252 | for component in components: | |
253 | if component.name == name: | |
254 | return component | |
255 | ||
256 | return None | |
9141
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
257 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
258 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
259 | def _amendMetaData(bomMetaData, metadataDict): |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
260 | """ |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
261 | Function to amend the SBOM meta data according the given data. |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
262 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
263 | The modifications done are: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
264 | <ul> |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
265 | <li>add eric7 to the tools</li> |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
266 | </ul> |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
267 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
268 | @param bomMetaData reference to the SBOM meta data object |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
269 | @type BomMetaData |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
270 | @param metadataDict dictionary containing additional meta data |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
271 | @type dict |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
272 | @return reference to the modified SBOM meta data object |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
273 | @rtype BomMetaData |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
274 | """ |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
275 | # add a Tool entry for eric7 |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
276 | try: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
277 | from importlib.metadata import version as meta_version |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
278 | __EricToolVersion = str(meta_version('eric-ide')) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
279 | except Exception: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
280 | from UI.Info import Version |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
281 | __EricToolVersion = Version |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
282 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
283 | EricTool = Tool(vendor='python-projects.org', |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
284 | name='eric-ide', |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
285 | version=__EricToolVersion) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
286 | EricTool.external_references.update([ |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
287 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
288 | reference_type=ExternalReferenceType.DISTRIBUTION, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
289 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
290 | "https://pypi.org/project/eric-ide/" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
291 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
292 | ), |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
293 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
294 | reference_type=ExternalReferenceType.DOCUMENTATION, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
295 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
296 | "https://pypi.org/project/eric-ide/" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
297 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
298 | ), |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
299 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
300 | reference_type=ExternalReferenceType.ISSUE_TRACKER, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
301 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
302 | "https://tracker.die-offenbachs.homelinux.org" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
303 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
304 | ), |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
305 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
306 | reference_type=ExternalReferenceType.LICENSE, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
307 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
308 | "https://hg.die-offenbachs.homelinux.org/eric/file/tip/docs/" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
309 | "LICENSE.GPL3" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
310 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
311 | ), |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
312 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
313 | reference_type=ExternalReferenceType.RELEASE_NOTES, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
314 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
315 | "https://hg.die-offenbachs.homelinux.org/eric/file/tip/docs/" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
316 | "changelog" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
317 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
318 | ), |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
319 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
320 | reference_type=ExternalReferenceType.VCS, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
321 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
322 | "https://hg.die-offenbachs.homelinux.org/eric" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
323 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
324 | ), |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
325 | ExternalReference( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
326 | reference_type=ExternalReferenceType.WEBSITE, |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
327 | url=XsUri( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
328 | "https://eric-ide.python-projects.org" |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
329 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
330 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
331 | ]) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
332 | bomMetaData.tools.add(EricTool) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
333 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
334 | # add the meta data info entered by the user (if any) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
335 | if metadataDict is not None: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
336 | if metadataDict["AuthorName"]: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
337 | bomMetaData.authors = [OrganizationalContact( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
338 | name=metadataDict["AuthorName"], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
339 | email=metadataDict["AuthorEmail"] |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
340 | )] |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
341 | if metadataDict["Manufacturer"]: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
342 | bomMetaData.manufacture = OrganizationalEntity( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
343 | name=metadataDict["Manufacturer"] |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
344 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
345 | if metadataDict["Supplier"]: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
346 | bomMetaData.supplier = OrganizationalEntity( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
347 | name=metadataDict["Supplier"]) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
348 | if metadataDict["License"]: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
349 | bomMetaData.licenses = [LicenseChoice( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
350 | license_expression=metadataDict["License"] |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
351 | )] |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
352 | if metadataDict["Name"]: |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
353 | bomMetaData.component = Component( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
354 | name=metadataDict["Name"], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
355 | component_type=metadataDict["Type"], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
356 | version=metadataDict["Version"], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
357 | description=metadataDict["Description"], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
358 | author=metadataDict["AuthorName"], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
359 | licenses=[LicenseChoice( |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
360 | license_expression=metadataDict["License"] |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
361 | )], |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
362 | ) |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
363 | |
7085ece52151
Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9122
diff
changeset
|
364 | return bomMetaData |