Skip to content

Commit b3d4564

Browse files
authored
Remove internet dependency from CycloneDX validate_document (#634)
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 679d8b6 commit b3d4564

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

scanpipe/cyclonedx/__init__.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@
3939
"CycloneDX/specification/master/schema/bom-1.4.schema.json"
4040
)
4141

42+
SPDX_JSON_SCHEMA_LOCATION = "spdx.schema.json"
43+
SPDX_JSON_SCHEMA_PATH = pathlib.Path(__file__).parent / SPDX_JSON_SCHEMA_LOCATION
44+
45+
JSF_JSON_SCHEMA_LOCATION = "jsf-0.82.schema.json"
46+
JSF_JSON_SCHEMA_PATH = pathlib.Path(__file__).parent / JSF_JSON_SCHEMA_LOCATION
47+
4248

4349
def get_bom(cyclonedx_document):
4450
"""
@@ -156,9 +162,14 @@ def validate_document(document, schema=CYCLONEDX_JSON_SCHEMA_PATH):
156162
if isinstance(schema, str):
157163
schema = json.loads(schema)
158164

159-
resolver = jsonschema.RefResolver(
160-
base_uri="file://" + str(pathlib.Path(__file__).parent), referrer=schema
161-
)
165+
spdx_schema = SPDX_JSON_SCHEMA_PATH.read_text()
166+
jsf_schema = JSF_JSON_SCHEMA_PATH.read_text()
167+
168+
store = {
169+
"http://cyclonedx.org/schema/spdx.schema.json": json.loads(spdx_schema),
170+
"http://cyclonedx.org/schema/jsf-0.82.schema.json": json.loads(jsf_schema),
171+
}
172+
resolver = jsonschema.RefResolver.from_schema(schema, store=store)
162173

163174
validator = jsonschema.Draft7Validator(schema=schema, resolver=resolver)
164175

0 commit comments

Comments
 (0)