Sign In

@veritasacta/verify

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@veritasacta/verify

CLI tool to verify signed artifacts (receipts, manifests, tickets). Works offline.

Source
npmnpm
Version
0.3.0
Version published
Weekly downloads
50
-42.53%
Maintainers
1
Weekly downloads
 
Created
Source

@veritasacta/verify

Verify signed artifacts offline. No accounts. No API calls. No trust required.

Apache-2.0 licensed. Works offline. The verifier verifies itself.

Sigil: Slow Reed

Sigil:       Slow Reed
Fingerprint: dd0443f0
Version:     0.3.0

This release carries a cryptographic Sigil — a commitment to the exact source code published in this package. Run --self-check to verify you have the canonical, unmodified verifier:

npx @veritasacta/verify --self-check
@veritasacta/verify — self-check

  ✓ Canonical verifier — Slow Reed
    Sigil:    dd0443f0
    Version:  0.3.0
    Package:  @veritasacta/verify
    Source:   e7af6bb636d2336b... matches commitment
    Policy:   789aa634fa4496b0... matches commitment
    Sigil:    dd0443f0ae189b11... matches commitment

  This verifier is the unmodified canonical release.
  The source code has not been changed since it was published.

If you see "Modified verifier — NOT the canonical release," the code has been changed. Get the canonical version: npm install @veritasacta/verify

Why this matters: any fork of this verifier can rename itself, but it cannot produce a matching Sigil without the project's private key. The --self-check flag lets anyone confirm they are running the real thing.

Prove It

npx @veritasacta/verify --self-test
@veritasacta/verify — self-test

  ✓ Sample receipt: VALID  (decision_receipt, kid: kPrK_qmx...)
  ✓ Sample bundle:  VALID  (3/3 receipts)

  All self-tests passed. The verifier is working correctly.
  No ScopeBlind servers were contacted. No accounts required.

Usage

# Verify a receipt with a known public key
npx @veritasacta/verify receipt.json --key <public-key-hex>

# Verify a receipt, fetching key from JWKS
npx @veritasacta/verify receipt.json --jwks https://example.com/.well-known/jwks.json

# Verify an audit bundle (receipts + embedded keys)
npx @veritasacta/verify bundle.json --bundle

# Read from stdin (for piping)
cat receipt.json | npx @veritasacta/verify --stdin

# Machine-readable output (for CI/scripting)
npx @veritasacta/verify receipt.json --key <hex> --json

# Verify the verifier itself
npx @veritasacta/verify --self-check

What Gets Verified

The verifier:

  • Strips the signature field from the artifact
  • Canonicalizes the remaining JSON (JCS — RFC 8785)
  • SHA-256 hashes the canonical bytes
  • Verifies the Ed25519 signature against the hash using the public key

If the signature is valid, the artifact has not been tampered with since signing.

Supported Formats

FormatDetection
v2 artifact{ v: 2, type, algorithm, kid, signature, ... }
v1 artifact{ algorithm, signature, hash, ... }
Passport SignedEnvelope{ payload, signature: { alg, kid, sig } }
IETF draft envelope{ payload, signature: { alg, kid, sig } } per draft-farley-acta-signed-receipts
Audit bundle{ receipts: [...], verification: { signing_keys: [...] } }

Options

FlagDescription
--key, -k <hex>Ed25519 public key (64 hex chars)
--jwks <url>JWKS endpoint URL for key discovery
--bundleVerify all receipts in an audit bundle
--stdinRead artifact from stdin
--jsonMachine-readable JSON output
--verbose, -vShow detailed verification info
--self-testVerify bundled sample artifacts (proves the verifier works)
--self-checkVerify this verifier is the canonical, unmodified release
--help, -hShow help

Exit Codes

CodeMeaningSemantics
0Signature validProven authentic — the Ed25519 math confirms the artifact has not been modified since signing
1Signature invalidProven tampered — the signature does not match the payload. This is a security event.
2Verifier errorUndecidable — malformed input, missing key, unparseable JSON. The check could not be performed.

The distinction matters: exit 1 is evidence of tampering. Exit 2 is an operational error. These demand different responses.

Cross-System Interop

This verifier accepts receipts from multiple governance frameworks:

SystemReceipt typeVerified
protect-mcpCedar policy + execution receiptsExit 0
Agent Passport SystemDelegation + evaluation + outcome receiptsExit 0
AgentIDIdentity verification attestationsExit 0

All three use the same IETF draft envelope format with JCS canonicalization and Ed25519 signatures.

Sigil Commitment

The sigil.json file in this package contains:

FieldValuePurpose
fingerprintdd0443f0Short identifier for this release's Sigil
nameSlow ReedHuman-readable name (deterministic from fingerprint)
project_public_keyfe665e86...Veritas Acta project Ed25519 public key
policy.source_hashe7af6bb6...SHA-256 of cli.js at release time
policy.package_version0.3.0npm version this Sigil commits to
policy.ietf_draftdraft-farley-acta-signed-receipts-02IETF spec version implemented

The Sigil is derived from: SHA-256("scopeblind:sigil:v2" || project_public_key || SHA-256(policy_json)). Anyone with the public key and the source code can independently re-derive the Sigil and confirm it matches.

Why Trust This?

  • Self-checking — the verifier verifies itself (--self-check)
  • Apache-2.0 licensed — patent grant included, no vendor lock-in
  • Open schemas — the artifact format is an IETF Internet-Draft
  • Test vectors — deterministic keypairs with known-good signatures
  • Works offline — no API calls, no accounts, no servers contacted
  • Cross-system — verifies receipts from multiple independent governance frameworks
  • Sigil'd — every release carries a cryptographic commitment to its own source code

Any platform can log what its agents do. Very few will let you verify those logs without trusting them. Even fewer will let you verify the verifier.

License

Apache-2.0 — veritasacta.com | IETF Draft | Protocol

Keywords

verify

FAQs

Package last updated on 13 Apr 2026

Related posts