|
1982 | 1982 | "additionalProperties": false, |
1983 | 1983 | "properties": { |
1984 | 1984 | "identity": { |
1985 | | - "type": "object", |
1986 | | - "description": "Evidence that substantiates the identity of a component.", |
1987 | | - "required": [ "field" ], |
1988 | | - "additionalProperties": false, |
1989 | | - "properties": { |
1990 | | - "field": { |
1991 | | - "type": "string", |
1992 | | - "enum": [ |
1993 | | - "group", "name", "version", "purl", "cpe", "swid", "hash" |
1994 | | - ], |
1995 | | - "title": "Field", |
1996 | | - "description": "The identity field of the component which the evidence describes." |
1997 | | - }, |
1998 | | - "confidence": { |
1999 | | - "type": "number", |
2000 | | - "minimum": 0, |
2001 | | - "maximum": 1, |
2002 | | - "title": "Confidence", |
2003 | | - "description": "The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence." |
2004 | | - }, |
2005 | | - "methods": { |
| 1985 | + "description": "Evidence that substantiates the identity of a component. The identify may be an object or an array of identity objects. Support for specifying identify as a single object was introduced in CycloneDX v1.5. Arrays were introduced in v1.6. It is RECOMMENDED that all implementations use arrays, even if only one identity object is specified.", |
| 1986 | + "oneOf" : [ |
| 1987 | + { |
2006 | 1988 | "type": "array", |
2007 | | - "title": "Methods", |
2008 | | - "description": "The methods used to extract and/or analyze the evidence.", |
2009 | | - "items": { |
2010 | | - "type": "object", |
2011 | | - "required": [ |
2012 | | - "technique" , |
2013 | | - "confidence" |
2014 | | - ], |
2015 | | - "additionalProperties": false, |
2016 | | - "properties": { |
2017 | | - "technique": { |
2018 | | - "title": "Technique", |
2019 | | - "description": "The technique used in this method of analysis.", |
2020 | | - "type": "string", |
2021 | | - "enum": [ |
2022 | | - "source-code-analysis", |
2023 | | - "binary-analysis", |
2024 | | - "manifest-analysis", |
2025 | | - "ast-fingerprint", |
2026 | | - "hash-comparison", |
2027 | | - "instrumentation", |
2028 | | - "dynamic-analysis", |
2029 | | - "filename", |
2030 | | - "attestation", |
2031 | | - "other" |
2032 | | - ], |
2033 | | - "meta:enum": { |
2034 | | - "source-code-analysis": "Examines the source code without executing it.", |
2035 | | - "binary-analysis": "Examines a compiled binary through reverse engineering, typically via disassembly or bytecode reversal.", |
2036 | | - "manifest-analysis": "Examines a package management system such as those used for building software or installing software.", |
2037 | | - "ast-fingerprint": "Examines the Abstract Syntax Tree (AST) of source code or a compiled binary.", |
2038 | | - "hash-comparison": "Evaluates the cryptographic hash of a component against a set of pre-computed hashes of identified software.", |
2039 | | - "instrumentation": "Examines the call stack of running applications by intercepting and monitoring application logic without the need to modify the application.", |
2040 | | - "dynamic-analysis": "Evaluates a running application.", |
2041 | | - "filename": "Evaluates file name of a component against a set of known file names of identified software.", |
2042 | | - "attestation": "A testimony to the accuracy of the identify of a component made by an individual or entity.", |
2043 | | - "other": "Any other technique." |
2044 | | - } |
2045 | | - }, |
2046 | | - "confidence": { |
2047 | | - "type": "number", |
2048 | | - "minimum": 0, |
2049 | | - "maximum": 1, |
2050 | | - "title": "Confidence", |
2051 | | - "description": "The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence." |
2052 | | - }, |
2053 | | - "value": { |
2054 | | - "type": "string", |
2055 | | - "title": "Value", |
2056 | | - "description": "The value or contents of the evidence." |
2057 | | - } |
2058 | | - } |
2059 | | - } |
| 1989 | + "title": "Array of Identity Objects", |
| 1990 | + "items": { "$ref": "#/definitions/componentIdentityEvidence" } |
2060 | 1991 | }, |
2061 | | - "tools": { |
2062 | | - "type": "array", |
2063 | | - "uniqueItems": true, |
2064 | | - "items": { |
2065 | | - "anyOf": [ |
2066 | | - { |
2067 | | - "title": "Ref", |
2068 | | - "$ref": "#/definitions/refLinkType" |
2069 | | - }, |
2070 | | - { |
2071 | | - "title": "BOM-Link Element", |
2072 | | - "$ref": "#/definitions/bomLinkElementType" |
2073 | | - } |
2074 | | - ] |
2075 | | - }, |
2076 | | - "title": "BOM References", |
2077 | | - "description": "The object in the BOM identified by its bom-ref. This is often a component or service, but may be any object type supporting bom-refs. Tools used for analysis should already be defined in the BOM, either in the metadata/tools, components, or formulation." |
| 1992 | + { |
| 1993 | + "title": "A Single Identity Object", |
| 1994 | + "description": "[Deprecated]", |
| 1995 | + "$ref": "#/definitions/componentIdentityEvidence", |
| 1996 | + "deprecated": true |
2078 | 1997 | } |
2079 | | - } |
| 1998 | + ] |
2080 | 1999 | }, |
2081 | 2000 | "occurrences": { |
2082 | 2001 | "type": "array", |
|
4409 | 4328 | } |
4410 | 4329 | } |
4411 | 4330 | }, |
| 4331 | + "componentIdentityEvidence": { |
| 4332 | + "type": "object", |
| 4333 | + "description": "Evidence that substantiates the identity of a component.", |
| 4334 | + "required": [ "field" ], |
| 4335 | + "additionalProperties": false, |
| 4336 | + "properties": { |
| 4337 | + "field": { |
| 4338 | + "type": "string", |
| 4339 | + "enum": [ |
| 4340 | + "group", "name", "version", "purl", "cpe", "swid", "hash" |
| 4341 | + ], |
| 4342 | + "title": "Field", |
| 4343 | + "description": "The identity field of the component which the evidence describes." |
| 4344 | + }, |
| 4345 | + "confidence": { |
| 4346 | + "type": "number", |
| 4347 | + "minimum": 0, |
| 4348 | + "maximum": 1, |
| 4349 | + "title": "Confidence", |
| 4350 | + "description": "The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence." |
| 4351 | + }, |
| 4352 | + "methods": { |
| 4353 | + "type": "array", |
| 4354 | + "title": "Methods", |
| 4355 | + "description": "The methods used to extract and/or analyze the evidence.", |
| 4356 | + "items": { |
| 4357 | + "type": "object", |
| 4358 | + "required": [ |
| 4359 | + "technique" , |
| 4360 | + "confidence" |
| 4361 | + ], |
| 4362 | + "additionalProperties": false, |
| 4363 | + "properties": { |
| 4364 | + "technique": { |
| 4365 | + "title": "Technique", |
| 4366 | + "description": "The technique used in this method of analysis.", |
| 4367 | + "type": "string", |
| 4368 | + "enum": [ |
| 4369 | + "source-code-analysis", |
| 4370 | + "binary-analysis", |
| 4371 | + "manifest-analysis", |
| 4372 | + "ast-fingerprint", |
| 4373 | + "hash-comparison", |
| 4374 | + "instrumentation", |
| 4375 | + "dynamic-analysis", |
| 4376 | + "filename", |
| 4377 | + "attestation", |
| 4378 | + "other" |
| 4379 | + ] |
| 4380 | + }, |
| 4381 | + "confidence": { |
| 4382 | + "type": "number", |
| 4383 | + "minimum": 0, |
| 4384 | + "maximum": 1, |
| 4385 | + "title": "Confidence", |
| 4386 | + "description": "The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence." |
| 4387 | + }, |
| 4388 | + "value": { |
| 4389 | + "type": "string", |
| 4390 | + "title": "Value", |
| 4391 | + "description": "The value or contents of the evidence." |
| 4392 | + } |
| 4393 | + } |
| 4394 | + } |
| 4395 | + }, |
| 4396 | + "tools": { |
| 4397 | + "type": "array", |
| 4398 | + "uniqueItems": true, |
| 4399 | + "items": { |
| 4400 | + "anyOf": [ |
| 4401 | + { |
| 4402 | + "title": "Ref", |
| 4403 | + "$ref": "#/definitions/refLinkType" |
| 4404 | + }, |
| 4405 | + { |
| 4406 | + "title": "BOM-Link Element", |
| 4407 | + "$ref": "#/definitions/bomLinkElementType" |
| 4408 | + } |
| 4409 | + ] |
| 4410 | + }, |
| 4411 | + "title": "BOM References", |
| 4412 | + "description": "The object in the BOM identified by its bom-ref. This is often a component or service, but may be any object type supporting bom-refs. Tools used for analysis should already be defined in the BOM, either in the metadata/tools, components, or formulation." |
| 4413 | + } |
| 4414 | + } |
| 4415 | + }, |
4412 | 4416 | "standard": { |
4413 | 4417 | "type": "object", |
4414 | 4418 | "title": "Standard", |
|
0 commit comments