Skip to content

Add "proof" object as fourth structural component of a Record #7

Description

@Jenziner

Problem

RWP currently secures a Record's integrity via snapshotHash, but has no
structural place for an issuer's cryptographic signature over that
snapshot. Without this, no artifact derived from a Record can be verified
independently of the issuing system — a prerequisite for the Issued Copy
concept (recordweb/rwc#7).

Proposal

Add proof as an optional, repeatable structural component of a finalized
Record snapshot, modeled closely on W3C Verifiable Credential Data Integrity
1.0, without adopting VC terminology into RWP's core vocabulary.

Proposed schema addition

{
  "proof": [
    {
      "type": "DataIntegrityProof",
      "cryptosuite": "eddsa-jcs-2022",
      "created": "2026-07-23T08:00:00Z",
      "verificationMethod": "did:rwp:parlament.ch/system/rwp-node#key-1",
      "proofPurpose": "assertionMethod",
      "proofValue": "z...base58-multibase-signature..."
    }
  ]
}

Constraints

  • proof is only permitted on Records in the finalized state (consistent
    with the existing principle that only finalized content is immutable and
    linkable).
  • proof signs the canonical JCS serialization (RFC 8785) of the snapshot,
    consistent with RWP's existing hashing approach.
  • Multiple proofs are permitted (e.g. institutional signature plus
    notarization signature), each independently verifiable.
  • proof is additive to the snapshot; it does not alter snapshotHash
    computation, which continues to be computed over content only.

Open questions for CG discussion

  • Which cryptosuite(s) should be mandatory-to-implement for RWP v1.0
    conformance?
  • Is verificationMethod required to resolve via the same did:rwp
    resolution mechanism as Record identity, or can it reference external
    DID methods (e.g. did:web, did:key)?

Activity

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

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions