-
-
Notifications
You must be signed in to change notification settings - Fork 87
feat(cryptography): add cryptographic agility plane to CBOM #947
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 2.0-dev
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -521,6 +521,11 @@ | |
| "title": "Destruction Date", | ||
| "description": "The date and time (timestamp) when the certificate was destroyed." | ||
| }, | ||
| "renewal": { | ||
| "$ref": "#/$defs/lifecycleControl", | ||
| "title": "Certificate Renewal", | ||
| "description": "How this certificate is renewed or re-enrolled." | ||
| }, | ||
| "certificateExtensions": { | ||
| "type": "array", | ||
| "title": "Certificate Extensions", | ||
|
|
@@ -673,6 +678,11 @@ | |
| "destroyed" | ||
| ] | ||
| }, | ||
| "rotation": { | ||
| "$ref": "#/$defs/lifecycleControl", | ||
| "title": "Key Rotation", | ||
| "description": "How this cryptographic material is rotated under the same algorithm." | ||
| }, | ||
| "creationDate": { | ||
| "type": "string", | ||
| "format": "date-time", | ||
|
|
@@ -1088,6 +1098,51 @@ | |
| "unknown": "The cryptographic function is not known." | ||
| } | ||
| }, | ||
| "lifecycleControl": { | ||
| "type": "object", | ||
| "title": "Lifecycle Control", | ||
| "description": "How a cryptographic lifecycle operation, such as key rotation or certificate renewal, is performed. The `automation` property captures the degree of automation and `mechanism` captures the concrete method, for example automatic renewal via the ACME protocol, automatic rotation managed by a KMS, or a manual M-of-N key ceremony.", | ||
| "additionalProperties": false, | ||
| "properties": { | ||
| "automation": { | ||
| "type": "string", | ||
| "title": "Automation", | ||
| "description": "The degree of automation with which the operation is performed, ordered from least to most agile.", | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like the shared lifecycleControl shape. Would it be useful to clarify that automation captures the degree of automation, while mechanism carries the concrete renewal or rotation method? For example, is the intended modeling pattern something like:
I think a short note like this would keep the enum compact while still giving implementers guidance for the additional cases discussed in #892, such as provider-managed rotation, protocol-driven renewal, quorum ceremonies, and ephemeral material.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added some notes to the description accordingly.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks, great. It seems a small wording nit left in the meta:enum text for other/unknown still refers to “mechanism”. Since this enum describes automation, maybe “Another automation mode applies” / “The automation mode is not known” would be slightly clearer. |
||
| "enum": [ | ||
| "not-supported", | ||
| "manual", | ||
| "on-demand", | ||
| "automatic", | ||
| "other", | ||
| "unknown" | ||
| ], | ||
| "meta:enum": { | ||
| "not-supported": "The operation is not supported.", | ||
| "manual": "The operation is initiated and executed manually.", | ||
| "on-demand": "The operation can be triggered on demand, for example through an API call.", | ||
| "automatic": "The operation is performed automatically based on policy or schedule.", | ||
| "other": "Another mechanism applies.", | ||
| "unknown": "The mechanism is not known." | ||
| } | ||
| }, | ||
| "mechanism": { | ||
| "type": "string", | ||
| "title": "Lifecycle Mechanism", | ||
| "description": "The concrete protocol, system, interface, or process used to perform the operation, such as the ACME (RFC 8555), EST (RFC 7030), SCEP (RFC 8894), CMP (RFC 4210), or CMC (RFC 5272) certificate protocols, KMIP, PKCS#11, and cloud key-management services for key rotation, or a manual M-of-N key ceremony.", | ||
| "examples": [ | ||
| "ACME", | ||
| "EST", | ||
| "SCEP", | ||
| "CMP", | ||
| "CMC", | ||
| "KMIP", | ||
| "PKCS#11", | ||
| "HashiCorp Vault Transit", | ||
| "M-of-N key ceremony" | ||
| ] | ||
| } | ||
| } | ||
| }, | ||
| "relatedCryptographicAssets": { | ||
| "type": "array", | ||
| "title": "Related Cryptographic Assets", | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should ideally be an array
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I changed it to an array in 48a218c