Skip to content

Commit

Permalink
Updated schema locations and files
Browse files Browse the repository at this point in the history
  • Loading branch information
sei-vsarvepalli committed Jul 11, 2024
1 parent e405bd8 commit c827d5e
Show file tree
Hide file tree
Showing 7 changed files with 160 additions and 3 deletions.
1 change: 1 addition & 0 deletions data/schema/current/Decision_Point.schema.json
1 change: 1 addition & 0 deletions data/schema/current/Decision_Point_Group.schema.json
79 changes: 79 additions & 0 deletions data/schema/v1/Decision_Point-1-0-1.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Decision Point schema definition",
"$id": "https://certcc.github.io/data/schema/v1/Decision_Point.schema-1-0-1.json",
"description": "Decision points are the basic building blocks of SSVC decision functions. Individual decision points describe a single aspect of the input to a decision function.",
"definitions": {
"schemaVersion": {
"description": "Schema version used to represent this Decision Point",
"type": "string",
"enum": ["1-0-1"]
},
"decision_point_value": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"description": "A key (a short, unique string) that can be used to identify the Decision Point/Decision Point value in a shorthand way"
},
"name": {
"type": "string",
"description": "A short label that captures the description of the Decision Point or the Group of Decision Points."
},
"description": {
"type": "string",
"description": "Description of the Decision Point Value"
}
},
"required" : [
"key",
"name",
"description"
]
},
"decision_point": {
"type": "object",
"additionalProperties": false,
"properties": {
"namespace": {
"type": "string",
"description": "Namespace (a short, unique string): For example, \"ssvc\" or \"cvss\" to indicate the source of the decision point"
},
"version": {
"type": "string",
"description": "Version (a semantic version string) that identifies this object"
},
"key": {
"type": "string",
"description": "A key (a short, unique string) that can be used to identify the Decision Point/Decision Point value in a shorthand way"
},
"name": {
"type": "string",
"description": "A short label that captures the description of the Decision Point or the Group of Decision Points."
},
"description": {
"type": "string",
"description": "q Description of the Decision Point or the Group of Decision Points as defined."
},
"values": {
"description": "Decision Point Values are valid results from a Decision Point",
"uniqueItems": true,
"type": "array",
"items": {
"$ref": "#/definitions/decision_point_value"
}
}
},
"required": [
"namespace",
"version",
"key",
"name",
"description",
"values"
]
}
},
"$ref": "#/definitions/decision_point"
}
44 changes: 44 additions & 0 deletions data/schema/v1/Decision_Point_Group-1-0-1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Decision Points Group schema definition",
"$id": "https://certcc.github.io/SSVC/data/schema/v1/Decision_Point_Group-1-0-1.schema.json",
"definitions": {
"schemaVersion": {
"description": "Schema version used to represent Decision Point Group",
"type": "string",
"enum": ["1-0-1"]
},
"decision_point_group": {
"type": "object",
"additionalProperties": false,
"properties": {
"version": {
"type": "string",
"description": "Version (a semantic version string) that identifies this object"
},
"name": {
"type": "string",
"description": "A short label that captures the description of the Decision Point or the Group of Decision Points."
},
"description": {
"type": "string",
"description": "Description of the Decision Point or the Group of Decision Points."
},
"decision_points": {
"type": "array",
"items": {
"$ref": "https://certcc.github.io/SSVC/data/schema/Decision_Point.schema.json"
}
}
},
"required": [
"version",
"name",
"description",
"decision_points"
]
}
},
"$ref": "#/definitions/decision_point_group"

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"id": "CVE-1969-0000",
"timestamp": "2021-09-29T15:29:44Z",
"schemaVersion": "1-0-1",
"selections": [
{
"namespace": "ssvc",
"name": "Exploitation",
"version": "1.1.0",
"values": [
"Active"
]
},
{
"namespace": "ssvc",
"name": "Automatable",
"version": "2.0.0",
"values": [
"Yes"
]
},
{
"namespace": "ssvc",
"name": "Technical Impact",
"version": "1.0.0",
"values": [
"Total"
]
}
]
}
6 changes: 3 additions & 3 deletions src/test/test_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def test_confirm_registered_decision_points(self):

def test_decision_point_validation(self):
# path relative to top level of repo
schema_file = find_schema("data/schema/Decision_Point.schema.json")
schema_file = find_schema("data/schema/current/Decision_Point.schema.json")
schema = json.load(open(schema_file))

decision_points = list(REGISTERED_DECISION_POINTS)
Expand All @@ -82,11 +82,11 @@ def test_decision_point_validation(self):

self.assertIsNone(exp, f"Validation failed for {dp.name} {dp.version}")
self.logger.debug(
f"Validation passed for ({dp.namespace}) {dp.name} v{dp.version}"
f"Validation passed for Decision Point ({dp.namespace}) {dp.name} v{dp.version}"
)

def test_decision_point_group_validation(self):
schema_file = find_schema("data/schema/Decision_Point_Group.schema.json")
schema_file = find_schema("data/schema/current/Decision_Point_Group.schema.json")
schema = json.load(open(schema_file))

for dpg in self.dpgs:
Expand Down

0 comments on commit c827d5e

Please sign in to comment.