Skip to content

Resolve whether trov:signingMechanism is mandatory or optional #25

@tmcphillips

Description

@tmcphillips

When trov:publicKey is absent from a TRO declaration, a verifier cannot distinguish between two situations:

  1. The TRS uses X.509/CMS signing, where the certificate chain is embedded in the .p7s file and trov:publicKey is intentionally omitted.
  2. The TRS uses GPG signing and the public key was accidentally omitted.

Without a property that declares the signing mechanism, the absence of trov:publicKey is ambiguous.

Proposed resolution

Add trov:signingMechanism as a required property on the TRO root object. When present, validation rules can check for consistency. For example, a validation tool could flag a GPG-signed declaration that lacks trov:publicKey.

The property qualifies the TRO, not the TRS, because a TRS may support multiple mechanisms and the choice is per-declaration.

The value should be a named individual (predefined constant) with a trov:SigningMechanism class, not a string literal. This is consistent with how TROV handles capabilities and attributes, and it means:

  • The vocabulary is the single source of truth for what mechanisms are defined. Validators discover valid mechanisms from the vocabulary rather than hardcoding them.
  • Adopters using a signing mechanism not yet in TROV can define custom types in their own namespace and declare them via trov:customTerm on the TRS node. This is the same extension pattern documented in the TROV Extension Guide. No TROV vocabulary update is needed for an adopter to launch.

TROV 0.1 would define at least:

  • trov:GPGSigning
  • trov:X509CMSSigning

In a TRO declaration, this would appear on the TRO root object:

{
    "@id": "#tro",
    "@type": "trov:TransparentResearchObject",
    "trov:signingMechanism": { "@id": "trov:X509CMSSigning" },
    ...
}

Remaining design question

Should we additionally provide a term for naming the signing artifact files (e.g. "trov:signatureFile": "tro.p7s")? This is a coupled but separable question; see TRO Packages — Open Questions.

Such a trov:signatureFile property would accept multiple values in the same TRO declaration (GPG needs both .sig and .tsr; X.509/CMS has a single .p7s). However, a separate vocabulary would not be needed to designate the role of each file identified in this way. The signing mechanism combined with conventional file extensions is sufficient to determine what each named file is.

Tasks

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions