Skip to content

BrivoraProof Protocol Specification

This document specifies the BrivoraProof format at the byte level, enabling any implementation in any programming language to generate and verify governance proofs without depending on Brivora software.

A BrivoraProof is a structured object with the following fields, serialized as CBOR (RFC 8949) for wire format and JSON for human-readable interchange.

FieldTypeSizeDescription
versionstring3 bytesProtocol version ("1.0")
timestampstring24 bytesISO 8601 UTC timestamp
subjectstringvariableDID of the evaluated system
verifierstringvariableDID of the verifier
governance_policybytes32 bytesSHA-3-256 hash of governance pack
system_state_hashbytes32 bytesSHA-3-256 hash of system state
fidelity_scorefloat648 bytesCompliance score (0.0-1.0)
evaluation_resultuint81 byte0=PASS, 1=FAIL, 2=PARTIAL
evidence_chainbytes[]32 x N bytesMerkle tree leaf hashes
merkle_rootbytes32 bytesSHA-3-256 Merkle root
signatureobjectvariableSee signature format below
public_keybytesvariableVerifier’s public key
previous_proofbytes32 bytesPrevious proof hash (optional)

All hashes use SHA-3-256 (FIPS 202). Input is the canonical CBOR encoding of the field value.

interface ProofSignature {
pqc: Uint8Array; // ML-DSA-65 signature (~3,300 bytes)
classical?: Uint8Array; // Ed25519 signature (64 bytes)
algorithm: string; // 'hybrid-pqc-v1' or 'pqc-only-v1'
}

The signed message is the merkle_root bytes.

Verifiers must check the version field before processing. Unknown versions must be rejected. Version "1.0" is the only currently defined version.