When trov:publicKey is absent from a TRO declaration, a verifier cannot distinguish between two situations:
- The TRS uses X.509/CMS signing, where the certificate chain is embedded in the
.p7s file and trov:publicKey is intentionally omitted.
- 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
When
trov:publicKeyis absent from a TRO declaration, a verifier cannot distinguish between two situations:.p7sfile andtrov:publicKeyis intentionally omitted.Without a property that declares the signing mechanism, the absence of
trov:publicKeyis ambiguous.Proposed resolution
Add
trov:signingMechanismas 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 lackstrov: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:SigningMechanismclass, not a string literal. This is consistent with how TROV handles capabilities and attributes, and it means:trov:customTermon 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:GPGSigningtrov:X509CMSSigningIn 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:signatureFileproperty would accept multiple values in the same TRO declaration (GPG needs both.sigand.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
trov:signingMechanism,trov:SigningMechanism,trov:GPGSigning,trov:X509CMSSigningtrov:signingMechanismas a required field on the TRO rootRelated