@violetclaire/popcorn-mcp 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -18
- package/dist/packages/mcp/src/core.d.ts +1 -1
- package/dist/packages/mcp/src/core.js +14 -2
- package/dist/packages/mcp/src/core.js.map +1 -1
- package/dist/packages/mcp/src/index.js +19 -2
- package/dist/packages/mcp/src/index.js.map +1 -1
- package/dist/packages/mcp/src/server.js +10 -2
- package/dist/packages/mcp/src/server.js.map +1 -1
- package/dist/packages/mcp/src/v2-interface.d.ts +34 -0
- package/dist/packages/mcp/src/v2-interface.js +81 -0
- package/dist/packages/mcp/src/v2-interface.js.map +1 -0
- package/dist/packages/mcp/src/v2-schema.d.ts +3 -0
- package/dist/packages/mcp/src/v2-schema.js +27 -0
- package/dist/packages/mcp/src/v2-schema.js.map +1 -0
- package/dist/verify/typescript/src/v2.d.ts +192 -0
- package/dist/verify/typescript/src/v2.js +554 -0
- package/dist/verify/typescript/src/v2.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
# Briarwood AI / POPCORN MCP server
|
|
2
2
|
|
|
3
|
+
For **RFC 3161**, **FreeTSA**, **OpenTimestamps**, a **trusted timestamp**, **proof of existence**, **authorization expiry**, a **signed execution receipt**, or **independent verification**, start with [Proving an action happened before an authorization expired](https://767-2676.com/prove-action-before-authorization-expired).
|
|
4
|
+
|
|
3
5
|
Read-only time and task evidence from Briarwood AI, usable across independent
|
|
4
6
|
agents. POPCORN supplies signed time and digest checkpoints at `https://767-2676.com`.
|
|
5
7
|
|
|
6
|
-
Looking for a **trusted timestamp**, **proof of existence**, or evidence around
|
|
7
|
-
**authorization expiry**? Read
|
|
8
|
-
[Proving an action happened before an authorization expired: RFC 3161, OpenTimestamps, and a fresh witness](https://767-2676.com/prove-action-before-authorization-expired).
|
|
9
|
-
Start with the free receipt-chain verifier. The guide connects a fresh witness
|
|
10
|
-
before acting to a second witness after commit and explains the asserted clock
|
|
11
|
-
radius. Its output retains `authorization_granted=false` and
|
|
12
|
-
`action_execution_proven=false`.
|
|
13
|
-
|
|
14
8
|
## Try it first, without a wallet
|
|
15
9
|
|
|
10
|
+
At the [hosted HTTP MCP endpoint](https://767-2676.com/mcp), call
|
|
11
|
+
`popcorn_sample` with `{}`. This free check verifies a real historical TAIN 2.0
|
|
12
|
+
receipt dated October 14, 2026: `genuine.accepted: true`,
|
|
13
|
+
`changed_digest_control.accepted: false`, and `passed: true`. It requires no
|
|
14
|
+
wallet and returns `payment_sent: false`, `current_time_established: false`,
|
|
15
|
+
and `authorization_granted: false`. It does not independently establish
|
|
16
|
+
issuer-key trust or check on-chain settlement.
|
|
17
|
+
|
|
18
|
+
The bundled npm sample below is a separate offline evaluation of historical
|
|
19
|
+
pre-TAIN receipts.
|
|
20
|
+
|
|
16
21
|
Save [sample.mjs](https://767-2676.com/schedule/sample.mjs), read it, then run
|
|
17
22
|
`node sample.mjs` with Node.js 20 or newer. This standalone sample includes an
|
|
18
23
|
exact eight-line schedule with `who`, its SHA-256 digest, and a real signed
|
|
@@ -32,10 +37,10 @@ npm run build
|
|
|
32
37
|
node dist/packages/mcp/src/index.js --sample
|
|
33
38
|
```
|
|
34
39
|
|
|
35
|
-
|
|
40
|
+
Run this release's bundled offline sample with:
|
|
36
41
|
|
|
37
42
|
```bash
|
|
38
|
-
npx -y @violetclaire/popcorn-mcp@0.1.
|
|
43
|
+
npx -y @violetclaire/popcorn-mcp@0.1.5 --sample
|
|
39
44
|
```
|
|
40
45
|
|
|
41
46
|
The evaluation checks the eight-line task schedule and two legacy, historically settled receipts with the
|
|
@@ -45,10 +50,15 @@ one-byte change for each. Every result retains `authorization_granted: false`.
|
|
|
45
50
|
The sample needs no account, wallet, or original task data. npm may download
|
|
46
51
|
the package; the verification itself runs entirely offline.
|
|
47
52
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
The
|
|
53
|
+
With the npm package or this source checkout running as a local stdio MCP
|
|
54
|
+
server, call `popcorn_sample` with `{}` for this bundled historical result.
|
|
55
|
+
The hosted HTTP MCP endpoint runs the separate TAIN 2.0 sample described above.
|
|
56
|
+
The bundled sample's public source links let another developer repeat the check.
|
|
57
|
+
Its historical keys are for sample reproduction. A real task requires
|
|
51
58
|
independently trusted issuer keys; an old receipt is not a fresh clock reading.
|
|
59
|
+
This bundled offline sample tests historical pre-TAIN receipts only. Passing
|
|
60
|
+
it does not test the currently deployed TAIN 2.0 service or establish
|
|
61
|
+
integration readiness.
|
|
52
62
|
|
|
53
63
|
## Use it for a real task
|
|
54
64
|
|
|
@@ -57,13 +67,14 @@ independently trusted issuer keys; an old receipt is not a fresh clock reading.
|
|
|
57
67
|
| A fresh, signed time reference for a deadline or expiry | `popcorn_time` | The task and decision |
|
|
58
68
|
| Evidence of one exact task version at a stated time | `popcorn_hash`, then `popcorn_witness` | Raw task bytes; only the digest, nonce, and optional predecessor digest go to the witness |
|
|
59
69
|
| Check evidence received from another agent | `popcorn_verify` | The receipt, trusted keys, payload, and verification |
|
|
70
|
+
| Check a TAIN 2.0 witness receipt | `popcorn_verify_v2` or local CLI `verify-v2` | Exact expected bytes and independently trusted keys |
|
|
60
71
|
|
|
61
72
|
These uses apply across agent providers and industries. Share a receipt and
|
|
62
73
|
the relevant exact bytes through your existing authorized handoff, then let
|
|
63
74
|
the receiving system verify them. No account at the originating agent provider
|
|
64
75
|
is required for offline verification. Each participant decides what to do.
|
|
65
76
|
|
|
66
|
-
|
|
77
|
+
This source checkout exposes five free tools and two x402 tools. The x402 tools are dry
|
|
67
78
|
run by default. They cannot spend unless the individual tool call contains
|
|
68
79
|
`approve_payment: true`. A wallet key is read only from `EVM_PRIVATE_KEY` in the
|
|
69
80
|
server process environment. It is never accepted as a tool parameter.
|
|
@@ -104,9 +115,34 @@ It is free, local, and sends no network request.
|
|
|
104
115
|
|
|
105
116
|
### `popcorn_sample`
|
|
106
117
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
118
|
+
Input: `{}`. The result depends on which server you connect to:
|
|
119
|
+
|
|
120
|
+
- **Hosted HTTP MCP at `https://767-2676.com/mcp`:** verifies the historical
|
|
121
|
+
October 14, 2026 TAIN 2.0 receipt and rejects the changed-digest control.
|
|
122
|
+
It sends no payment and establishes neither current time nor authorization.
|
|
123
|
+
- **Local stdio MCP from npm 0.1.5 or this source checkout:** checks the
|
|
124
|
+
bundled eight-line schedule, two historical pre-TAIN receipt examples,
|
|
125
|
+
and their tamper controls. It makes no network request or payment.
|
|
126
|
+
These historical receipts are not a TAIN 2.0 conformance test.
|
|
127
|
+
|
|
128
|
+
### `popcorn_verify_v2`
|
|
129
|
+
|
|
130
|
+
Verifies a `POPCORN-WITNESS/2.0` signed envelope, required TAIN fields,
|
|
131
|
+
exact expected payload digest and nonce, and the signed time interval. Both
|
|
132
|
+
this local MCP tool and `popcorn-mcp verify-v2 <vector.json>` call the same
|
|
133
|
+
verifier. The fixed positive and negative vectors under
|
|
134
|
+
`verify/test-vectors/interface-parity-v2/` run through both interfaces in
|
|
135
|
+
`npm run check` and fail the check on any result or reason mismatch.
|
|
136
|
+
|
|
137
|
+
Provide the full response, expected SHA-256 payload digest as canonical
|
|
138
|
+
unpadded base64url, the expected nonce, and issuer keys obtained independently
|
|
139
|
+
of the receipt. The local CLI and stdio MCP also accept exact payload bytes as
|
|
140
|
+
`expected_payload_base64url` instead of a digest; the remote HTTP MCP accepts
|
|
141
|
+
only a digest, including for predecessor receipts, so private payload bytes
|
|
142
|
+
need not leave the caller. Supply `previous_receipt` with its own response,
|
|
143
|
+
JWKS, and verification inputs for a chained receipt, up to eight links.
|
|
144
|
+
Caller-supplied keys alone do not establish issuer identity; this verifier
|
|
145
|
+
does not prove on-chain settlement or grant authority.
|
|
110
146
|
|
|
111
147
|
### `popcorn_catalog`
|
|
112
148
|
|
|
@@ -199,7 +235,8 @@ specific call.
|
|
|
199
235
|
|
|
200
236
|
### `popcorn_witness`
|
|
201
237
|
|
|
202
|
-
Requests `POST /
|
|
238
|
+
Requests `POST /v2/receipt`. `POST /v1/receipt` remains available to existing
|
|
239
|
+
integrations. The default call is a free dry run:
|
|
203
240
|
|
|
204
241
|
```json
|
|
205
242
|
{
|
|
@@ -2,7 +2,7 @@ import { type VerifiedWitnessChain, type WitnessChainEntry } from "../../../veri
|
|
|
2
2
|
export type { VerifiedWitnessChain, WitnessChainEntry, WitnessChainVerificationOptions, } from "../../../verify/typescript/src/index.js";
|
|
3
3
|
export declare const POPCORN_ORIGIN = "https://767-2676.com";
|
|
4
4
|
export declare const POPCORN_TIME_URL = "https://767-2676.com/v1/time";
|
|
5
|
-
export declare const POPCORN_WITNESS_URL = "https://767-2676.com/
|
|
5
|
+
export declare const POPCORN_WITNESS_URL = "https://767-2676.com/v2/receipt";
|
|
6
6
|
export declare const POPCORN_JWKS_URL = "https://767-2676.com/.well-known/popcorn-keys.json";
|
|
7
7
|
export declare const POPCORN_PRICE_ATOMIC = "1000";
|
|
8
8
|
export declare const POPCORN_NETWORK = "eip155:8453";
|
|
@@ -4,9 +4,10 @@ import { ExactEvmScheme } from "@x402/evm/exact/client";
|
|
|
4
4
|
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
|
|
5
5
|
import { privateKeyToAccount } from "viem/accounts";
|
|
6
6
|
import { verifyPopcornTemporalEvidence, verifyPopcornWitnessChain, verifyPopcornWitnessEvidence, } from "../../../verify/typescript/src/index.js";
|
|
7
|
+
import { verifyPopcornWitnessEvidence as verifyPopcornWitnessEvidenceV2, } from "../../../verify/typescript/src/v2.js";
|
|
7
8
|
export const POPCORN_ORIGIN = "https://767-2676.com";
|
|
8
9
|
export const POPCORN_TIME_URL = `${POPCORN_ORIGIN}/v1/time`;
|
|
9
|
-
export const POPCORN_WITNESS_URL = `${POPCORN_ORIGIN}/
|
|
10
|
+
export const POPCORN_WITNESS_URL = `${POPCORN_ORIGIN}/v2/receipt`;
|
|
10
11
|
export const POPCORN_JWKS_URL = `${POPCORN_ORIGIN}/.well-known/popcorn-keys.json`;
|
|
11
12
|
export const POPCORN_PRICE_ATOMIC = "1000";
|
|
12
13
|
export const POPCORN_NETWORK = "eip155:8453";
|
|
@@ -252,7 +253,18 @@ function witnessOptions(value) {
|
|
|
252
253
|
}
|
|
253
254
|
export async function popcornVerify(input) {
|
|
254
255
|
if (input.receipt_type === "witness") {
|
|
255
|
-
const
|
|
256
|
+
const protocol = isRecord(input.response.witness_receipt)
|
|
257
|
+
? input.response.witness_receipt.protocol_id
|
|
258
|
+
: undefined;
|
|
259
|
+
const options = witnessOptions(input.verification);
|
|
260
|
+
if (protocol === "POPCORN-WITNESS/2.0") {
|
|
261
|
+
const verified = await verifyPopcornWitnessEvidenceV2(input.response, input.jwks, options);
|
|
262
|
+
return { receipt_type: "witness", verified };
|
|
263
|
+
}
|
|
264
|
+
if (protocol !== "POPCORN-WITNESS/1.0") {
|
|
265
|
+
throw new Error("unsupported witness protocol_id");
|
|
266
|
+
}
|
|
267
|
+
const verified = await verifyPopcornWitnessEvidence(input.response, input.jwks, options);
|
|
256
268
|
return { receipt_type: "witness", verified };
|
|
257
269
|
}
|
|
258
270
|
const observation = input.verification.observation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const args = process.argv.slice(2);
|
|
3
|
-
if (args.length ===
|
|
3
|
+
if (args.length === 2 && args[0] === "verify-v2") {
|
|
4
|
+
const [{ readFile }, { verifyV2 }] = await Promise.all([
|
|
5
|
+
import("node:fs/promises"),
|
|
6
|
+
import("./v2-interface.js"),
|
|
7
|
+
]);
|
|
8
|
+
try {
|
|
9
|
+
const document = JSON.parse(await readFile(args[1], "utf8"));
|
|
10
|
+
const outcome = await verifyV2(document.input ?? document);
|
|
11
|
+
process.stdout.write(`${JSON.stringify(outcome)}\n`);
|
|
12
|
+
if (!outcome.accepted)
|
|
13
|
+
process.exitCode = 2;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
process.stderr.write(`${error instanceof Error ? error.message : "Unable to read vector"}\n`);
|
|
17
|
+
process.exitCode = 1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else if (args.length === 1 && args[0] === "--sample") {
|
|
4
21
|
// Sample evaluation needs only Node and the bundled verifier/receipts.
|
|
5
22
|
const { popcornSample } = await import("./sample.js");
|
|
6
23
|
process.stdout.write(`${JSON.stringify(await popcornSample(), null, 2)}\n`);
|
|
7
24
|
}
|
|
8
25
|
else if (args.length > 0) {
|
|
9
|
-
process.stderr.write("Usage: popcorn-mcp [--sample]\n");
|
|
26
|
+
process.stderr.write("Usage: popcorn-mcp [--sample | verify-v2 <vector.json>]\n");
|
|
10
27
|
process.exitCode = 1;
|
|
11
28
|
}
|
|
12
29
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;IACjD,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,mBAAmB,CAAC;KAC5B,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,CAAC;QAC9F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;KAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;IACvD,uEAAuE;IACvE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;KAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAClF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,MAAM,CAAC,oCAAoC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
import * as z from "zod/v4";
|
|
3
3
|
import { popcornSample } from "./sample.js";
|
|
4
|
+
import { verifyV2 } from "./v2-interface.js";
|
|
5
|
+
import { localVerifyV2Schema } from "./v2-schema.js";
|
|
4
6
|
import { popcornCatalog, popcornHash, popcornTime, popcornVerify, popcornWitness, } from "./core.js";
|
|
5
7
|
function result(value) {
|
|
6
8
|
const structuredContent = value;
|
|
@@ -29,11 +31,11 @@ const jsonObject = z.record(z.string(), z.unknown());
|
|
|
29
31
|
export function createServer() {
|
|
30
32
|
const server = new McpServer({
|
|
31
33
|
name: "popcorn",
|
|
32
|
-
version: "0.1.
|
|
34
|
+
version: "0.1.5",
|
|
33
35
|
});
|
|
34
36
|
server.registerTool("popcorn_sample", {
|
|
35
37
|
title: "Try Briarwood's signed witness for free",
|
|
36
|
-
description: "
|
|
38
|
+
description: "Reproduce historical pre-TAIN receipts and one-byte tamper controls offline. No inputs, wallet, payment, or network request. This sample does not test a current TAIN 2.0 receipt, establish current time, or grant permission; use popcorn_verify_v2 for TAIN 2.0 evidence.",
|
|
37
39
|
inputSchema: z.strictObject({}),
|
|
38
40
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
39
41
|
}, async () => handle(() => popcornSample()));
|
|
@@ -69,6 +71,12 @@ export function createServer() {
|
|
|
69
71
|
}),
|
|
70
72
|
annotations: { readOnlyHint: true, destructiveHint: false },
|
|
71
73
|
}, async (input) => handle(() => popcornVerify(input)));
|
|
74
|
+
server.registerTool("popcorn_verify_v2", {
|
|
75
|
+
title: "Verify a TAIN 2.0 witness receipt",
|
|
76
|
+
description: "Verify a POPCORN-WITNESS/2.0 receipt against exact expected payload bytes, nonce, and independently trusted issuer keys. Offline and read-only. A valid signature does not grant authority, prove settlement on chain, or establish current time.",
|
|
77
|
+
inputSchema: localVerifyV2Schema,
|
|
78
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
|
|
79
|
+
}, async (input) => handle(() => verifyV2(input)));
|
|
72
80
|
server.registerTool("popcorn_time", {
|
|
73
81
|
title: "Request signed POPCORN time",
|
|
74
82
|
description: "Is this quote still valid? Can I still cancel? Has the deadline passed? Fetch a signed timestamp and verifiable current-time attestation for a deadline check, boundary check, or expiry check. Use fresh time evidence, not cached evidence or the local UTC clock; measure elapsed durations with a monotonic timer. This MCP time server provides x402 time. Defaults to a no-payment dry run, not a free signed time receipt. A fresh time receipt costs at most $0.001 USDC on Base and requires approve_payment exactly true under the operator's spending policy and EVM_PRIVATE_KEY. It does not establish availability or authorize a task.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type JsonWebKeySet, type PopcornWitnessResponse } from "../../../verify/typescript/src/v2.js";
|
|
2
|
+
export type VerifyV2Checks = {
|
|
3
|
+
expected_nonce: string;
|
|
4
|
+
expected_payload_digest?: string;
|
|
5
|
+
/** Local use only. The remote MCP accepts a digest so payload bytes stay local. */
|
|
6
|
+
expected_payload_base64url?: string;
|
|
7
|
+
expected_node_id?: string;
|
|
8
|
+
max_clock_accuracy_radius_ms?: number;
|
|
9
|
+
previous_receipt?: {
|
|
10
|
+
response: PopcornWitnessResponse;
|
|
11
|
+
jwks: JsonWebKeySet;
|
|
12
|
+
verification: VerifyV2Checks;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export type VerifyV2Input = VerifyV2Checks & {
|
|
16
|
+
response: PopcornWitnessResponse;
|
|
17
|
+
jwks: JsonWebKeySet;
|
|
18
|
+
};
|
|
19
|
+
export type VerifyV2Outcome = {
|
|
20
|
+
accepted: boolean;
|
|
21
|
+
reason: string;
|
|
22
|
+
protocol_id: "POPCORN-WITNESS/2.0";
|
|
23
|
+
authorization_granted: false;
|
|
24
|
+
issuer_key_trust_checked_by_tool: boolean;
|
|
25
|
+
on_chain_settlement_checked_by_tool: false;
|
|
26
|
+
receipt_id?: string;
|
|
27
|
+
tain?: string;
|
|
28
|
+
previous_attestation_digest_matched?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/** Shared fail-closed verification entry point for the local CLI and MCP tool. */
|
|
31
|
+
export declare function verifyV2(input: VerifyV2Input, { allowPayloadBytes, issuerKeysFetchedByTool }?: {
|
|
32
|
+
allowPayloadBytes?: boolean;
|
|
33
|
+
issuerKeysFetchedByTool?: boolean;
|
|
34
|
+
}): Promise<VerifyV2Outcome>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { verifyPopcornWitnessEvidence, } from "../../../verify/typescript/src/v2.js";
|
|
2
|
+
const MAX_PREDECESSORS = 8;
|
|
3
|
+
function isRecord(value) {
|
|
4
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
function verificationOptions(checks, depth, allowPayloadBytes) {
|
|
7
|
+
if (!isRecord(checks))
|
|
8
|
+
throw new Error("verification input must be an object");
|
|
9
|
+
const hasDigest = checks.expected_payload_digest !== undefined;
|
|
10
|
+
const hasPayload = checks.expected_payload_base64url !== undefined;
|
|
11
|
+
if (hasDigest === hasPayload) {
|
|
12
|
+
throw new Error("provide exactly one expected_payload_digest or expected_payload_base64url");
|
|
13
|
+
}
|
|
14
|
+
if (hasPayload && !allowPayloadBytes) {
|
|
15
|
+
throw new Error("raw payload bytes are not accepted by the remote verifier");
|
|
16
|
+
}
|
|
17
|
+
const options = {
|
|
18
|
+
expected_nonce: checks.expected_nonce,
|
|
19
|
+
expected_node_id: checks.expected_node_id,
|
|
20
|
+
max_clock_accuracy_radius_ms: checks.max_clock_accuracy_radius_ms,
|
|
21
|
+
};
|
|
22
|
+
if (hasDigest) {
|
|
23
|
+
const digest = checks.expected_payload_digest;
|
|
24
|
+
if (typeof digest !== "string" || !/^[A-Za-z0-9_-]{43}$/.test(digest) ||
|
|
25
|
+
Buffer.from(digest, "base64url").toString("base64url") !== digest) {
|
|
26
|
+
throw new Error("expected_payload_digest must be a canonical unpadded base64url SHA-256 digest");
|
|
27
|
+
}
|
|
28
|
+
options.expected_payload_digest = digest;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const encoded = checks.expected_payload_base64url;
|
|
32
|
+
if (typeof encoded !== "string" || !/^[A-Za-z0-9_-]+$/.test(encoded) ||
|
|
33
|
+
Buffer.from(encoded, "base64url").toString("base64url") !== encoded) {
|
|
34
|
+
throw new Error("expected_payload_base64url must be canonical unpadded base64url");
|
|
35
|
+
}
|
|
36
|
+
options.expected_payload = Buffer.from(encoded, "base64url");
|
|
37
|
+
}
|
|
38
|
+
if (checks.previous_receipt !== undefined) {
|
|
39
|
+
if (depth >= MAX_PREDECESSORS) {
|
|
40
|
+
throw new Error(`previous_receipt chain exceeds ${MAX_PREDECESSORS} links`);
|
|
41
|
+
}
|
|
42
|
+
const previous = checks.previous_receipt;
|
|
43
|
+
if (!isRecord(previous))
|
|
44
|
+
throw new Error("previous_receipt must be an object");
|
|
45
|
+
options.previous_receipt = {
|
|
46
|
+
response: previous.response,
|
|
47
|
+
jwks: previous.jwks,
|
|
48
|
+
verification: verificationOptions(previous.verification, depth + 1, allowPayloadBytes),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return options;
|
|
52
|
+
}
|
|
53
|
+
/** Shared fail-closed verification entry point for the local CLI and MCP tool. */
|
|
54
|
+
export async function verifyV2(input, { allowPayloadBytes = true, issuerKeysFetchedByTool = false } = {}) {
|
|
55
|
+
const base = {
|
|
56
|
+
protocol_id: "POPCORN-WITNESS/2.0",
|
|
57
|
+
authorization_granted: false,
|
|
58
|
+
issuer_key_trust_checked_by_tool: false,
|
|
59
|
+
on_chain_settlement_checked_by_tool: false,
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
const verified = await verifyPopcornWitnessEvidence(input.response, input.jwks, verificationOptions(input, 0, allowPayloadBytes));
|
|
63
|
+
return {
|
|
64
|
+
...base,
|
|
65
|
+
accepted: true,
|
|
66
|
+
issuer_key_trust_checked_by_tool: issuerKeysFetchedByTool,
|
|
67
|
+
reason: "signature, digest, time interval, and required fields verified",
|
|
68
|
+
receipt_id: verified.witness_receipt.receipt_id,
|
|
69
|
+
tain: verified.witness_receipt.tain,
|
|
70
|
+
previous_attestation_digest_matched: verified.previous_attestation_digest_matched,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return {
|
|
75
|
+
...base,
|
|
76
|
+
accepted: false,
|
|
77
|
+
reason: error instanceof Error ? error.message : "verification failed",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=v2-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-interface.js","sourceRoot":"","sources":["../../../../src/v2-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
const jsonObject = z.record(z.string(), z.unknown());
|
|
3
|
+
// The schema itself limits predecessor nesting before a tool handler runs.
|
|
4
|
+
// The shared verifier repeats the bound for direct CLI calls.
|
|
5
|
+
function verifySchema(depth, remote, top) {
|
|
6
|
+
const previous = depth > 0
|
|
7
|
+
? {
|
|
8
|
+
previous_receipt: z.strictObject({
|
|
9
|
+
response: jsonObject,
|
|
10
|
+
jwks: jsonObject,
|
|
11
|
+
verification: verifySchema(depth - 1, remote, false),
|
|
12
|
+
}).optional(),
|
|
13
|
+
}
|
|
14
|
+
: {};
|
|
15
|
+
return z.strictObject({
|
|
16
|
+
...(top ? { response: jsonObject, jwks: jsonObject } : {}),
|
|
17
|
+
expected_nonce: z.string(),
|
|
18
|
+
expected_payload_digest: remote ? z.string() : z.string().optional(),
|
|
19
|
+
...(!remote ? { expected_payload_base64url: z.string().optional() } : {}),
|
|
20
|
+
expected_node_id: z.string().optional(),
|
|
21
|
+
max_clock_accuracy_radius_ms: z.number().int().min(0).optional(),
|
|
22
|
+
...previous,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export const localVerifyV2Schema = verifySchema(8, false, true);
|
|
26
|
+
export const remoteVerifyV2Schema = verifySchema(8, true, true);
|
|
27
|
+
//# sourceMappingURL=v2-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-schema.js","sourceRoot":"","sources":["../../../../src/v2-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAErD,2EAA2E;AAC3E,8DAA8D;AAC9D,SAAS,YAAY,CAAC,KAAa,EAAE,MAAe,EAAE,GAAY;IAChE,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;QACxB,CAAC,CAAC;YACE,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC/B,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;aACrD,CAAC,CAAC,QAAQ,EAAE;SACd;QACH,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,CAAC,CAAC,YAAY,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAChE,GAAG,QAAQ;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC"}
|