Sign In

@rubric-protocol/verify

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rubric-protocol/verify - npm Package Compare versions

Comparing version
2.0.0
to
2.1.0
+15
dist/cjs/anchors/hcs-aggregate.d.ts
export interface AggregateAnchor {
aggregateRoot: string;
tier1Count: number;
totalItems?: number;
treeVersion?: number;
raw: Record<string, unknown>;
}
export declare function fetchHcsAggregate(opts: {
hederaMirror: string;
topicId: string;
sequenceNumber: number;
fetchImpl?: typeof globalThis.fetch;
timeoutMs?: number;
}): Promise<AggregateAnchor | null>;
//# sourceMappingURL=hcs-aggregate.d.ts.map
{"version":3,"file":"hcs-aggregate.d.ts","sourceRoot":"","sources":["../../../src/anchors/hcs-aggregate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA6ClC"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchHcsAggregate = fetchHcsAggregate;
/**
* Fetch a tier-2 aggregate anchor by sequence number.
*
* A tiered attestation does not appear on HCS individually — it is Merkle
* batched, and what reaches the topic is an aggregate envelope carrying
* aggregateRoot and tier1Count. The record's anchors.hcs.tx_id is empty, so
* the tx-id based fetch used for direct attestations cannot locate it; the
* sequence number is the only handle.
*/
const errors_js_1 = require("../errors.js");
const DEFAULT_TIMEOUT_MS = 10_000;
async function fetchHcsAggregate(opts) {
const fetchFn = opts.fetchImpl ?? globalThis.fetch;
if (!fetchFn)
throw new errors_js_1.AnchorFetchError('no fetch implementation available');
if (!/^\d+\.\d+\.\d+$/.test(opts.topicId))
return null;
if (!Number.isInteger(opts.sequenceNumber) || opts.sequenceNumber <= 0)
return null;
const url = `${opts.hederaMirror.replace(/\/+$/, '')}/api/v1/topics/${opts.topicId}` +
`/messages?sequencenumber=${opts.sequenceNumber}&limit=1`;
let body;
try {
const res = await fetchFn(url, {
signal: AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_TIMEOUT_MS),
});
if (!res.ok)
return null;
body = await res.json();
}
catch {
return null;
}
const msg = Array.isArray(body?.messages) ? body.messages[0] : null;
if (!msg || typeof msg.message !== 'string')
return null;
// Aggregate anchors are single-chunk by design (918 bytes in full form).
// A chunked one cannot be reassembled from a sequence number alone.
const total = msg.chunk_info?.total ?? 1;
if (total !== 1)
return null;
let env;
try {
env = JSON.parse(Buffer.from(msg.message, 'base64').toString('utf8'));
}
catch {
return null;
}
if (!env || typeof env !== 'object')
return null;
if (typeof env.aggregateRoot !== 'string')
return null;
return {
aggregateRoot: env.aggregateRoot,
tier1Count: typeof env.tier1Count === 'number' ? env.tier1Count : -1,
totalItems: typeof env.totalItems === 'number' ? env.totalItems : undefined,
treeVersion: typeof env.treeVersion === 'number' ? env.treeVersion : undefined,
raw: env,
};
}
//# sourceMappingURL=hcs-aggregate.js.map
{"version":3,"file":"hcs-aggregate.js","sourceRoot":"","sources":["../../../src/anchors/hcs-aggregate.ts"],"names":[],"mappings":";;AAqBA,8CAmDC;AAxED;;;;;;;;GAQG;AACH,4CAAgD;AAEhD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAU3B,KAAK,UAAU,iBAAiB,CAAC,IAMvC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,4BAAgB,CAAC,mCAAmC,CAAC,CAAC;IAC9E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpF,MAAM,GAAG,GACP,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,IAAI,CAAC,OAAO,EAAE;QACxE,4BAA4B,IAAI,CAAC,cAAc,UAAU,CAAC;IAE5D,IAAI,IAAS,CAAC;IACd,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;SAClE,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzD,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEvD,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3E,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC9E,GAAG,EAAE,GAAG;KACT,CAAC;AACJ,CAAC"}
/**
* The exact object the producer hashes (spec §6.3), rebuilt from a record.
*
* Optional siblings are included ONLY when present — omitted, never null,
* mirroring buildTieredLeafMessage in the producer.
*
* Every optional key the producer can add MUST appear here. A key the producer
* hashes and this function omits yields a different leaf, and the record then
* fails to verify against its own batch_root while looking, from the outside,
* like a forgery. client_attestation is the key that made this necessary: it is
* present on every record whose submitter signed locally, and it was missing
* from both this verifier and the published constructions document until
* 2026-08-13.
*
* Note the producer only includes client_attestation when the client signature
* VERIFIED at ingest; an unverified one stays on the stub and never enters the
* leaf. Records therefore either carry a verified block or none at all.
*/
import type { AttestationBase } from './types.js';
export declare function buildAttestationMessage(a: AttestationBase): Record<string, unknown>;
//# sourceMappingURL=canonical-message.d.ts.map
{"version":3,"file":"canonical-message.d.ts","sourceRoot":"","sources":["../../src/canonical-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcnF"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildAttestationMessage = buildAttestationMessage;
function buildAttestationMessage(a) {
return {
rubric_version: a.rubric_version,
attestation_type: a.attestation_type,
attestation_id: a.attestation_id,
issuer_node_region: a.issuer_node_region,
issued_at: a.issued_at,
payload: a.payload,
...(a.provenance ? { provenance: a.provenance } : {}),
...(a.evidence ? { evidence: a.evidence } : {}),
...(a.model_ref ? { model_ref: a.model_ref } : {}),
...(a.compliance_ref ? { compliance_ref: a.compliance_ref } : {}),
...(a.client_attestation ? { client_attestation: a.client_attestation } : {}),
};
}
//# sourceMappingURL=canonical-message.js.map
{"version":3,"file":"canonical-message.js","sourceRoot":"","sources":["../../src/canonical-message.ts"],"names":[],"mappings":";;AAoBA,0DAcC;AAdD,SAAgB,uBAAuB,CAAC,CAAkB;IACxD,OAAO;QACL,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC"}
/**
* Decide which object to hash as this record's Merkle leaf.
*
* Prefer the record's own fields. Fall back to attestation.stub.leafMessage —
* currently the only place /v1/verify/:id exposes the leaf's optional keys —
* but only after proving the stub copy is about the same attestation:
*
* * every key it carries is one the published spec allows in a leaf;
* * all six always-present keys are byte-identical to the record's;
* * otherwise the stub is refused and the record's own six keys are hashed,
* with the contradiction reported as a failure.
*
* The fallback is not a trust shortcut. The leaf still has to walk the Merkle
* proof to batch_root, and batch_root still has to reconstruct to the anchored
* aggregate root. All the stub can supply is optional-key CONTENT that was
* anchored at flush time along with everything else; it cannot change what the
* attestation is about.
*/
import type { AttestationBase } from './types.js';
export interface LeafResolution {
/** The object to canonicalize and hash. */
message: Record<string, unknown>;
/** Where the optional keys came from. */
source: 'record' | 'stub';
/** Set when the fallback was used, for surfacing to the caller. */
note?: string;
/** Set when the stub was refused; belongs in `failures`. */
error?: string;
}
export declare function resolveLeafMessage(a: AttestationBase): LeafResolution;
//# sourceMappingURL=leaf-source.d.ts.map
{"version":3,"file":"leaf-source.d.ts","sourceRoot":"","sources":["../../src/leaf-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAoBlD,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,yCAAyC;IACzC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,cAAc,CAuDrE"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveLeafMessage = resolveLeafMessage;
const canonical_message_js_1 = require("./canonical-message.js");
const ALWAYS = [
'rubric_version',
'attestation_type',
'attestation_id',
'issuer_node_region',
'issued_at',
'payload',
];
const OPTIONAL = [
'provenance',
'evidence',
'model_ref',
'compliance_ref',
'client_attestation',
];
/** Order-insensitive structural equality, for comparison only — never hashed. */
function stable(v) {
if (v === undefined)
return 'undefined';
if (v === null || typeof v !== 'object')
return JSON.stringify(v) ?? 'undefined';
if (Array.isArray(v))
return `[${v.map(stable).join(',')}]`;
const o = v;
return `{${Object.keys(o)
.sort()
.map((k) => `${JSON.stringify(k)}:${stable(o[k])}`)
.join(',')}}`;
}
function resolveLeafMessage(a) {
const fromRecord = (0, canonical_message_js_1.buildAttestationMessage)(a);
const rec = a;
// The record carries its own optional keys — nothing to reconcile.
if (OPTIONAL.some((k) => rec[k] !== undefined && rec[k] !== null)) {
return { message: fromRecord, source: 'record' };
}
const stub = a.stub;
const lm = stub?.leafMessage;
if (!lm || typeof lm !== 'object' || Array.isArray(lm)) {
return { message: fromRecord, source: 'record' };
}
const cand = lm;
const allowed = new Set([...ALWAYS, ...OPTIONAL]);
const unexpected = Object.keys(cand).filter((k) => !allowed.has(k));
const missing = ALWAYS.filter((k) => !(k in cand));
if (unexpected.length > 0 || missing.length > 0) {
return {
message: fromRecord,
source: 'record',
error: 'stub.leafMessage does not match the published leaf shape and was not used ' +
`(unexpected keys: ${unexpected.join(', ') || 'none'}; ` +
`missing required: ${missing.join(', ') || 'none'})`,
};
}
const divergent = ALWAYS.filter((k) => stable(cand[k]) !== stable(fromRecord[k]));
if (divergent.length > 0) {
return {
message: fromRecord,
source: 'record',
error: 'stub.leafMessage contradicts the record on ' +
`${divergent.join(', ')} — refusing to hash the server's copy`,
};
}
const carried = OPTIONAL.filter((k) => k in cand);
if (carried.length === 0) {
return { message: fromRecord, source: 'record' };
}
return {
message: cand,
source: 'stub',
note: `optional leaf keys (${carried.join(', ')}) were read from ` +
'attestation.stub.leafMessage: this API response does not expose them at the ' +
'top level of `attestation`. The six signed core fields were confirmed ' +
'identical to the record before hashing.',
};
}
//# sourceMappingURL=leaf-source.js.map
{"version":3,"file":"leaf-source.js","sourceRoot":"","sources":["../../src/leaf-source.ts"],"names":[],"mappings":"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"}
export interface AggregateAnchor {
aggregateRoot: string;
tier1Count: number;
totalItems?: number;
treeVersion?: number;
raw: Record<string, unknown>;
}
export declare function fetchHcsAggregate(opts: {
hederaMirror: string;
topicId: string;
sequenceNumber: number;
fetchImpl?: typeof globalThis.fetch;
timeoutMs?: number;
}): Promise<AggregateAnchor | null>;
//# sourceMappingURL=hcs-aggregate.d.ts.map
{"version":3,"file":"hcs-aggregate.d.ts","sourceRoot":"","sources":["../../../src/anchors/hcs-aggregate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA6ClC"}
/**
* Fetch a tier-2 aggregate anchor by sequence number.
*
* A tiered attestation does not appear on HCS individually — it is Merkle
* batched, and what reaches the topic is an aggregate envelope carrying
* aggregateRoot and tier1Count. The record's anchors.hcs.tx_id is empty, so
* the tx-id based fetch used for direct attestations cannot locate it; the
* sequence number is the only handle.
*/
import { AnchorFetchError } from '../errors.js';
const DEFAULT_TIMEOUT_MS = 10_000;
export async function fetchHcsAggregate(opts) {
const fetchFn = opts.fetchImpl ?? globalThis.fetch;
if (!fetchFn)
throw new AnchorFetchError('no fetch implementation available');
if (!/^\d+\.\d+\.\d+$/.test(opts.topicId))
return null;
if (!Number.isInteger(opts.sequenceNumber) || opts.sequenceNumber <= 0)
return null;
const url = `${opts.hederaMirror.replace(/\/+$/, '')}/api/v1/topics/${opts.topicId}` +
`/messages?sequencenumber=${opts.sequenceNumber}&limit=1`;
let body;
try {
const res = await fetchFn(url, {
signal: AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_TIMEOUT_MS),
});
if (!res.ok)
return null;
body = await res.json();
}
catch {
return null;
}
const msg = Array.isArray(body?.messages) ? body.messages[0] : null;
if (!msg || typeof msg.message !== 'string')
return null;
// Aggregate anchors are single-chunk by design (918 bytes in full form).
// A chunked one cannot be reassembled from a sequence number alone.
const total = msg.chunk_info?.total ?? 1;
if (total !== 1)
return null;
let env;
try {
env = JSON.parse(Buffer.from(msg.message, 'base64').toString('utf8'));
}
catch {
return null;
}
if (!env || typeof env !== 'object')
return null;
if (typeof env.aggregateRoot !== 'string')
return null;
return {
aggregateRoot: env.aggregateRoot,
tier1Count: typeof env.tier1Count === 'number' ? env.tier1Count : -1,
totalItems: typeof env.totalItems === 'number' ? env.totalItems : undefined,
treeVersion: typeof env.treeVersion === 'number' ? env.treeVersion : undefined,
raw: env,
};
}
//# sourceMappingURL=hcs-aggregate.js.map
{"version":3,"file":"hcs-aggregate.js","sourceRoot":"","sources":["../../../src/anchors/hcs-aggregate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAUlC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAMvC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,gBAAgB,CAAC,mCAAmC,CAAC,CAAC;IAC9E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpF,MAAM,GAAG,GACP,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,IAAI,CAAC,OAAO,EAAE;QACxE,4BAA4B,IAAI,CAAC,cAAc,UAAU,CAAC;IAE5D,IAAI,IAAS,CAAC;IACd,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;SAClE,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzD,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEvD,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3E,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC9E,GAAG,EAAE,GAAG;KACT,CAAC;AACJ,CAAC"}
/**
* The exact object the producer hashes (spec §6.3), rebuilt from a record.
*
* Optional siblings are included ONLY when present — omitted, never null,
* mirroring buildTieredLeafMessage in the producer.
*
* Every optional key the producer can add MUST appear here. A key the producer
* hashes and this function omits yields a different leaf, and the record then
* fails to verify against its own batch_root while looking, from the outside,
* like a forgery. client_attestation is the key that made this necessary: it is
* present on every record whose submitter signed locally, and it was missing
* from both this verifier and the published constructions document until
* 2026-08-13.
*
* Note the producer only includes client_attestation when the client signature
* VERIFIED at ingest; an unverified one stays on the stub and never enters the
* leaf. Records therefore either carry a verified block or none at all.
*/
import type { AttestationBase } from './types.js';
export declare function buildAttestationMessage(a: AttestationBase): Record<string, unknown>;
//# sourceMappingURL=canonical-message.d.ts.map
{"version":3,"file":"canonical-message.d.ts","sourceRoot":"","sources":["../../src/canonical-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcnF"}
export function buildAttestationMessage(a) {
return {
rubric_version: a.rubric_version,
attestation_type: a.attestation_type,
attestation_id: a.attestation_id,
issuer_node_region: a.issuer_node_region,
issued_at: a.issued_at,
payload: a.payload,
...(a.provenance ? { provenance: a.provenance } : {}),
...(a.evidence ? { evidence: a.evidence } : {}),
...(a.model_ref ? { model_ref: a.model_ref } : {}),
...(a.compliance_ref ? { compliance_ref: a.compliance_ref } : {}),
...(a.client_attestation ? { client_attestation: a.client_attestation } : {}),
};
}
//# sourceMappingURL=canonical-message.js.map
{"version":3,"file":"canonical-message.js","sourceRoot":"","sources":["../../src/canonical-message.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,uBAAuB,CAAC,CAAkB;IACxD,OAAO;QACL,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC"}
/**
* Decide which object to hash as this record's Merkle leaf.
*
* Prefer the record's own fields. Fall back to attestation.stub.leafMessage —
* currently the only place /v1/verify/:id exposes the leaf's optional keys —
* but only after proving the stub copy is about the same attestation:
*
* * every key it carries is one the published spec allows in a leaf;
* * all six always-present keys are byte-identical to the record's;
* * otherwise the stub is refused and the record's own six keys are hashed,
* with the contradiction reported as a failure.
*
* The fallback is not a trust shortcut. The leaf still has to walk the Merkle
* proof to batch_root, and batch_root still has to reconstruct to the anchored
* aggregate root. All the stub can supply is optional-key CONTENT that was
* anchored at flush time along with everything else; it cannot change what the
* attestation is about.
*/
import type { AttestationBase } from './types.js';
export interface LeafResolution {
/** The object to canonicalize and hash. */
message: Record<string, unknown>;
/** Where the optional keys came from. */
source: 'record' | 'stub';
/** Set when the fallback was used, for surfacing to the caller. */
note?: string;
/** Set when the stub was refused; belongs in `failures`. */
error?: string;
}
export declare function resolveLeafMessage(a: AttestationBase): LeafResolution;
//# sourceMappingURL=leaf-source.d.ts.map
{"version":3,"file":"leaf-source.d.ts","sourceRoot":"","sources":["../../src/leaf-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAoBlD,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,yCAAyC;IACzC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,cAAc,CAuDrE"}
import { buildAttestationMessage } from './canonical-message.js';
const ALWAYS = [
'rubric_version',
'attestation_type',
'attestation_id',
'issuer_node_region',
'issued_at',
'payload',
];
const OPTIONAL = [
'provenance',
'evidence',
'model_ref',
'compliance_ref',
'client_attestation',
];
/** Order-insensitive structural equality, for comparison only — never hashed. */
function stable(v) {
if (v === undefined)
return 'undefined';
if (v === null || typeof v !== 'object')
return JSON.stringify(v) ?? 'undefined';
if (Array.isArray(v))
return `[${v.map(stable).join(',')}]`;
const o = v;
return `{${Object.keys(o)
.sort()
.map((k) => `${JSON.stringify(k)}:${stable(o[k])}`)
.join(',')}}`;
}
export function resolveLeafMessage(a) {
const fromRecord = buildAttestationMessage(a);
const rec = a;
// The record carries its own optional keys — nothing to reconcile.
if (OPTIONAL.some((k) => rec[k] !== undefined && rec[k] !== null)) {
return { message: fromRecord, source: 'record' };
}
const stub = a.stub;
const lm = stub?.leafMessage;
if (!lm || typeof lm !== 'object' || Array.isArray(lm)) {
return { message: fromRecord, source: 'record' };
}
const cand = lm;
const allowed = new Set([...ALWAYS, ...OPTIONAL]);
const unexpected = Object.keys(cand).filter((k) => !allowed.has(k));
const missing = ALWAYS.filter((k) => !(k in cand));
if (unexpected.length > 0 || missing.length > 0) {
return {
message: fromRecord,
source: 'record',
error: 'stub.leafMessage does not match the published leaf shape and was not used ' +
`(unexpected keys: ${unexpected.join(', ') || 'none'}; ` +
`missing required: ${missing.join(', ') || 'none'})`,
};
}
const divergent = ALWAYS.filter((k) => stable(cand[k]) !== stable(fromRecord[k]));
if (divergent.length > 0) {
return {
message: fromRecord,
source: 'record',
error: 'stub.leafMessage contradicts the record on ' +
`${divergent.join(', ')} — refusing to hash the server's copy`,
};
}
const carried = OPTIONAL.filter((k) => k in cand);
if (carried.length === 0) {
return { message: fromRecord, source: 'record' };
}
return {
message: cand,
source: 'stub',
note: `optional leaf keys (${carried.join(', ')}) were read from ` +
'attestation.stub.leafMessage: this API response does not expose them at the ' +
'top level of `attestation`. The six signed core fields were confirmed ' +
'identical to the record before hashing.',
};
}
//# sourceMappingURL=leaf-source.js.map
{"version":3,"file":"leaf-source.js","sourceRoot":"","sources":["../../src/leaf-source.ts"],"names":[],"mappings":"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"}
export interface AggregateAnchor {
aggregateRoot: string;
tier1Count: number;
totalItems?: number;
treeVersion?: number;
raw: Record<string, unknown>;
}
export declare function fetchHcsAggregate(opts: {
hederaMirror: string;
topicId: string;
sequenceNumber: number;
fetchImpl?: typeof globalThis.fetch;
timeoutMs?: number;
}): Promise<AggregateAnchor | null>;
//# sourceMappingURL=hcs-aggregate.d.ts.map
{"version":3,"file":"hcs-aggregate.d.ts","sourceRoot":"","sources":["../../../src/anchors/hcs-aggregate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA6ClC"}
/**
* The exact object the producer hashes (spec §6.3), rebuilt from a record.
*
* Optional siblings are included ONLY when present — omitted, never null,
* mirroring buildTieredLeafMessage in the producer.
*
* Every optional key the producer can add MUST appear here. A key the producer
* hashes and this function omits yields a different leaf, and the record then
* fails to verify against its own batch_root while looking, from the outside,
* like a forgery. client_attestation is the key that made this necessary: it is
* present on every record whose submitter signed locally, and it was missing
* from both this verifier and the published constructions document until
* 2026-08-13.
*
* Note the producer only includes client_attestation when the client signature
* VERIFIED at ingest; an unverified one stays on the stub and never enters the
* leaf. Records therefore either carry a verified block or none at all.
*/
import type { AttestationBase } from './types.js';
export declare function buildAttestationMessage(a: AttestationBase): Record<string, unknown>;
//# sourceMappingURL=canonical-message.d.ts.map
{"version":3,"file":"canonical-message.d.ts","sourceRoot":"","sources":["../../src/canonical-message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcnF"}
/**
* Decide which object to hash as this record's Merkle leaf.
*
* Prefer the record's own fields. Fall back to attestation.stub.leafMessage —
* currently the only place /v1/verify/:id exposes the leaf's optional keys —
* but only after proving the stub copy is about the same attestation:
*
* * every key it carries is one the published spec allows in a leaf;
* * all six always-present keys are byte-identical to the record's;
* * otherwise the stub is refused and the record's own six keys are hashed,
* with the contradiction reported as a failure.
*
* The fallback is not a trust shortcut. The leaf still has to walk the Merkle
* proof to batch_root, and batch_root still has to reconstruct to the anchored
* aggregate root. All the stub can supply is optional-key CONTENT that was
* anchored at flush time along with everything else; it cannot change what the
* attestation is about.
*/
import type { AttestationBase } from './types.js';
export interface LeafResolution {
/** The object to canonicalize and hash. */
message: Record<string, unknown>;
/** Where the optional keys came from. */
source: 'record' | 'stub';
/** Set when the fallback was used, for surfacing to the caller. */
note?: string;
/** Set when the stub was refused; belongs in `failures`. */
error?: string;
}
export declare function resolveLeafMessage(a: AttestationBase): LeafResolution;
//# sourceMappingURL=leaf-source.d.ts.map
{"version":3,"file":"leaf-source.d.ts","sourceRoot":"","sources":["../../src/leaf-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAoBlD,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,yCAAyC;IACzC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,cAAc,CAuDrE"}
+5
-2

@@ -13,3 +13,3 @@ #!/usr/bin/env node

* --anchor <url|file> trust anchor source (default: https://rubric-protocol.com/trust-anchor.json)
* --api <base-url> attestation retrieval API (default: https://us.rubric-protocol.com)
* --api <base-url> attestation retrieval API (default: https://rubric-protocol.com)
* --allow-single-anchor accept HCS-only anchoring explicitly

@@ -27,3 +27,6 @@ *

const DEFAULT_ANCHOR = 'https://rubric-protocol.com/trust-anchor.json';
const DEFAULT_API = 'https://us.rubric-protocol.com';
// The apex fans out to peer nodes (since 2026-08-12), so it resolves records
// served by any region. Pinning us. here meant an sg/jp/ca/eu attestation was
// simply not found, independent of whether it was valid.
const DEFAULT_API = 'https://rubric-protocol.com';
function usage() {

@@ -30,0 +33,0 @@ process.stderr.write('usage: rubric-verify <attestation-id | attestation.json> ' +

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}

@@ -6,6 +6,6 @@ /**

* - Hash function: SHA-256 (spec §4.1).
* - Leaf: leaf_i = SHA-256(canonical_message_i) (§7.1)
* - Leaf: leaf_i = SHA-256(0x00 || canonical_message_i) (§7.1)
* - Internal: internal(L, R) = SHA-256(0x01 || L || R) (§7.2)
* where 0x01 is a domain separator distinguishing internal
* nodes from leaves (which use no prefix).
* where 0x00 and 0x01 are RFC 6962 domain separators that
* keep leaf and internal-node hashes in disjoint spaces.
* - Tree shape: binary, balanced, depth 20 (max 2^20 leaves);

@@ -27,6 +27,9 @@ * odd levels are right-padded by duplicating the last leaf.

/**
* Compute a leaf hash: SHA-256(canonical_message_bytes).
* Compute a leaf hash: SHA-256(0x00 || canonical_message_bytes).
*
* The leaf has no domain separator prefix, distinguishing it from an internal
* node (spec §7.2).
* Confirmed against live records rather than the draft: for attestation
* eb7310f4 the unprefixed digest is d2319dec..., which is that record's
* payload_hash, while the 0x00-prefixed digest is 836939c0... -- its
* batch_root, and the value actually anchored on HCS. The producer and
* constructions.json both tag the leaf; verify-spec v1.0.0 §7.1 is wrong.
*/

@@ -33,0 +36,0 @@ export declare function merkleLeaf(canonicalMessageBytes: Uint8Array): Uint8Array;

@@ -1,1 +0,1 @@

{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,qBAAqB,EAAE,UAAU,GAAG,UAAU,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB1C"}
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAUlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,qBAAqB,EAAE,UAAU,GAAG,UAAU,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB1C"}

@@ -7,6 +7,6 @@ "use strict";

* - Hash function: SHA-256 (spec §4.1).
* - Leaf: leaf_i = SHA-256(canonical_message_i) (§7.1)
* - Leaf: leaf_i = SHA-256(0x00 || canonical_message_i) (§7.1)
* - Internal: internal(L, R) = SHA-256(0x01 || L || R) (§7.2)
* where 0x01 is a domain separator distinguishing internal
* nodes from leaves (which use no prefix).
* where 0x00 and 0x01 are RFC 6962 domain separators that
* keep leaf and internal-node hashes in disjoint spaces.
* - Tree shape: binary, balanced, depth 20 (max 2^20 leaves);

@@ -27,4 +27,7 @@ * odd levels are right-padded by duplicating the last leaf.

const crypto_js_1 = require("./crypto.js");
/** Domain separator byte for leaves (RFC 6962). */
const LEAF_NODE_PREFIX = new Uint8Array([0x00]);
/** Domain separator byte for internal nodes (spec §7.2). */
const INTERNAL_NODE_PREFIX = new Uint8Array([0x01]);
const EMPTY = new Uint8Array(0);
/**

@@ -37,9 +40,12 @@ * Compute an internal Merkle node: SHA-256(0x01 || left || right).

/**
* Compute a leaf hash: SHA-256(canonical_message_bytes).
* Compute a leaf hash: SHA-256(0x00 || canonical_message_bytes).
*
* The leaf has no domain separator prefix, distinguishing it from an internal
* node (spec §7.2).
* Confirmed against live records rather than the draft: for attestation
* eb7310f4 the unprefixed digest is d2319dec..., which is that record's
* payload_hash, while the 0x00-prefixed digest is 836939c0... -- its
* batch_root, and the value actually anchored on HCS. The producer and
* constructions.json both tag the leaf; verify-spec v1.0.0 §7.1 is wrong.
*/
function merkleLeaf(canonicalMessageBytes) {
return (0, crypto_js_1.sha256)(canonicalMessageBytes);
return (0, crypto_js_1.sha256)((0, crypto_js_1.concatBytes3)(LEAF_NODE_PREFIX, canonicalMessageBytes, EMPTY));
}

@@ -46,0 +52,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAWH,wCAEC;AAQD,gCAEC;AAkBD,8CA8BC;AArED,2CAAmF;AAGnF,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpD;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAgB,EAAE,KAAiB;IAChE,OAAO,IAAA,kBAAM,EAAC,IAAA,wBAAY,EAAC,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,qBAAiC;IAC1D,OAAO,IAAA,kBAAM,EAAC,qBAAqB,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,iBAAiB,CAC/B,IAAgB,EAChB,KAAe,EACf,UAA6B,EAC7B,YAAoB;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAC;IACxC,OAAO;QACL,KAAK,EAAE,IAAA,oBAAQ,EAAC,YAAY,EAAE,YAAY,CAAC;QAC3C,YAAY;KACb,CAAC;AACJ,CAAC"}
{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAgBH,wCAEC;AAWD,gCAEC;AAkBD,8CA8BC;AA7ED,2CAAmF;AAGnF,mDAAmD;AACnD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAgB,EAAE,KAAiB;IAChE,OAAO,IAAA,kBAAM,EAAC,IAAA,wBAAY,EAAC,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,qBAAiC;IAC1D,OAAO,IAAA,kBAAM,EAAC,IAAA,wBAAY,EAAC,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,iBAAiB,CAC/B,IAAgB,EAChB,KAAe,EACf,UAA6B,EAC7B,YAAoB;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAC;IACxC,OAAO;QACL,KAAK,EAAE,IAAA,oBAAQ,EAAC,YAAY,EAAE,YAAY,CAAC;QAC3C,YAAY;KACb,CAAC;AACJ,CAAC"}

@@ -115,2 +115,36 @@ /**

signature: string;
/** Optional model reference (§5.6); signed sibling of payload when present. */
model_ref?: Record<string, unknown>;
/** Optional compliance reference (§5.7); signed sibling of payload when present. */
compliance_ref?: Record<string, unknown>;
/**
* Present only when the submitter signed the payload with its own key AND
* that signature verified at ingest. Hashed INTO the leaf: a verifier that
* omits it computes a different leaf for every client-signed record.
*/
client_attestation?: {
publicKey: string;
algorithm: string;
verified: boolean;
signedAt?: string;
};
/** The signed tier-1 batch envelope, when the serving node publishes it.
* This — not the bare batch_root — is what the ML-DSA signature covers. */
tier1?: {
envelope: {
rubric_version: string;
attestation_type: string;
batch_root: string;
batch_size: number;
flush_id: string;
issuer_node_region: string;
issued_at: string;
};
signature?: string;
publicKey?: string;
};
stub?: {
leafMessage?: Record<string, unknown>;
[k: string]: unknown;
};
anchors: Anchors;

@@ -117,0 +151,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}

@@ -127,3 +127,3 @@ "use strict";

const sinks = attestations.filter((a) => !parentIds.has(a.attestation_id));
let tail = sinks.length === 1 ? sinks[0].attestation_id : null;
const tail = sinks.length === 1 ? sinks[0].attestation_id : null;
if (sinks.length > 1) {

@@ -130,0 +130,0 @@ findings.push({ type: 'gap', detail: `ambiguous tail: ${sinks.length} sinks (no single final decision): ${sinks.map((x) => x.attestation_id).join(', ')}` });

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-chain.js","sourceRoot":"","sources":["../../src/verify-chain.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"verify-chain.js","sourceRoot":"","sources":["../../src/verify-chain.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-tiered.d.ts","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAsB,YAAY,CAChC,CAAC,EAAE,iBAAiB,EACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAgHvB"}
{"version":3,"file":"verify-tiered.d.ts","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAsB,YAAY,CAChC,CAAC,EAAE,iBAAiB,EACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAoLvB"}

@@ -18,2 +18,6 @@ "use strict";

const merkle_js_1 = require("./merkle.js");
const leaf_source_js_1 = require("./leaf-source.js");
const canonical_js_2 = require("./canonical.js");
const chain_merkle_js_1 = require("./chain-merkle.js");
const hcs_aggregate_js_1 = require("./anchors/hcs-aggregate.js");
const verify_direct_js_1 = require("./verify-direct.js");

@@ -24,10 +28,10 @@ async function verifyTiered(a, ta, access) {

/* §9.4.1 — Reconstruct Merkle root. */
const leafBytes = (0, merkle_js_1.merkleLeaf)((0, canonical_js_1.canonicalizeBytes)({
rubric_version: a.rubric_version,
attestation_type: a.attestation_type,
attestation_id: a.attestation_id,
issuer_node_region: a.issuer_node_region,
issued_at: a.issued_at,
payload: a.payload,
}));
// The producer adds optional siblings conditionally; carry through whatever
// this record has. A fixed key list here silently breaks every record that
// carries a key the list omits — see buildAttestationMessage.
const leafSource = (0, leaf_source_js_1.resolveLeafMessage)(a);
if (leafSource.error) {
failures.push(leafSource.error);
}
const leafBytes = (0, merkle_js_1.merkleLeaf)((0, canonical_js_1.canonicalizeBytes)(leafSource.message));
let merkleResult;

@@ -46,19 +50,43 @@ try {

}
/* §9.4.2 — Verify batch_root signature. */
let publicKey;
let signature;
let batchRootBytes;
try {
publicKey = (0, crypto_js_1.base64Decode)(a.publicKey);
signature = (0, crypto_js_1.hexDecode)(a.signature);
batchRootBytes = (0, crypto_js_1.hexDecode)(a.batch_root);
}
catch (e) {
failures.push(`malformed encoding: ${e.message}`);
/* §9.4.2 — Verify the signed batch ENVELOPE.
*
* The producer signs canonicalize(envelope) over seven keys, not the raw
* batch_root bytes (tiered-aggregator.ts: signCanonical(batchEnvelope)).
* Verifying over hexDecode(batch_root) checks bytes nobody ever signed. */
const env = a.tier1?.envelope;
if (!env) {
details.signature_valid = false;
return { verified: false, attestation_id: a.attestation_id, details, failures };
failures.push('record does not carry its signed tier-1 envelope (tier1.envelope), ' +
'so the batch signature cannot be checked');
}
details.signature_valid = (0, crypto_js_1.mlDsa65Verify)(publicKey, batchRootBytes, signature);
if (!details.signature_valid) {
failures.push('Batch root signature verification failed');
else {
// Bind the envelope to this record before trusting it — otherwise a valid
// signature over some OTHER batch would pass. Mirrors the bundleBinding
// check in the server's tiered-verify.
const bound = env.batch_root === a.batch_root &&
env.batch_size === a.batch_size &&
env.issued_at === a.issued_at &&
env.issuer_node_region === a.issuer_node_region;
if (!bound) {
details.signature_valid = false;
failures.push('signed envelope does not bind to this record (root/size/time/region mismatch)');
}
else {
let publicKey;
let signature;
try {
publicKey = (0, crypto_js_1.base64Decode)(a.tier1?.publicKey ?? a.publicKey);
signature = (0, crypto_js_1.hexDecode)(a.tier1?.signature ?? a.signature);
}
catch (e) {
failures.push(`malformed encoding: ${e.message}`);
details.signature_valid = false;
return { verified: false, attestation_id: a.attestation_id, details, failures };
}
const envBytes = new TextEncoder().encode((0, canonical_js_2.canonicalize)(env));
details.signature_valid = (0, crypto_js_1.mlDsa65Verify)(publicKey, envBytes, signature);
if (!details.signature_valid) {
failures.push('batch envelope signature verification failed');
}
}
}

@@ -85,7 +113,46 @@ /* §9.4.3 — Verify publicKey is in trust anchor. */

});
details.hcs_anchor_confirmed =
hcs !== null && (0, crypto_js_1.hexEqual)(hcs.payload_hash, a.batch_root);
if (!details.hcs_anchor_confirmed) {
failures.push('HCS anchor mismatch with batch_root');
/* A tiered record is not on HCS individually. What is on the topic is the
* tier-2 aggregate envelope, reachable only by sequence number. Reconstruct:
* aggregate leaf = DOCUMENT_HASH{forestRoot: batch_root, itemCount}
* tree root = single-leaf tree over it
* aggregateRoot = self-pair wrap of that root
* confirmed against seq 287406 before this was written. */
const seq = a.anchors.hcs.sequence_number;
const agg = typeof seq === 'number' && seq > 0
? await (0, hcs_aggregate_js_1.fetchHcsAggregate)({
hederaMirror: access.hederaMirror,
topicId: a.anchors.hcs.topic_id,
sequenceNumber: seq,
fetchImpl: access.fetch,
timeoutMs: access.timeoutMs,
})
: null;
if (!agg) {
details.hcs_anchor_confirmed = false;
failures.push(`tier-2 aggregate anchor not retrievable (topic ${a.anchors.hcs.topic_id} ` +
`sequence ${String(seq)})`);
}
else if (agg.tier1Count === 1) {
const leafDigest = (0, chain_merkle_js_1.chainLeafDigest)('DOCUMENT_HASH', {
forestRoot: a.batch_root,
itemCount: a.batch_size,
});
const treeRoot = (0, chain_merkle_js_1.buildChainTree)([leafDigest]).root;
const reconstructed = (0, chain_merkle_js_1.chainForestWrap)(treeRoot);
details.hcs_anchor_confirmed = reconstructed === agg.aggregateRoot;
if (!details.hcs_anchor_confirmed) {
failures.push(`batch_root does not reconstruct to the anchored aggregateRoot ` +
`(computed ${reconstructed.slice(0, 16)}…, anchored ${agg.aggregateRoot.slice(0, 16)}…)`);
}
}
else {
// The aggregate tree held more than one tier-1 flush. Its sibling roots are
// not published in this record, so the walk cannot be completed by a third
// party. Say so rather than returning a verdict the evidence cannot carry.
Reflect.deleteProperty(details, 'hcs_anchor_confirmed');
failures.push(`aggregate inclusion INDETERMINATE: the anchor at sequence ${String(seq)} ` +
`covers ${String(agg.tier1Count)} tier-1 flushes and this record does not ` +
`carry the aggregate proof path, so batch_root cannot be walked to ` +
`aggregateRoot independently`);
}
/* Layer 2 — suite downgrade defense (consensus-time cross-check). */

@@ -92,0 +159,0 @@ const l2 = (0, verify_direct_js_1.checkConsensusSuiteWindow)(ta, hcs, details);

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-tiered.js","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"verify-tiered.js","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"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"}

@@ -11,3 +11,3 @@ #!/usr/bin/env node

* --anchor <url|file> trust anchor source (default: https://rubric-protocol.com/trust-anchor.json)
* --api <base-url> attestation retrieval API (default: https://us.rubric-protocol.com)
* --api <base-url> attestation retrieval API (default: https://rubric-protocol.com)
* --allow-single-anchor accept HCS-only anchoring explicitly

@@ -25,3 +25,6 @@ *

const DEFAULT_ANCHOR = 'https://rubric-protocol.com/trust-anchor.json';
const DEFAULT_API = 'https://us.rubric-protocol.com';
// The apex fans out to peer nodes (since 2026-08-12), so it resolves records
// served by any region. Pinning us. here meant an sg/jp/ca/eu attestation was
// simply not found, independent of whether it was valid.
const DEFAULT_API = 'https://rubric-protocol.com';
function usage() {

@@ -28,0 +31,0 @@ process.stderr.write('usage: rubric-verify <attestation-id | attestation.json> ' +

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}

@@ -6,6 +6,6 @@ /**

* - Hash function: SHA-256 (spec §4.1).
* - Leaf: leaf_i = SHA-256(canonical_message_i) (§7.1)
* - Leaf: leaf_i = SHA-256(0x00 || canonical_message_i) (§7.1)
* - Internal: internal(L, R) = SHA-256(0x01 || L || R) (§7.2)
* where 0x01 is a domain separator distinguishing internal
* nodes from leaves (which use no prefix).
* where 0x00 and 0x01 are RFC 6962 domain separators that
* keep leaf and internal-node hashes in disjoint spaces.
* - Tree shape: binary, balanced, depth 20 (max 2^20 leaves);

@@ -27,6 +27,9 @@ * odd levels are right-padded by duplicating the last leaf.

/**
* Compute a leaf hash: SHA-256(canonical_message_bytes).
* Compute a leaf hash: SHA-256(0x00 || canonical_message_bytes).
*
* The leaf has no domain separator prefix, distinguishing it from an internal
* node (spec §7.2).
* Confirmed against live records rather than the draft: for attestation
* eb7310f4 the unprefixed digest is d2319dec..., which is that record's
* payload_hash, while the 0x00-prefixed digest is 836939c0... -- its
* batch_root, and the value actually anchored on HCS. The producer and
* constructions.json both tag the leaf; verify-spec v1.0.0 §7.1 is wrong.
*/

@@ -33,0 +36,0 @@ export declare function merkleLeaf(canonicalMessageBytes: Uint8Array): Uint8Array;

@@ -1,1 +0,1 @@

{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,qBAAqB,EAAE,UAAU,GAAG,UAAU,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB1C"}
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAUlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,qBAAqB,EAAE,UAAU,GAAG,UAAU,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB1C"}

@@ -6,6 +6,6 @@ /**

* - Hash function: SHA-256 (spec §4.1).
* - Leaf: leaf_i = SHA-256(canonical_message_i) (§7.1)
* - Leaf: leaf_i = SHA-256(0x00 || canonical_message_i) (§7.1)
* - Internal: internal(L, R) = SHA-256(0x01 || L || R) (§7.2)
* where 0x01 is a domain separator distinguishing internal
* nodes from leaves (which use no prefix).
* where 0x00 and 0x01 are RFC 6962 domain separators that
* keep leaf and internal-node hashes in disjoint spaces.
* - Tree shape: binary, balanced, depth 20 (max 2^20 leaves);

@@ -22,4 +22,7 @@ * odd levels are right-padded by duplicating the last leaf.

import { sha256, hexDecode, hexEncode, hexEqual, concatBytes3 } from './crypto.js';
/** Domain separator byte for leaves (RFC 6962). */
const LEAF_NODE_PREFIX = new Uint8Array([0x00]);
/** Domain separator byte for internal nodes (spec §7.2). */
const INTERNAL_NODE_PREFIX = new Uint8Array([0x01]);
const EMPTY = new Uint8Array(0);
/**

@@ -32,9 +35,12 @@ * Compute an internal Merkle node: SHA-256(0x01 || left || right).

/**
* Compute a leaf hash: SHA-256(canonical_message_bytes).
* Compute a leaf hash: SHA-256(0x00 || canonical_message_bytes).
*
* The leaf has no domain separator prefix, distinguishing it from an internal
* node (spec §7.2).
* Confirmed against live records rather than the draft: for attestation
* eb7310f4 the unprefixed digest is d2319dec..., which is that record's
* payload_hash, while the 0x00-prefixed digest is 836939c0... -- its
* batch_root, and the value actually anchored on HCS. The producer and
* constructions.json both tag the leaf; verify-spec v1.0.0 §7.1 is wrong.
*/
export function merkleLeaf(canonicalMessageBytes) {
return sha256(canonicalMessageBytes);
return sha256(concatBytes3(LEAF_NODE_PREFIX, canonicalMessageBytes, EMPTY));
}

@@ -41,0 +47,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnF,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,KAAiB;IAChE,OAAO,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,qBAAiC;IAC1D,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,KAAe,EACf,UAA6B,EAC7B,YAAoB;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;QAC3C,YAAY;KACb,CAAC;AACJ,CAAC"}
{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnF,mDAAmD;AACnD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB,EAAE,KAAiB;IAChE,OAAO,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,qBAAiC;IAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,KAAe,EACf,UAA6B,EAC7B,YAAoB;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;QAC3C,YAAY;KACb,CAAC;AACJ,CAAC"}

@@ -115,2 +115,36 @@ /**

signature: string;
/** Optional model reference (§5.6); signed sibling of payload when present. */
model_ref?: Record<string, unknown>;
/** Optional compliance reference (§5.7); signed sibling of payload when present. */
compliance_ref?: Record<string, unknown>;
/**
* Present only when the submitter signed the payload with its own key AND
* that signature verified at ingest. Hashed INTO the leaf: a verifier that
* omits it computes a different leaf for every client-signed record.
*/
client_attestation?: {
publicKey: string;
algorithm: string;
verified: boolean;
signedAt?: string;
};
/** The signed tier-1 batch envelope, when the serving node publishes it.
* This — not the bare batch_root — is what the ML-DSA signature covers. */
tier1?: {
envelope: {
rubric_version: string;
attestation_type: string;
batch_root: string;
batch_size: number;
flush_id: string;
issuer_node_region: string;
issued_at: string;
};
signature?: string;
publicKey?: string;
};
stub?: {
leafMessage?: Record<string, unknown>;
[k: string]: unknown;
};
anchors: Anchors;

@@ -117,0 +151,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1D,oDAAoD;AACpD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEvF,iDAAiD;AACjD,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,8BAA8B;AAC9B,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEzC,qEAAqE;AACrE;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,UAAU,CAAC;IACjC,YAAY,EAAE,iBAAiB,GAAG,cAAc,GAAG,iBAAiB,CAAC;CACtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,UAAU,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;IACnG,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,eAAe,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,UAAU,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,oFAAoF;IACpF,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,wFAAwF;IACxF,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,gBAAgB,EAAE,QAAQ,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,+EAA+E;IAC/E,uBAAuB,EAAE,eAAe,EAAE,CAAC;IAC3C,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+FAA+F;AAC/F,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,gBAAgB,EAAE,WAAW,CAAC;IAC9B,sDAAsD;IACtD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,gEAAgE;IAChE,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,UAAU,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,4BAA4B,CAAC;AAEtH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,EAAE;QACV,oBAAoB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,oBAAoB,EAAE,MAAM,CAAC;QAC7B,4CAA4C;QAC5C,gBAAgB,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,sBAAsB,EAAE,MAAM,CAAC;QAC/B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,qEAAqE;IACrE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sFAAsF;IACtF,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,2FAA2F;IAC3F,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,kHAAkH;IAClH,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,0FAA0F;IAC1F,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,OAAO,EAAE,aAAa,CAAC;IACvB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB;;;;OAIG;IACH,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACzC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mHAAmH;IACnH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,sEAAsE;IACtE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,GAAG,CAAC,EAAE,OAAO,CAAC;CACf"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}

@@ -124,3 +124,3 @@ /**

const sinks = attestations.filter((a) => !parentIds.has(a.attestation_id));
let tail = sinks.length === 1 ? sinks[0].attestation_id : null;
const tail = sinks.length === 1 ? sinks[0].attestation_id : null;
if (sinks.length > 1) {

@@ -127,0 +127,0 @@ findings.push({ type: 'gap', detail: `ambiguous tail: ${sinks.length} sinks (no single final decision): ${sinks.map((x) => x.attestation_id).join(', ')}` });

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-chain.js","sourceRoot":"","sources":["../../src/verify-chain.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"verify-chain.js","sourceRoot":"","sources":["../../src/verify-chain.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-tiered.d.ts","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAsB,YAAY,CAChC,CAAC,EAAE,iBAAiB,EACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAgHvB"}
{"version":3,"file":"verify-tiered.d.ts","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAsB,YAAY,CAChC,CAAC,EAAE,iBAAiB,EACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAoLvB"}

@@ -15,2 +15,6 @@ /**

import { merkleLeaf, verifyMerkleProof } from './merkle.js';
import { resolveLeafMessage } from './leaf-source.js';
import { canonicalize } from './canonical.js';
import { chainLeafDigest, buildChainTree, chainForestWrap } from './chain-merkle.js';
import { fetchHcsAggregate } from './anchors/hcs-aggregate.js';
import { computeAnchorOk, checkConsensusSuiteWindow } from './verify-direct.js';

@@ -21,10 +25,10 @@ export async function verifyTiered(a, ta, access) {

/* §9.4.1 — Reconstruct Merkle root. */
const leafBytes = merkleLeaf(canonicalizeBytes({
rubric_version: a.rubric_version,
attestation_type: a.attestation_type,
attestation_id: a.attestation_id,
issuer_node_region: a.issuer_node_region,
issued_at: a.issued_at,
payload: a.payload,
}));
// The producer adds optional siblings conditionally; carry through whatever
// this record has. A fixed key list here silently breaks every record that
// carries a key the list omits — see buildAttestationMessage.
const leafSource = resolveLeafMessage(a);
if (leafSource.error) {
failures.push(leafSource.error);
}
const leafBytes = merkleLeaf(canonicalizeBytes(leafSource.message));
let merkleResult;

@@ -43,19 +47,43 @@ try {

}
/* §9.4.2 — Verify batch_root signature. */
let publicKey;
let signature;
let batchRootBytes;
try {
publicKey = base64Decode(a.publicKey);
signature = hexDecode(a.signature);
batchRootBytes = hexDecode(a.batch_root);
}
catch (e) {
failures.push(`malformed encoding: ${e.message}`);
/* §9.4.2 — Verify the signed batch ENVELOPE.
*
* The producer signs canonicalize(envelope) over seven keys, not the raw
* batch_root bytes (tiered-aggregator.ts: signCanonical(batchEnvelope)).
* Verifying over hexDecode(batch_root) checks bytes nobody ever signed. */
const env = a.tier1?.envelope;
if (!env) {
details.signature_valid = false;
return { verified: false, attestation_id: a.attestation_id, details, failures };
failures.push('record does not carry its signed tier-1 envelope (tier1.envelope), ' +
'so the batch signature cannot be checked');
}
details.signature_valid = mlDsa65Verify(publicKey, batchRootBytes, signature);
if (!details.signature_valid) {
failures.push('Batch root signature verification failed');
else {
// Bind the envelope to this record before trusting it — otherwise a valid
// signature over some OTHER batch would pass. Mirrors the bundleBinding
// check in the server's tiered-verify.
const bound = env.batch_root === a.batch_root &&
env.batch_size === a.batch_size &&
env.issued_at === a.issued_at &&
env.issuer_node_region === a.issuer_node_region;
if (!bound) {
details.signature_valid = false;
failures.push('signed envelope does not bind to this record (root/size/time/region mismatch)');
}
else {
let publicKey;
let signature;
try {
publicKey = base64Decode(a.tier1?.publicKey ?? a.publicKey);
signature = hexDecode(a.tier1?.signature ?? a.signature);
}
catch (e) {
failures.push(`malformed encoding: ${e.message}`);
details.signature_valid = false;
return { verified: false, attestation_id: a.attestation_id, details, failures };
}
const envBytes = new TextEncoder().encode(canonicalize(env));
details.signature_valid = mlDsa65Verify(publicKey, envBytes, signature);
if (!details.signature_valid) {
failures.push('batch envelope signature verification failed');
}
}
}

@@ -82,7 +110,46 @@ /* §9.4.3 — Verify publicKey is in trust anchor. */

});
details.hcs_anchor_confirmed =
hcs !== null && hexEqual(hcs.payload_hash, a.batch_root);
if (!details.hcs_anchor_confirmed) {
failures.push('HCS anchor mismatch with batch_root');
/* A tiered record is not on HCS individually. What is on the topic is the
* tier-2 aggregate envelope, reachable only by sequence number. Reconstruct:
* aggregate leaf = DOCUMENT_HASH{forestRoot: batch_root, itemCount}
* tree root = single-leaf tree over it
* aggregateRoot = self-pair wrap of that root
* confirmed against seq 287406 before this was written. */
const seq = a.anchors.hcs.sequence_number;
const agg = typeof seq === 'number' && seq > 0
? await fetchHcsAggregate({
hederaMirror: access.hederaMirror,
topicId: a.anchors.hcs.topic_id,
sequenceNumber: seq,
fetchImpl: access.fetch,
timeoutMs: access.timeoutMs,
})
: null;
if (!agg) {
details.hcs_anchor_confirmed = false;
failures.push(`tier-2 aggregate anchor not retrievable (topic ${a.anchors.hcs.topic_id} ` +
`sequence ${String(seq)})`);
}
else if (agg.tier1Count === 1) {
const leafDigest = chainLeafDigest('DOCUMENT_HASH', {
forestRoot: a.batch_root,
itemCount: a.batch_size,
});
const treeRoot = buildChainTree([leafDigest]).root;
const reconstructed = chainForestWrap(treeRoot);
details.hcs_anchor_confirmed = reconstructed === agg.aggregateRoot;
if (!details.hcs_anchor_confirmed) {
failures.push(`batch_root does not reconstruct to the anchored aggregateRoot ` +
`(computed ${reconstructed.slice(0, 16)}…, anchored ${agg.aggregateRoot.slice(0, 16)}…)`);
}
}
else {
// The aggregate tree held more than one tier-1 flush. Its sibling roots are
// not published in this record, so the walk cannot be completed by a third
// party. Say so rather than returning a verdict the evidence cannot carry.
Reflect.deleteProperty(details, 'hcs_anchor_confirmed');
failures.push(`aggregate inclusion INDETERMINATE: the anchor at sequence ${String(seq)} ` +
`covers ${String(agg.tier1Count)} tier-1 flushes and this record does not ` +
`carry the aggregate proof path, so batch_root cannot be walked to ` +
`aggregateRoot independently`);
}
/* Layer 2 — suite downgrade defense (consensus-time cross-check). */

@@ -89,0 +156,0 @@ const l2 = checkConsensusSuiteWindow(ta, hcs, details);

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-tiered.js","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAShF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,CAAoB,EACpB,EAAe,EACf,MAA8B;IAE9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,uCAAuC;IACvC,MAAM,SAAS,GAAG,UAAU,CAC1B,iBAAiB,CAAC;QAChB,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC,CACH,CAAC;IAEF,IAAI,YAAkD,CAAC;IACvD,IAAI,CAAC;QACH,YAAY,GAAG,iBAAiB,CAC9B,SAAS,EACT,CAAC,CAAC,YAAY,EACd,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,UAAU,CACb,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,2BAA4B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,CAAC,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;IAChD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACnE,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAqB,CAAC;IAC1B,IAAI,SAAqB,CAAC;IAC1B,IAAI,cAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,uBAAwB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;QAChC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAC9E,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IAED,mDAAmD;IACnD,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC7E,OAAO,CAAC,+BAA+B,GAAG,WAAW,KAAK,CAAC,CAAC,SAAS,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACzD,CAAC;IAED,iDAAiD;IACjD,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;QAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;QACzB,QAAQ,EAAE;YACR,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;YACxC,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB;QACD,SAAS,EAAE,MAAM,CAAC,KAAK;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IACH,OAAO,CAAC,oBAAoB;QAC1B,GAAG,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IAED,qEAAqE;IACrE,MAAM,EAAE,GAAG,yBAAyB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,eAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe;QACxC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;QAC9B,SAAS,EAAE,MAAM,CAAC,KAAK;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IACH,OAAO,CAAC,qBAAqB;QAC3B,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC9D,CAAC;IAED,sBAAsB;IACtB,MAAM,QAAQ,GACZ,CAAC,CAAC,OAAO,CAAC,kBAAkB;QAC5B,CAAC,CAAC,OAAO,CAAC,eAAe;QACzB,CAAC,CAAC,OAAO,CAAC,+BAA+B;QACzC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC;QAClD,CAAC,EAAE,CAAC;IAEN,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC3E,CAAC"}
{"version":3,"file":"verify-tiered.js","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"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"}

@@ -6,6 +6,6 @@ /**

* - Hash function: SHA-256 (spec §4.1).
* - Leaf: leaf_i = SHA-256(canonical_message_i) (§7.1)
* - Leaf: leaf_i = SHA-256(0x00 || canonical_message_i) (§7.1)
* - Internal: internal(L, R) = SHA-256(0x01 || L || R) (§7.2)
* where 0x01 is a domain separator distinguishing internal
* nodes from leaves (which use no prefix).
* where 0x00 and 0x01 are RFC 6962 domain separators that
* keep leaf and internal-node hashes in disjoint spaces.
* - Tree shape: binary, balanced, depth 20 (max 2^20 leaves);

@@ -27,6 +27,9 @@ * odd levels are right-padded by duplicating the last leaf.

/**
* Compute a leaf hash: SHA-256(canonical_message_bytes).
* Compute a leaf hash: SHA-256(0x00 || canonical_message_bytes).
*
* The leaf has no domain separator prefix, distinguishing it from an internal
* node (spec §7.2).
* Confirmed against live records rather than the draft: for attestation
* eb7310f4 the unprefixed digest is d2319dec..., which is that record's
* payload_hash, while the 0x00-prefixed digest is 836939c0... -- its
* batch_root, and the value actually anchored on HCS. The producer and
* constructions.json both tag the leaf; verify-spec v1.0.0 §7.1 is wrong.
*/

@@ -33,0 +36,0 @@ export declare function merkleLeaf(canonicalMessageBytes: Uint8Array): Uint8Array;

@@ -1,1 +0,1 @@

{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,qBAAqB,EAAE,UAAU,GAAG,UAAU,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB1C"}
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAUlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,qBAAqB,EAAE,UAAU,GAAG,UAAU,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB1C"}

@@ -115,2 +115,36 @@ /**

signature: string;
/** Optional model reference (§5.6); signed sibling of payload when present. */
model_ref?: Record<string, unknown>;
/** Optional compliance reference (§5.7); signed sibling of payload when present. */
compliance_ref?: Record<string, unknown>;
/**
* Present only when the submitter signed the payload with its own key AND
* that signature verified at ingest. Hashed INTO the leaf: a verifier that
* omits it computes a different leaf for every client-signed record.
*/
client_attestation?: {
publicKey: string;
algorithm: string;
verified: boolean;
signedAt?: string;
};
/** The signed tier-1 batch envelope, when the serving node publishes it.
* This — not the bare batch_root — is what the ML-DSA signature covers. */
tier1?: {
envelope: {
rubric_version: string;
attestation_type: string;
batch_root: string;
batch_size: number;
flush_id: string;
issuer_node_region: string;
issued_at: string;
};
signature?: string;
publicKey?: string;
};
stub?: {
leafMessage?: Record<string, unknown>;
[k: string]: unknown;
};
anchors: Anchors;

@@ -117,0 +151,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"verify-tiered.d.ts","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAsB,YAAY,CAChC,CAAC,EAAE,iBAAiB,EACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAgHvB"}
{"version":3,"file":"verify-tiered.d.ts","sourceRoot":"","sources":["../../src/verify-tiered.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAsB,YAAY,CAChC,CAAC,EAAE,iBAAiB,EACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAoLvB"}
{
"name": "@rubric-protocol/verify",
"version": "2.0.0",
"version": "2.1.0",
"description": "Reference TypeScript implementation of the Rubric Attestation Verification Specification v1.0.0",

@@ -5,0 +5,0 @@ "license": "Apache-2.0",