Integrator instructions and limits: INTEGRATORS.md.
Verifier for AURA Evidence Packages, operationally independent of AUTHENTICA. This describes how it runs; it is not a claim of external audit or certification.
Version of this source tree: v1.2.2.
Published release status: GitHub releases. A source version is not evidence that a release tag or a Zenodo version has been published.
This source includes consistent validation across Node and WebCrypto. See
strict verification and compatibility.
Supported manifest versions are exactly 1.0 and 1.1.
This version also checks ambiguous JSON/hash declarations, declared date syntax and calendar values, and consistency of present issuer identifiers. These are verifier-policy checks, separate from schema validation and from trusted identity or timestamp assurance. See integrator policy.
This project verifies AURA manifests without requiring an AUTHENTICA account,
the AUTHENTICA backend, or any upload to lockdna.tech.
issuer.json is providedissuer.json is providedAURA_TDM_RIGHTS_RESERVATION_V1 profileProof scope:
This verifies integrity and the issuer signature. The issuance time is issuer-declared unless independent timestamp evidence is provided. It does not prove authorship, ownership, entitlement, grounding, citation or usage completeness.
This optional extension uses a locally installed OpenSSL binary and is not implemented in the JavaScript-only browser verifier. The base AURA verifier continues to run offline in both Node and WebCrypto.
The timestamp digest is SHA-256 of the RFC 8785 JCS canonical representation
of the complete signed manifest, including its signature object. Use
node bin/aura.js timestamp-request --manifest manifest.json --out manifest.tsq
to generate a query. Do NOT use openssl ts -query -data manifest.json:
that hashes noncanonical source bytes.
A separate SHA3-256 digest of that same canonical object is reported for
reference. It is NOT the same hash as the TSA’s SHA-256 messageImprint.
The published v1.1 prior_evidence.manifest_hash schema does not yet
define its hash preimage, so this is a candidate mapping, not a normative
equivalence. No eIDAS qualification, revocation or TSA policy suitability
is inferred by this extension.
Reproduce verification of the committed, real FreeTSA response over fictional data, without an account or network request:
node scripts/verify-timestamp-example.js
Requires Node.js 20+ and OpenSSL 3.x on PATH. A report with status: "passed"
and exit code 0 confirms the documented technical checks relative to the
supplied FreeTSA root. It is not qualified eIDAS timestamp certification.
The test issuer is fictional and must not be used in production.
See the public vector and expected results and RFC 3161 timestamp guide.
./bin/aura.js verify \
--asset examples/rfc3161-freetsa/asset.txt \
--manifest examples/rfc3161-freetsa/manifest.json \
--public-key examples/rfc3161-freetsa/public-key.pem
JSON output:
./bin/aura.js verify \
--asset examples/rfc3161-freetsa/asset.txt \
--manifest examples/rfc3161-freetsa/manifest.json \
--public-key examples/rfc3161-freetsa/public-key.pem \
--json
With issuer metadata:
./bin/aura.js verify \
--asset examples/rfc3161-freetsa/asset.txt \
--manifest examples/rfc3161-freetsa/manifest.json \
--public-key examples/rfc3161-freetsa/public-key.pem \
--issuer examples/rfc3161-freetsa/issuer.json
The web verifier performs cryptographic verification locally in the browser. In local-file mode it does not upload the asset, manifest, public key or issuer metadata, and it does not require an account, analytics service or verification telemetry.
npm run serve:web
Then open:
http://localhost:5177/web/
Drop or select:
When the page is opened with ?manifest=... or ?uid=...&src=..., the verifier
can fetch a manifest and a manifest-pinned archived public key as a convenience.
Those requests are optional and are not offline: the remote servers may record
ordinary access metadata such as the requester’s IP address, request time and
requested URL. For privacy-sensitive verification, open the verifier without
remote-loading parameters and supply the evidence and trust material as local
files.
A locally supplied issuer.json permits issuer-fingerprint, status and
revocation checks without a network request. The result reflects the freshness
of that local registry snapshot; update the snapshot separately when current
status is required.
Generate fresh local test vectors:
npm run generate:test-vector
The generator creates fictional v1.0 packages under generated/test-vectors/
and refuses an existing destination. To choose another destination:
node scripts/generate-test-vector.js /path/to/a-new-directory
The committed tests/vectors/valid, invalid-asset and invalid-signature
fixtures use the historical 0.1-test version. Their signed bytes are preserved
as regression evidence; that version now produces an invalid overall result.
Use the public v1.0 example above or the newly generated packages for integration.
Run tests:
npm test
Run the reproducible local/offline verification demonstration:
npm run demo:offline
The demonstration blocks network access, runs both verification engines and checks
rejection of manifest and asset tampering. See
docs/OFFLINE_PRIVACY_DEMO.md.
Included cases:
trueFor the optional TDM rights-reservation profile, the verifier reports profile conformance separately from issuer authority, automated discoverability or receipt, and legal effect. Those matters are not established by cryptographic verification.
The private key used to generate test vectors is never written to disk.
Concept DOI (all versions): https://doi.org/10.5281/zenodo.21251286
Archived v1.2.2:
https://doi.org/10.5281/zenodo.23917182
Source commit: 08d7c70404bab16e2e3b09bb9e59aefaf6fa5391.
Archived v1.2.1 (before the input-error reporting correction):
https://doi.org/10.5281/zenodo.23898686
Source commit: e1fa13c4fb253c2e07a99538524b869028bb62b4.
Archived v1.2.0 (before the browser integrity-label correction): https://doi.org/10.5281/zenodo.23857156
Archived v1.1.0 (historical reference, before the RFC 3161 and strict-validation additions): https://doi.org/10.5281/zenodo.22069698
Previous archived v1.0.2: https://doi.org/10.5281/zenodo.22063259
The concept DOI above resolves to the latest published archive. Cite the exact version DOI and commit used for reproduction. The historical archives are not rewritten when main evolves; a new version-specific DOI is referenced only after that archive exists.
Version 1.2.2 handles public-key decoding failures in both
engines without discarding completed integrity checks. JSON parsing failures
remain API errors, now identified by code and input field; verify --json
returns an explicit input-error object with exit code 2. See the
input error contract.
The browser suite covers 58 verification reports and five parsing-error displays.
Version 1.2.1 corrects the browser explanation for unchecked integrity: missing files and missing declared hashes are distinguished, including empty files. Cryptographic engines and acceptance decisions remain those of v1.2.0. The browser suite now covers 52 cases, including seven integrity-label checks.
Version 1.2.0 includes a SHA3-256 block-boundary correction, strict registry and signature-input validation, and actual browser regression tests. Read compatibility and reproduction notes before using this source to assess historical evidence. Release metadata alone does not identify a reviewed or archived artifact.