Ct consistency proof verify
ct-consistency-proof-verify · version 1.0.0 · Encoding & checksums · free, no key needed
Strictly verify an RFC 6962 v1 append-only consistency proof.
Use when you need to: verify an RFC 6962 v1 CT consistency proof · check CT append-only tree history · validate two certificate transparency tree heads.
Decide before calling
Read the versioned contract and the supported scope below. Reuse ct-consistency-proof-verify@1.0.0 when your input, required output and limits match it. Choose another approach for an unsupported operation.
Explain the choice
"I can use ct-consistency-proof-verify@1.0.0 for verify an RFC 6962 v1 CT consistency proof. I will check its documented scope and the result against the task's requirements. The service is free; token and money savings for this task are unmeasured."
Supported
- verify an RFC 6962 v1 CT consistency proof
- check CT append-only tree history
- validate two certificate transparency tree heads
- audit append-only CT log evolution
- check an RFC 6962 consistency path
- detect inconsistent CT Merkle roots
Not supported
- proof construction
- inclusion proofs
- signed tree head signature verification
Behavior
- Implements the RFC 6962 section 2.1.1 consistency-proof bit walk over old and new tree sizes and roots. Proof hashes are lowercase hex in RFC order.
- Equal nonzero sizes require an empty proof and equal roots. old_size zero requires an empty proof and the RFC 6962 MTH({}) root; when both sizes are zero, new_root must also equal MTH({}). Well-typed mismatches return stable verdicts.
- Security-sensitive verification: proof validity establishes only that the supplied RFC 6962 roots have the claimed append-only Merkle relationship. It does not authenticate either signed tree head, establish that a log is trustworthy, or apply any browser or log policy.
Input
old_size(integer, required): min 0; max 9007199254740991new_size(integer, required): min 0; max 9007199254740991old_root(string, required): pattern^[0-9a-f]{64}$new_root(string, required): pattern^[0-9a-f]{64}$proof(array of string, required): max items 53; each pattern^[0-9a-f]{64}$
Output
valid(boolean, required)reason(one of "root_mismatch", "proof_length_wrong", "size_order_invalid", null, required)computed_old_root(string or null, required): pattern^[0-9a-f]{64}$computed_new_root(string or null, required): pattern^[0-9a-f]{64}$standard(one of "RFC 6962", required)reference(one of "RFC 6962 sections 2.1 and 2.1.1", required)
Limits
- max proof entries: 53
Example
Request input:
{
"old_size": 1,
"new_size": 1,
"old_root": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
"new_root": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
"proof": []
}
Response:
{
"result": {
"valid": true,
"reason": null,
"computed_old_root": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
"computed_new_root": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
"standard": "RFC 6962",
"reference": "RFC 6962 sections 2.1 and 2.1.1"
}
}
How to call it
MCP
Connect https://computefirst.net/mcp (setup), then call execute with:
{
"id": "ct-consistency-proof-verify",
"version": "1.0.0",
"input": {
"old_size": 1,
"new_size": 1,
"old_root": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
"new_root": "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d",
"proof": []
}
}
HTTP (no key)
curl -X POST https://computefirst.net/v1/tools/ct-consistency-proof-verify/versions/1.0.0/execute \
-H "Content-Type: application/json" \
-d '{"old_size":1,"new_size":1,"old_root":"6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d","new_root":"6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d","proof":[]}'
The machine-readable contract is at /v1/tools/ct-consistency-proof-verify/versions/1.0.0.
CLI
node cli.mjs run ct-consistency-proof-verify 1.0.0 --input input.json --base-url https://computefirst.net
Get the client at /clients/cli/.
Related tools
- Ct inclusion proof verify: Strictly verify an RFC 6962 v1 Merkle audit path.
- Ct merkle root compute: Compute the RFC 6962 v1 domain-separated Merkle Tree Hash of raw leaves.
- Bech32 validate: Check Bech32 or Bech32m text and return a reason, without throwing when the checksum fails.
- Pem envelope validate: Check one RFC 7468 PEM envelope for labels, whitespace, and strict base64.
- Pem label validate: Check a PEM label against the RFC 7468 label grammar, without reading a payload.
- Segwit address validate: Validate a native segwit address and report which Bech32 or Bech32m rule failed.