Skip to content

[1.7] - Updates from CBOM working group #657

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

Open
wants to merge 40 commits into
base: 1.7-dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
76745f2
Initial checkin of algorithm family support.
stevespringett Mar 22, 2025
5b8fff6
Update cryptography-defs.json
bhess Apr 10, 2025
391aec5
Merge branch '1.7-dev' into 1.7-dev-cryptography
jkowalleck Apr 14, 2025
7c731a5
Merge branch '1.7-dev-cryptography' into patch-1
jkowalleck Apr 14, 2025
643fca9
Add more algorithms, used by SSLv3, TLS1.0-1.3
bhess Apr 17, 2025
761903f
Update cryptography-defs.json (#622)
stevespringett Apr 17, 2025
9f243b0
Revise variants structure
bhess May 9, 2025
d376ff5
- Extends cryptography-defs list by Algorithms from PKCS11
bhess May 14, 2025
b05ba4d
Add missing closing bracket
bhess May 14, 2025
4e9ef89
Extends cryptography-defs.json (#644)
stevespringett May 14, 2025
cb07283
add python script to generate algorithm families
n1ckl0sk0rtge May 22, 2025
fb68b25
Review algorithm list, the following rules for the patterns apply:
bhess Jun 5, 2025
193c4d8
fix LMS pattern
bhess Jun 5, 2025
c8734da
fix json syntax error
n1ckl0sk0rtge Jun 12, 2025
f504252
update python script to generate algorithm falimiles in the cryptogra…
n1ckl0sk0rtge Jun 12, 2025
599be38
refine a script, add $comment to schema for the date of the last update
n1ckl0sk0rtge Jun 12, 2025
4cc3d6f
add algorithm family to cyclondx schema
n1ckl0sk0rtge Jun 12, 2025
2481f1a
add new protocol typs
n1ckl0sk0rtge Jun 12, 2025
ab88132
Add python script to generate algorithm families (#645)
stevespringett Jun 19, 2025
167deb9
Review algorithm list, apply rules for patterns (#646)
stevespringett Jun 19, 2025
b1a254b
Added EC and moved algorithmFamilies to definitions.
stevespringett Jun 30, 2025
486f867
Attempting to resolve unit tests
stevespringett Jul 1, 2025
d037d71
Removing unnecessary additionalItems from schema
stevespringett Jul 1, 2025
9eeaa26
changed iri to iri-reference
stevespringett Jul 1, 2025
8349470
Moved generator. Added missing BLS
stevespringett Jul 1, 2025
35ba915
add lost changes to the spec
n1ckl0sk0rtge Jul 1, 2025
ec5d576
add lost changes to the spec
n1ckl0sk0rtge Jul 1, 2025
d5bcdb1
Add missing changes (#658)
stevespringett Jul 1, 2025
6f93579
Added missing doc
Jul 3, 2025
5ed95f6
- Schema fix: Avoid name collision in 'oneOf' of certificateExtensions
bhess Jul 17, 2025
22f8d2d
Add certificate cases
bhess Jul 17, 2025
6e24424
fix custom state schema
bhess Jul 17, 2025
94141ea
Schema Fixes
bhess Jul 17, 2025
4aa6f1a
Adding 3GPP algorithms and protocols, thanks to Ian Deakin
bhess Jul 18, 2025
e4de276
Add eap-aka-prime
bhess Jul 24, 2025
b213b8d
CBOM 1.7: Update test cases & a few schema fixes/extensions (#661)
stevespringett Jul 24, 2025
cb133aa
Porting changes from JSON to XML
stevespringett Jul 25, 2025
bc0b8fc
Clarified deprecations
stevespringett Jul 25, 2025
e9a9d93
Porting JSON changes to XML
stevespringett Jul 25, 2025
839896c
Porting JSON changes to protobuf
stevespringett Jul 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
205 changes: 196 additions & 9 deletions schema/bom-1.7.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2078,6 +2078,8 @@
CRYPTO_PRIMITIVE_AE = 14;
// A combiner aggregates many candidates for a cryptographic primitive and generates a new candidate for the same primitive.
CRYPTO_PRIMITIVE_COMBINER = 15;
// Key-wrap is a cryptographic technique used to securely encrypt and protect cryptographic keys using algorithms like AES.
CRYPTO_PRIMITIVE_KEY_WRAP = 16;
}

// Execution Environment
Expand Down Expand Up @@ -2209,6 +2211,41 @@
optional int32 nistQuantumSecurityLevel = 11;
} // end of AlgorithmProperties

// Certificate State
message CertificateState {
// Pre-defined certificate states
enum PredefinedState {
// ProtoBuff's default value
PREDEFINED_STATE_UNSPECIFIED = 0;
// The certificate has been issued by the issuing certificate authority (CA) but has not been authorized for use.
PREDEFINED_STATE_PRE_ACTIVATION = 1;
// The certificate may be used to cryptographically protect information, cryptographically process previously protected information, or both.
PREDEFINED_STATE_ACTIVE = 2;
// The use of a certificate may be suspended for several possible reasons.
PREDEFINED_STATE_SUSPENDED = 3;
// Certificates in the deactivated state shall not be used to apply cryptographic protection but, in some cases, may be used to process cryptographically protected information.
PREDEFINED_STATE_DEACTIVATED = 4;
// A revoked certificate is a digital certificate that has been invalidated by the issuing certificate authority (CA) before its scheduled expiration date.
PREDEFINED_STATE_REVOKED = 5;
// The certificate has been destroyed.
PREDEFINED_STATE_DESTROYED = 6;
}

// A reason for the certificate being in this state.
optional string reason = 1;

// The state can be either a predefined state or a custom state
oneof state {
// A pre-defined state in the certificate lifecycle.
PredefinedState predefined_state = 2;
// The name of the certificate lifecycle state for custom states.
string name = 3;
}

// The description of the certificate lifecycle state (only used with custom states).
optional string description = 4;
}

// Certificate Properties
message CertificateProperties {
// The subject name for the certificate
Expand All @@ -2219,16 +2256,100 @@
optional google.protobuf.Timestamp notValidBefore = 3;
// The date and time according to ISO-8601 standard from which the certificate is not valid anymore
optional google.protobuf.Timestamp notValidAfter = 4;
// The bom-ref to signature algorithm used by the certificate
// [DEPRECATED] Use relatedCryptographicAssets instead. The bom-ref to signature algorithm used by the certificate
optional string signatureAlgorithmRef = 5;
// The bom-ref to the public key of the subject
// [DEPRECATED] Use relatedCryptographicAssets instead. The bom-ref to the public key of the subject
optional string subjectPublicKeyRef = 6;
// The format of the certificate. Examples include X.509, PEM, DER, and CVC.
optional string certificateFormat = 7;
// The file extension of the certificate. Examples include crt, pem, cer, der, and p12.
// [DEPRECATED] Use certificateFileExtension instead. The file extension of the certificate. Examples include crt, pem, cer, der, and p12.
optional string certificateExtension = 8;
// The serial number is a unique identifier for the certificate issued by a CA.
optional string serialNumber = 9;
// The file extension of the certificate. Examples include crt, pem, cer, der, and p12.
optional string certificateFileExtension = 10;
// The fingerprint is a cryptographic hash of the certificate excluding it's signature.
optional Hash fingerprint = 11;
// The certificate lifecycle is a comprehensive process that manages digital certificates from their initial creation to eventual expiration or revocation. It typically involves several stages.
repeated CertificateState certificateState = 12;
// The date and time (timestamp) when the certificate was created or pre-activated.
optional google.protobuf.Timestamp creationDate = 13;
// The date and time (timestamp) when the certificate was activated.
optional google.protobuf.Timestamp activationDate = 14;
// The date and time (timestamp) when the related certificate was deactivated.
optional google.protobuf.Timestamp deactivationDate = 15;
// The date and time (timestamp) when the certificate was revoked.
optional google.protobuf.Timestamp revocationDate = 16;
// The date and time (timestamp) when the certificate was destroyed.
optional google.protobuf.Timestamp destructionDate = 17;
// A certificate extension is an optional field that provides additional information about the certificate or its use. Extensions are used to convey additional information beyond the standard fields.
optional CertificateExtensions certificateExtensions = 18;
// A list of cryptographic assets related to this component.
optional RelatedCryptographicAssets relatedCryptographicAssets = 19;
} // end of CertificateProperties

// Certificate Extensions
message CertificateExtensions {
// Common extension names
enum CommonExtensionName {
// ProtoBuff's default value
COMMON_EXTENSION_NAME_UNSPECIFIED = 0;
COMMON_EXTENSION_NAME_BASIC_CONSTRAINTS = 1;
COMMON_EXTENSION_NAME_KEY_USAGE = 2;
COMMON_EXTENSION_NAME_EXTENDED_KEY_USAGE = 3;
COMMON_EXTENSION_NAME_SUBJECT_ALTERNATIVE_NAME = 4;
COMMON_EXTENSION_NAME_AUTHORITY_KEY_IDENTIFIER = 5;
COMMON_EXTENSION_NAME_SUBJECT_KEY_IDENTIFIER = 6;
COMMON_EXTENSION_NAME_AUTHORITY_INFORMATION_ACCESS = 7;
COMMON_EXTENSION_NAME_CERTIFICATE_POLICIES = 8;
COMMON_EXTENSION_NAME_CRL_DISTRIBUTION_POINTS = 9;
COMMON_EXTENSION_NAME_SIGNED_CERTIFICATE_TIMESTAMP = 10;
}

// Extension represents either a common extension or a custom extension
message Extension {
oneof extension_type {
// Common extension with predefined name
CommonExtension commonExtension = 1;
// Custom extension with user-defined name
CustomExtension customExtension = 2;
}
}

// Common extension with predefined name
message CommonExtension {
// The name of the extension
CommonExtensionName name = 1;
// The value of the certificate extension
string value = 2;
}

// Custom extension with user-defined name
message CustomExtension {
// The name for the custom certificate extension
string name = 1;
// The description of the custom certificate extension
optional string value = 2;
}

// List of certificate extensions
repeated Extension extensions = 1;
}

// Related Cryptographic Assets
message RelatedCryptographicAssets {
// Related Cryptographic Asset
message RelatedCryptographicAsset {
// The type of the related cryptographic asset
string type = 1;
// The reference to the related cryptographic asset
string ref = 2;
}

// List of related cryptographic assets
repeated RelatedCryptographicAsset assets = 1;
}

// Related Cryptographic Material Properties
message RelatedCryptoMaterialProperties {

Expand Down Expand Up @@ -2285,7 +2406,7 @@
optional string id = 2;
// The key state as defined by NIST SP 800-57.
optional CryptoRelatedState state = 3;
// The bom-ref to the algorithm used to generate the related cryptographic material.
// [DEPRECATED] Use relatedCryptographicAssets instead. The bom-ref to the algorithm used to generate the related cryptographic material.
optional string algorithmRef = 4;
// The date and time (timestamp) when the related cryptographic material was created.
optional google.protobuf.Timestamp creationDate = 5;
Expand All @@ -2303,6 +2424,10 @@
optional string format = 11;
// The mechanism by which the cryptographic asset is secured.
optional CryptoRelatedSecuredBy securedBy = 12;
// The fingerprint is a cryptographic hash of the asset.
optional Hash fingerprint = 13;
// A list of cryptographic assets related to this component.
optional RelatedCryptographicAssets relatedCryptographicAssets = 14;
} // end of RelatedCryptoMaterialProperties

// Protocol Properties
Expand All @@ -2326,6 +2451,20 @@
CRYPTO_PROTOCOL_TYPE_SSTP = 7;
// Wi-Fi Protected Access
CRYPTO_PROTOCOL_TYPE_WPA = 8;
// Datagram Transport Layer Security
CRYPTO_PROTOCOL_TYPE_DTLS = 9;
// Quick UDP Internet Connections
CRYPTO_PROTOCOL_TYPE_QUIC = 10;
// Extensible Authentication Protocol variant
CRYPTO_PROTOCOL_TYPE_EAP_AKA = 11;
// Enhanced version of EAP-AKA
CRYPTO_PROTOCOL_TYPE_EAP_AKA_PRIME = 12;
// Protection of Inter-Network Signaling
CRYPTO_PROTOCOL_TYPE_PRINS = 13;
// Authentication and Key Agreement for 5G
CRYPTO_PROTOCOL_TYPE_5G_AKA = 14;
// JSON Object Signing and Encryption
CRYPTO_PROTOCOL_TYPE_JOSE = 15;
}

// Object representing a cipher suite
Expand All @@ -2336,22 +2475,68 @@
repeated string algorithms = 2;
// A list of common identifiers for the cipher suite. For example: 0xC0 and 0x9E
repeated string identifiers = 3;
// A list of TLS named groups (formerly known as curves) for this cipher suite. These groups define the parameters for key exchange algorithms like ECDHE.
repeated string tlsGroups = 4;
// A list of signature schemes supported for cipher suite. These schemes specify the algorithms used for digital signatures in TLS handshakes and certificate verification.
repeated string tlsSignatureSchemes = 5;
}

// Encryption Algorithm (ENCR)
message IkeV2Enc {
// A name for the encryption method
optional string name = 1;
// The key length of the encryption algorithm
optional int32 keyLength = 2;
// The bom-ref to algorithm cryptographic asset
optional string algorithm = 3;
}

// Pseudorandom Function (PRF)
message IkeV2Prf {
// A name for the pseudorandom function
optional string name = 1;
// The bom-ref to algorithm cryptographic asset
optional string algorithm = 2;
}

// Integrity Algorithm (INTEG)
message IkeV2Integ {
// A name for the integrity algorithm
optional string name = 1;
// The bom-ref to algorithm cryptographic asset
optional string algorithm = 2;
}

// Key Exchange Method (KE)
message IkeV2Ke {
// A group identifier for the key exchange algorithm
optional int32 group = 1;
// The bom-ref to algorithm cryptographic asset
optional string algorithm = 2;
}

// IKEv2 Authentication method
message IkeV2Auth {
// A name for the authentication method
optional string name = 1;
// The bom-ref to algorithm cryptographic asset
optional string algorithm = 2;
}

// IKEv2 Transform Types
message Ikev2TransformTypes {
// Transform Type 1: encryption algorithms
repeated string encr = 1;
repeated IkeV2Enc encr = 1;
// Transform Type 2: pseudorandom functions
repeated string prf = 2;
repeated IkeV2Prf prf = 2;
// Transform Type 3: integrity algorithms
repeated string integ = 3;
repeated IkeV2Integ integ = 3;
// Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)
repeated string ke = 4;
repeated IkeV2Ke ke = 4;
// Specifies if an Extended Sequence Number (ESN) is used.
optional bool esn = 5;
// IKEv2 Authentication method
repeated string auth = 6;
repeated IkeV2Auth auth = 6;
}

// The concrete protocol type.
Expand All @@ -2364,6 +2549,8 @@
optional Ikev2TransformTypes ikev2TransformTypes = 4;
// The bom-ref(s) to protocol-related cryptographic assets
repeated string cryptoRef = 5;
// A list of cryptographic assets related to this component.
optional RelatedCryptographicAssets relatedCryptographicAssets = 6;
} // end of ProtocolProperties

// Cryptographic assets occur in several forms. Algorithms and protocols are most commonly implemented in specialized cryptographic libraries. They may, however, also be 'hardcoded' in software components. Certificates and related cryptographic material like keys, tokens, secrets or passwords are other cryptographic assets to be modelled.
Expand Down
Loading
Loading