Skip to content

CBOM 1.7: protocolProperties JSON schema and XSD diverge (relatedCryptographicAssets, cryptoRefArray, tlsGroups, tlsSignatureSchemes) #1030

Closed

Description

@stondo

Summary

In CycloneDX 1.7, the JSON schema and the XSD disagree on the content model of
cryptoProperties.protocolProperties. A CBOM that is valid against the official JSON
schema cannot be serialized to XML that validates against the official XSD, and vice
versa.

Details

JSON schema (bom-1.7.schema.json, definitions.cryptoProperties.properties.protocolProperties.properties)
lists:

type, version, cipherSuites, cryptoRefArray, ikev2TransformTypes, relatedCryptographicAssets

XSD (bom-1.7.xsd, the protocolProperties element's complexType sequence) lists:

type, version, cipherSuites, algorithms, identifiers, tlsGroups,
tlsSignatureSchemes, ikev2TransformTypes, cryptoRef

Concretely:

  1. relatedCryptographicAssets is JSON-only. It is present in the JSON schema for
    protocolProperties but has no counterpart element in the XSD. The sibling
    properties certificateProperties and relatedCryptoMaterialProperties do have
    relatedCryptographicAssets in both serializations (XSD elements at the
    certificateProperties and relatedCryptoMaterialProperties complexTypes), which
    suggests the omission under protocolProperties is an oversight rather than a
    deliberate serialization difference.
    -- see [Defect]: 1.7 XML schema omits protocol relatedCryptographicAssets #1018
  2. tlsGroups and tlsSignatureSchemes are XSD-only. They have no JSON-schema
    counterpart under protocolProperties (the JSON schema has no TLS parameter
    object at all beyond cipherSuites).
  3. cryptoRefArray (JSON) vs cryptoRef (XSD) and algorithms/identifiers
    (XSD-only)
    — these may be intentional JSON↔XML representation differences, but
    it would be useful to confirm and document the intended mapping.

Impact

Any JSON→XML (or XML→JSON) conversion of a 1.7 CBOM that uses
protocolProperties.relatedCryptographicAssets (or the XSD-only TLS fields) cannot
produce output that validates against the other serialization's official schema.
Tooling must either emit schema-invalid documents or silently drop conformant data.

Environment

  • Schemas fetched from the CycloneDX/specification repository (master, schema/
    directory), also published at https://cyclonedx.org/schema/bom-1.7.schema.json
    and bom-1.7.xsd.
  • Observed while implementing bidirectional JSON↔XML conversion for CycloneDX 1.7
    in an SBOM conversion tool.

Suggested fix

Align the two serializations for protocolProperties: add relatedCryptographicAssets
to the XSD (mirroring certificateProperties/relatedCryptoMaterialProperties), and
either add tlsGroups/tlsSignatureSchemes to the JSON schema or remove them from
the XSD. A documented JSON↔XML field mapping for cryptoRefArray/cryptoRef and
algorithms/identifiers would also help implementers.

Activity

  1. added this to the 1.7.2 milestone on Aug 26, 2026
  2. jkowalleck commented on Aug 26, 2026

    @jkowalleck
    Member

    this is intended to get fixed with the streamline/sync release 1.7.2
    see https://github.com/CycloneDX/specification/milestone/16

  3. jkowalleck commented on Sep 16, 2026

    @jkowalleck
    Member

    confirmed from the report: relatedCryptographicAssets was missing.

  4. jkowalleck commented on Sep 16, 2026

    @jkowalleck
    Member

    XSD (bom-1.7.xsd, the protocolProperties element's complexType sequence) lists:

    type, version, cipherSuites, algorithms, identifiers, tlsGroups,
    tlsSignatureSchemes, ikev2TransformTypes, cryptoRef
    
    • [...] algorithms/identifiers (XSD-only)

    There is no algorithms, identifiers in XML's /cryptoPropertiesType/protocolProperties.
    There is only type, version, cipherSuites, ikev2TransformTypes, cryptoRef.

    See cipherSuite in https://cyclonedx.org/docs/1.7/xml/#type_cryptoPropertiesType
    You probably mean XML /cryptoPropertiesType/protocolProperties/cipherSuite's sequence which lists
    algorithms, identifiers, name, tlsGroups, tlsSignatureSchemes.

    See https://cyclonedx.org/docs/1.7/json/#components_items_cryptoProperties_protocolProperties_cipherSuites
    In JSON schema, we find these under #/definitions/cipherSuite's properties:
    name, algorithms, identifiers, tlsGroups, tlsSignatureSchemes

    • tlsGroups and tlsSignatureSchemes are XSD-only. They have no JSON-schema
      counterpart under protocolProperties (the JSON schema has no TLS parameter
      object at all beyond cipherSuites).

    @stondo could you double-check your report?
    Did you check the right positions? Do XML and JSON really differ here?


    • cryptoRefArray (JSON) vs cryptoRef (XSD) [...]
      — these may be intentional JSON↔XML representation differences, but
      it would be useful to confirm and document the intended mapping.

    confirmed: not an issue - intentional representation of the same thing.

    in XML

    • the cryptoRef has maxOccurs="unbounded" - this means it may occur multiple times, just as an item in an array - which is represented in JSON schema per cryptoRefArray.
  5. jkowalleck commented on Sep 17, 2026

    @jkowalleck
    Member

    closing as done, as the validated bugs were fixed, and the rest was clarified.

    if there is still something unclear, or appears incorrect, please open a new ticket.

  6. jkowalleck commented on Sep 17, 2026

    @jkowalleck
    Member
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions