@antseed/antseed-verifier 0.1.0 → 0.1.2
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 +5 -3
- package/dist/antseed-node-types.d.ts +6 -0
- package/dist/antseed-node-types.d.ts.map +1 -1
- package/dist/approved-node-measurements.d.ts +33 -0
- package/dist/approved-node-measurements.d.ts.map +1 -0
- package/dist/approved-node-measurements.js +67 -0
- package/dist/approved-node-measurements.js.map +1 -0
- package/dist/approved-seller-images.d.ts +14 -0
- package/dist/approved-seller-images.d.ts.map +1 -0
- package/dist/approved-seller-images.js +9 -0
- package/dist/approved-seller-images.js.map +1 -0
- package/dist/capability.d.ts +5 -0
- package/dist/capability.d.ts.map +1 -1
- package/dist/capability.js.map +1 -1
- package/dist/caps/tee-tdx.d.ts +43 -17
- package/dist/caps/tee-tdx.d.ts.map +1 -1
- package/dist/caps/tee-tdx.js +158 -35
- package/dist/caps/tee-tdx.js.map +1 -1
- package/dist/collect/confidential-space.d.ts +12 -0
- package/dist/collect/confidential-space.d.ts.map +1 -0
- package/dist/collect/confidential-space.js +22 -0
- package/dist/collect/confidential-space.js.map +1 -0
- package/dist/collect/dstack.d.ts +10 -0
- package/dist/collect/dstack.d.ts.map +1 -1
- package/dist/collect/dstack.js +31 -26
- package/dist/collect/dstack.js.map +1 -1
- package/dist/collect/unix-http.d.ts +9 -0
- package/dist/collect/unix-http.d.ts.map +1 -0
- package/dist/collect/unix-http.js +21 -0
- package/dist/collect/unix-http.js.map +1 -0
- package/dist/confidential-space.d.ts +49 -0
- package/dist/confidential-space.d.ts.map +1 -0
- package/dist/confidential-space.js +93 -0
- package/dist/confidential-space.js.map +1 -0
- package/dist/dstack-app-compose.d.ts +38 -0
- package/dist/dstack-app-compose.d.ts.map +1 -0
- package/dist/dstack-app-compose.js +113 -0
- package/dist/dstack-app-compose.js.map +1 -0
- package/dist/dstack-event-log.d.ts +42 -0
- package/dist/dstack-event-log.d.ts.map +1 -0
- package/dist/dstack-event-log.js +87 -0
- package/dist/dstack-event-log.js.map +1 -0
- package/dist/prover.d.ts.map +1 -1
- package/dist/prover.js +17 -4
- package/dist/prover.js.map +1 -1
- package/dist/report-data.d.ts +3 -1
- package/dist/report-data.d.ts.map +1 -1
- package/dist/report-data.js +1 -0
- package/dist/report-data.js.map +1 -1
- package/dist/seller-config-rules.d.ts +43 -0
- package/dist/seller-config-rules.d.ts.map +1 -0
- package/dist/seller-config-rules.js +130 -0
- package/dist/seller-config-rules.js.map +1 -0
- package/dist/shared.d.ts +16 -2
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +21 -5
- package/dist/shared.js.map +1 -1
- package/dist/tcb-policy.d.ts +8 -0
- package/dist/tcb-policy.d.ts.map +1 -0
- package/dist/tcb-policy.js +14 -0
- package/dist/tcb-policy.js.map +1 -0
- package/dist/tee-provider-plugins.json +7 -0
- package/dist/verifier.d.ts +2 -1
- package/dist/verifier.d.ts.map +1 -1
- package/dist/verifier.js +10 -7
- package/dist/verifier.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ no provider-specific hosts or schemas, and it is self-contained (no peer depende
|
|
|
22
22
|
|
|
23
23
|
| Capability | Proves | Verdict |
|
|
24
24
|
|---|---|---|
|
|
25
|
-
| `seller-node-tee-genuine` | the seller **node** runs in a genuine Intel TDX enclave (DCAP: PCK chain to Intel's root, acceptable TCB, TD10, debug off). The quote binds to this nonce + peerId | **required** |
|
|
25
|
+
| `seller-node-tee-genuine` | the seller **node** runs an approved seller build in a genuine Intel TDX enclave (DCAP: PCK chain to Intel's root, acceptable TCB, TD10, debug off; MRTD + RTMR0-2 are an approved dstack OS, and the app compose, authenticated by the compose hash replayed from the event log, runs an approved Antseed TEE seller image under the rules in `src/dstack-app-compose.ts`). The quote binds to this nonce + peerId + the buyer's encrypted connection. A passing node also reports `seller-node-upstreams`: the https origins its config sends prompts to. | **required** |
|
|
26
26
|
| `seller-bound` | the seller's identity key signs the whole evidence bundle for this fresh nonce (the signer recovers to peerId) | **required** |
|
|
27
27
|
| `seller-provider-tee-genuine` | the downstream inference **provider's** TEE is genuine TDX. It is also round-bound when the seller declares a `report_data` scheme | informational |
|
|
28
28
|
| `seller-provider-gpu-cc` | the provider's GPUs run NVIDIA Confidential Computing (NVIDIA NRAS verifies it, nonce-bound) | informational |
|
|
@@ -40,7 +40,7 @@ The **prover** (seller) reads its config from the environment, never from buyer-
|
|
|
40
40
|
|---|---|
|
|
41
41
|
| `ANTSEED_TEE_PEER_ID` | the seller's peer id (EVM address, no `0x`) |
|
|
42
42
|
| `ANTSEED_VERIFIER_SIGNING_KEY` | seller identity key (hex) for `seller-bound`. Disabled if its address ≠ peerId |
|
|
43
|
-
| `ANTSEED_VERIFIER_NODE_TEE` | node quote source: `configfs` (default, bare-metal/GCP TDX), `dstack` (Phala and other dstack CVMs), or `http` |
|
|
43
|
+
| `ANTSEED_VERIFIER_NODE_TEE` | node quote source: `configfs` (default, bare-metal/GCP TDX), `dstack` (Phala and other dstack CVMs), `confidential-space` (a Google Confidential Space attestation token instead of a quote), or `http` |
|
|
44
44
|
| `ANTSEED_VERIFIER_DSTACK_SOCKET` | override the dstack guest-agent socket path (default `/var/run/dstack.sock`) |
|
|
45
45
|
| `ANTSEED_VERIFIER_PROVIDER_ADAPTER` | in-process provider adapter id (`chutes`, `aci`). It fetches provider evidence directly, no shim. See [CHUTES.md](./CHUTES.md) or [REDPILL.md](./REDPILL.md) |
|
|
46
46
|
| `ANTSEED_VERIFIER_PROVIDER_EVIDENCE_URL` | generic provider evidence route (`{nonce}` → hex nonce). The manual alternative to an adapter |
|
|
@@ -55,6 +55,8 @@ The **buyer** needs no special hardware. Optional policy knobs:
|
|
|
55
55
|
| Variable | Purpose |
|
|
56
56
|
|---|---|
|
|
57
57
|
| `ANTSEED_VERIFIER_REQUIRED_CAPS` | comma-separated capabilities that gate the overall `ok` (default `seller-node-tee-genuine,seller-bound`). For example, a provenance buyer sets `seller-provider-tee-genuine,seller-bound` to require the downstream provider's TEE |
|
|
58
|
+
| `ANTSEED_VERIFIER_CS_JWKS_URL` | buyer: override Google's Confidential Space token signing keys URL |
|
|
59
|
+
| `ANTSEED_VERIFIER_NODE_BUILDS` | buyer: extra approved dstack OS releases and seller images, JSON `{ "os": [{ name, mrtd, rtmr0, rtmr1, rtmr2 }], "images": [{ version, digest }] }` (inline or `@/path/to/file.json`), added to the built-in lists |
|
|
58
60
|
| `ANTSEED_VERIFIER_MEASURED_IMAGE_POLICY` | approved-measurement allow-list (inline JSON or `@/path.json`) for `measured-image` |
|
|
59
61
|
| `ANTSEED_VERIFIER_STRICT_TCB` | `true` requires TCB exactly `UpToDate` (default also accepts `SWHardeningNeeded`) |
|
|
60
62
|
| `ANTSEED_VERIFIER_NRAS_URL` / `_NRAS_JWKS_URL` | override NVIDIA NRAS endpoints for `gpu-cc` |
|
|
@@ -83,4 +85,4 @@ scheme unchanged. Full setup: [CHUTES.md](./CHUTES.md) · [REDPILL.md](./REDPILL
|
|
|
83
85
|
|
|
84
86
|
---
|
|
85
87
|
|
|
86
|
-
`v0.1.
|
|
88
|
+
`v0.1.1` · GPL-3.0
|
|
@@ -32,6 +32,12 @@ export interface SellerResponse {
|
|
|
32
32
|
statusCode: number;
|
|
33
33
|
headers: Record<string, string>;
|
|
34
34
|
body: Uint8Array;
|
|
35
|
+
/**
|
|
36
|
+
* Buyer-local, never sent by the seller: hex session hash of the buyer's encrypted connection
|
|
37
|
+
* that carried this response. The seller node passes its side of it to the prover in the
|
|
38
|
+
* x-antseed-channel-binding request header.
|
|
39
|
+
*/
|
|
40
|
+
channelBinding?: string;
|
|
35
41
|
}
|
|
36
42
|
export interface VerifyContext {
|
|
37
43
|
peerId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antseed-node-types.d.ts","sourceRoot":"","sources":["../src/antseed-node-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,kGAAkG;AAClG,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"antseed-node-types.d.ts","sourceRoot":"","sources":["../src/antseed-node-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,kGAAkG;AAClG,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,UAAU,CAAA;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,uCAAuC;AACvC,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CACjE;AAED,gFAAgF;AAChF,MAAM,WAAW,MAAO,SAAQ,iBAAiB;IAC/C,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;CACpE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ApprovedSellerImage } from './approved-seller-images.js';
|
|
2
|
+
export type { ApprovedSellerImage } from './approved-seller-images.js';
|
|
3
|
+
/**
|
|
4
|
+
* What a seller node quote must match for the seller-node-tee-genuine claim, so the buyer knows
|
|
5
|
+
* which reviewed software handles its prompts, not just that the hardware is genuine. A seller
|
|
6
|
+
* node runs Antseed's TEE seller image (deploy/tee-seller) as a dstack (Phala) app:
|
|
7
|
+
* - the CVM's OS (MRTD and RTMR0-2: firmware, VM shape, kernel, boot config, root filesystem)
|
|
8
|
+
* is a released dstack production image listed in `os`;
|
|
9
|
+
* - the app compose (measured into RTMR3 as its hash) runs one of the `images` and passes the
|
|
10
|
+
* compose rules in dstack-app-compose.ts, which keep every setting that decides where
|
|
11
|
+
* prompts go readable by the buyer.
|
|
12
|
+
*/
|
|
13
|
+
export interface ApprovedDstackOs {
|
|
14
|
+
/** dstack release and VM shape (RTMR0 depends on the vCPU and memory size); shown in claim details. */
|
|
15
|
+
name: string;
|
|
16
|
+
mrtd: string;
|
|
17
|
+
rtmr0: string;
|
|
18
|
+
rtmr1: string;
|
|
19
|
+
rtmr2: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ApprovedNodeBuilds {
|
|
22
|
+
os: readonly ApprovedDstackOs[];
|
|
23
|
+
images: readonly ApprovedSellerImage[];
|
|
24
|
+
}
|
|
25
|
+
/** dstack production OS images, one entry per release and VM shape. */
|
|
26
|
+
export declare const APPROVED_DSTACK_OS: readonly ApprovedDstackOs[];
|
|
27
|
+
/**
|
|
28
|
+
* The approved builds plus a buyer's own additions from ANTSEED_VERIFIER_NODE_BUILDS: JSON
|
|
29
|
+
* `{ "os": [...], "images": [...] }`, inline or "@/path/to/file.json". Additions only widen what
|
|
30
|
+
* this buyer accepts; malformed entries are ignored.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readApprovedNodeBuilds(): ApprovedNodeBuilds;
|
|
33
|
+
//# sourceMappingURL=approved-node-measurements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approved-node-measurements.d.ts","sourceRoot":"","sources":["../src/approved-node-measurements.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAE9F,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEtE;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uGAAuG;IACvG,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC/B,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAA;CACvC;AAwBD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAIvD,CAAA;AAiBH;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,CAe3D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { APPROVED_SELLER_IMAGES } from './approved-seller-images.js';
|
|
3
|
+
/**
|
|
4
|
+
* dstack 0.6.1 production OS (https://github.com/Dstack-TEE/dstack/releases/tag/mkosi-os-v0.6.1,
|
|
5
|
+
* os_image_hash ec43cb8c5e04b6bb6c53b33b16076a01d83d01f7f4b703f2f78a0d947d6247e6) on Phala Cloud's
|
|
6
|
+
* CPU instance types. Computed with `dstack-mr measure -c <vcpus> -m <memory>G --qemu-version 8.2.2
|
|
7
|
+
* --hotplug-off false` (dstack v0.6.1) from the release's measurement bundle; Phala Cloud's hosts run
|
|
8
|
+
* that QEMU with hotplug on. MRTD, RTMR1 and RTMR2 are the same for every shape.
|
|
9
|
+
*/
|
|
10
|
+
const DSTACK_0_6_1 = {
|
|
11
|
+
mrtd: '2a674327c50218dba880066b349b8d559d749ed68dce33fd651c184a877d084b07a9e583767a7ad5da13ed91deec2b70',
|
|
12
|
+
rtmr1: '89ef86c5125b986c325f0a94acfa87718a4ef3a4d4f237dbb72dda3cf777fd2c054555fb4407eb53338d7d67329a7333',
|
|
13
|
+
rtmr2: 'e9000e338f33233e8f51b7fd031e1c158bdcf8572eab041c0bc8eb7fef48b23259a6a556e6c8e2af99999fc39c793179',
|
|
14
|
+
};
|
|
15
|
+
const DSTACK_0_6_1_RTMR0 = [
|
|
16
|
+
['tdx.small', 1, 2, '68102e7b524af310f7b7d426ce75481e36c40f5d513a9009c046e9d37e31551f0134d954b496a3357fd61d03f07ffe96'],
|
|
17
|
+
['tdx.medium', 2, 4, '027b610ab0555482f8a3868524093bdf3cdbe2539f81dfeeb886864654cb2fe3422f7fc36d4bab6fa46683aad11d1ba7'],
|
|
18
|
+
['tdx.large', 4, 8, 'fb14dc139f33d6fcf474bc8332cac001259fb31cfbcb6b34d4ceeb552a2c4466884a0cbde45ad98a05c5c060c23ad65a'],
|
|
19
|
+
['tdx.xlarge', 8, 16, 'ec216f1d1d591468ff4741b9b192f016b26d3f90303bfa9dbb97557273853183981f21a4bcb3ae908247538d371ad072'],
|
|
20
|
+
['tdx.2xlarge', 16, 32, 'd6118f0eeb30e9d9178d2b9106dddd002d979b6fa79bdec415051afae2021384c29a32d2f6454fa369617598378ffb5e'],
|
|
21
|
+
['tdx.4xlarge', 32, 64, '55b9b0d73279fd2079274371e639b70161a69447b6b07f7b5266f0b8a47fd1e527fca30338879b47ac18d9bf66022e5c'],
|
|
22
|
+
['tdx.8xlarge', 64, 128, 'de03721065571be16e3ccbb76dacdc86a6dfb35255480dfc97932995c5d0973b6f0b6b7b9f8e88b838d72bc75e8a287c'],
|
|
23
|
+
];
|
|
24
|
+
/** dstack production OS images, one entry per release and VM shape. */
|
|
25
|
+
export const APPROVED_DSTACK_OS = DSTACK_0_6_1_RTMR0.map(([shape, vcpus, memoryGiB, rtmr0]) => ({
|
|
26
|
+
name: `dstack 0.6.1 (${shape}, ${vcpus} vCPU, ${memoryGiB} GiB)`,
|
|
27
|
+
...DSTACK_0_6_1,
|
|
28
|
+
rtmr0,
|
|
29
|
+
}));
|
|
30
|
+
const MEASUREMENT_FIELDS = ['mrtd', 'rtmr0', 'rtmr1', 'rtmr2'];
|
|
31
|
+
const isMeasurement = (v) => typeof v === 'string' && /^[0-9a-fA-F]{96}$/.test(v);
|
|
32
|
+
function isApprovedDstackOs(m) {
|
|
33
|
+
if (!m || typeof m !== 'object')
|
|
34
|
+
return false;
|
|
35
|
+
const e = m;
|
|
36
|
+
return typeof e['name'] === 'string' && MEASUREMENT_FIELDS.every((f) => isMeasurement(e[f]));
|
|
37
|
+
}
|
|
38
|
+
function isApprovedSellerImage(m) {
|
|
39
|
+
if (!m || typeof m !== 'object')
|
|
40
|
+
return false;
|
|
41
|
+
const e = m;
|
|
42
|
+
return typeof e['version'] === 'string' && typeof e['digest'] === 'string' && /^sha256:[0-9a-f]{64}$/.test(e['digest']);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The approved builds plus a buyer's own additions from ANTSEED_VERIFIER_NODE_BUILDS: JSON
|
|
46
|
+
* `{ "os": [...], "images": [...] }`, inline or "@/path/to/file.json". Additions only widen what
|
|
47
|
+
* this buyer accepts; malformed entries are ignored.
|
|
48
|
+
*/
|
|
49
|
+
export function readApprovedNodeBuilds() {
|
|
50
|
+
const builds = { os: [...APPROVED_DSTACK_OS], images: [...APPROVED_SELLER_IMAGES] };
|
|
51
|
+
const raw = process.env['ANTSEED_VERIFIER_NODE_BUILDS']?.trim();
|
|
52
|
+
if (!raw)
|
|
53
|
+
return builds;
|
|
54
|
+
try {
|
|
55
|
+
const parsed = JSON.parse(raw.startsWith('@') ? readFileSync(raw.slice(1), 'utf8') : raw);
|
|
56
|
+
const list = (key) => (Array.isArray(parsed?.[key]) ? parsed[key] : []);
|
|
57
|
+
return {
|
|
58
|
+
os: [...builds.os, ...list('os').filter(isApprovedDstackOs)],
|
|
59
|
+
images: [...builds.images, ...list('images').filter(isApprovedSellerImage)],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
process.stderr.write(`[verifier] ignoring ANTSEED_VERIFIER_NODE_BUILDS: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
64
|
+
return builds;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=approved-node-measurements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approved-node-measurements.js","sourceRoot":"","sources":["../src/approved-node-measurements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAA4B,MAAM,6BAA6B,CAAA;AA4B9F;;;;;;GAMG;AACH,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,kGAAkG;IACxG,KAAK,EAAE,kGAAkG;IACzG,KAAK,EAAE,kGAAkG;CAC1G,CAAA;AACD,MAAM,kBAAkB,GAAuE;IAC7F,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,kGAAkG,CAAC;IACvH,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,kGAAkG,CAAC;IACxH,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,kGAAkG,CAAC;IACvH,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,kGAAkG,CAAC;IACzH,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,kGAAkG,CAAC;IAC3H,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,kGAAkG,CAAC;IAC3H,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,kGAAkG,CAAC;CAC7H,CAAA;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAgC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3H,IAAI,EAAE,iBAAiB,KAAK,KAAK,KAAK,UAAU,SAAS,OAAO;IAChE,GAAG,YAAY;IACf,KAAK;CACN,CAAC,CAAC,CAAA;AAEH,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,CAAA;AACvE,MAAM,aAAa,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEnG,SAAS,kBAAkB,CAAC,CAAU;IACpC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7C,MAAM,CAAC,GAAG,CAA4B,CAAA;IACtC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9F,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAU;IACvC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7C,MAAM,CAAC,GAAG,CAA4B,CAAA;IACtC,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;AACzH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAA;IACnF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,IAAI,EAAE,CAAA;IAC/D,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAA;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAmC,CAAA;QAC3H,MAAM,IAAI,GAAG,CAAC,GAAW,EAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACvG,OAAO;YACL,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC5D,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;SAC5E,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/H,OAAO,MAAM,CAAA;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** A released Antseed TEE seller image (ghcr.io/antseed/tee-seller), by manifest digest. */
|
|
2
|
+
export interface ApprovedSellerImage {
|
|
3
|
+
/** The @antseed/cli version the image runs; shown in claim details. */
|
|
4
|
+
version: string;
|
|
5
|
+
/** "sha256:<64 hex>" */
|
|
6
|
+
digest: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Antseed TEE seller images built by the "Publish TEE seller image" workflow from a locked
|
|
10
|
+
* deploy/tee-seller commit. The workflow opens the pull request that adds each new image here
|
|
11
|
+
* (deploy/tee-seller/approve-image.mjs); keep one entry per line.
|
|
12
|
+
*/
|
|
13
|
+
export declare const APPROVED_SELLER_IMAGES: readonly ApprovedSellerImage[];
|
|
14
|
+
//# sourceMappingURL=approved-seller-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approved-seller-images.d.ts","sourceRoot":"","sources":["../src/approved-seller-images.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EAEhE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antseed TEE seller images built by the "Publish TEE seller image" workflow from a locked
|
|
3
|
+
* deploy/tee-seller commit. The workflow opens the pull request that adds each new image here
|
|
4
|
+
* (deploy/tee-seller/approve-image.mjs); keep one entry per line.
|
|
5
|
+
*/
|
|
6
|
+
export const APPROVED_SELLER_IMAGES = [
|
|
7
|
+
{ version: '0.1.234', digest: 'sha256:74972a3ce21531fcfc4bdd48a3cac95d20afe39f234cb7c472fae2e004e605bc' },
|
|
8
|
+
];
|
|
9
|
+
//# sourceMappingURL=approved-seller-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approved-seller-images.js","sourceRoot":"","sources":["../src/approved-seller-images.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,yEAAyE,EAAE;CAC1G,CAAA"}
|
package/dist/capability.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ export interface CapabilityVerifyInput {
|
|
|
21
21
|
parsedQuote?: unknown;
|
|
22
22
|
/** Buyer policy for this capability (e.g. approved measurements). Data, never fetched. */
|
|
23
23
|
policy?: unknown;
|
|
24
|
+
/**
|
|
25
|
+
* Session hash of the buyer's own connection that carried this round (64 hex), when the
|
|
26
|
+
* buyer's node has one. The node cap requires its quote to commit to it.
|
|
27
|
+
*/
|
|
28
|
+
channelBinding?: string;
|
|
24
29
|
/**
|
|
25
30
|
* The full per-cap evidence map returned this round. seller-bound digests it (minus its
|
|
26
31
|
* own entry) to verify one seller signature covers the entire bundle.
|
package/dist/capability.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D;;;;;GAKG;AAEH,gDAAgD;AAChD,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,KAAK,EAAE,UAAU,CAAA;IACjB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAC5C;AAED,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,uFAAuF;IACvF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,sFAAsF;IACtF,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,kGAAkG;IAClG,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAA;IACxG,4FAA4F;IAC5F,OAAO,CAAC,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7D;AAKD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAExD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAED,wBAAgB,gBAAgB,IAAI,UAAU,EAAE,CAE/C;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D;;;;;GAKG;AAEH,gDAAgD;AAChD,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,KAAK,EAAE,UAAU,CAAA;IACjB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAC5C;AAED,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,uFAAuF;IACvF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,sFAAsF;IACtF,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,kGAAkG;IAClG,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAA;IACxG,4FAA4F;IAC5F,OAAO,CAAC,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7D;AAKD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAExD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAED,wBAAgB,gBAAgB,IAAI,UAAU,EAAE,CAE/C;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}
|
package/dist/capability.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAuDA,sFAAsF;AACtF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAA;AAE9C,MAAM,UAAU,kBAAkB,CAAC,GAAe;IAChD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;AAC7B,CAAC"}
|
package/dist/caps/tee-tdx.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { Capability } from '../capability.js';
|
|
2
|
+
import { type DstackEvent } from '../dstack-event-log.js';
|
|
2
3
|
import { type BindingIngredients } from '../report-data.js';
|
|
4
|
+
import type { JWTPayload } from 'jose';
|
|
5
|
+
import { type VerifyConfidentialSpaceTokenFn } from '../confidential-space.js';
|
|
3
6
|
/** A provider quote's declared report_data binding: a frozen scheme id + its string ingredients. */
|
|
4
7
|
export interface ReportDataBinding {
|
|
5
8
|
scheme: string;
|
|
6
|
-
ingredients: Pick<BindingIngredients, 'peerId' | 'e2ePubkey' | 'keysetDigest'>;
|
|
9
|
+
ingredients: Pick<BindingIngredients, 'peerId' | 'e2ePubkey' | 'keysetDigest' | 'channelBinding'>;
|
|
7
10
|
}
|
|
8
11
|
/**
|
|
9
12
|
* A genuine-Intel-TDX capability: proves a party runs in a genuine Intel TDX enclave.
|
|
@@ -21,19 +24,18 @@ export interface ReportDataBinding {
|
|
|
21
24
|
export declare const NODE_TEE_CAP_ID = "seller-node-tee-genuine";
|
|
22
25
|
/** The downstream inference provider's TEE (quote fetched from the provider's evidence route). */
|
|
23
26
|
export declare const PROVIDER_TEE_CAP_ID = "seller-provider-tee-genuine";
|
|
27
|
+
/**
|
|
28
|
+
* Reported with a passing seller node claim: the https origins its measured config forwards
|
|
29
|
+
* prompts to, comma-separated. It describes the node claim and has no evidence of its own.
|
|
30
|
+
*/
|
|
31
|
+
export declare const NODE_UPSTREAMS_CLAIM = "seller-node-upstreams";
|
|
24
32
|
/**
|
|
25
33
|
* Config-key convention: each TDX cap reads its own collector settings from `<capId>.<key>`
|
|
26
34
|
* in the shared config map, so the node cap and the provider cap never collide. It lives in
|
|
27
35
|
* one place, so the prover writes the same keys the factory reads.
|
|
28
36
|
*/
|
|
29
37
|
export declare function tdxConfigKey(id: string, key: string): string;
|
|
30
|
-
|
|
31
|
-
* TCB acceptance. UpToDate is always genuine hardware. SWHardeningNeeded flags guest-side
|
|
32
|
-
* software mitigations only — not a hardware compromise — and is accepted by default (real
|
|
33
|
-
* GCP TDX quotes often report it). Set ANTSEED_VERIFIER_STRICT_TCB=true to require UpToDate
|
|
34
|
-
* exactly. Anything else (OutOfDate, Revoked, Unknown, ...) is rejected.
|
|
35
|
-
*/
|
|
36
|
-
export declare function isTcbAcceptable(status: string): boolean;
|
|
38
|
+
export { isTcbAcceptable } from '../tcb-policy.js';
|
|
37
39
|
/** Authenticated TD10 measurements, extracted from a verified quote. */
|
|
38
40
|
export interface TdMeasurements {
|
|
39
41
|
mrTd: Uint8Array;
|
|
@@ -64,14 +66,34 @@ export interface ParsedTdxQuote {
|
|
|
64
66
|
td: TdMeasurements | null;
|
|
65
67
|
/** The provider-declared report_data binding, if the evidence carried one. */
|
|
66
68
|
binding?: ReportDataBinding;
|
|
67
|
-
/**
|
|
69
|
+
/** dstack RTMR3 event log, if the evidence carried one. */
|
|
70
|
+
eventLog?: DstackEvent[];
|
|
71
|
+
/** dstack app-compose.json, if the evidence carried one. */
|
|
72
|
+
appCompose?: string;
|
|
73
|
+
/** Claims of a verified Google Confidential Space token, when the evidence was one instead of a quote. */
|
|
74
|
+
confidentialSpace?: JWTPayload;
|
|
75
|
+
/** Set when DCAP or token verification, or evidence decoding, threw. */
|
|
68
76
|
error?: string;
|
|
69
77
|
}
|
|
70
|
-
|
|
71
|
-
export declare function
|
|
72
|
-
|
|
78
|
+
/** Node evidence from Google Confidential Space: Google's signed attestation token in place of a quote. */
|
|
79
|
+
export declare function encodeConfidentialSpaceEvidence(token: string): Uint8Array;
|
|
80
|
+
/**
|
|
81
|
+
* tee-tdx evidence blob: the raw quote (b64), optional DCAP collateral and binding, and on dstack
|
|
82
|
+
* the RTMR3 event log and app-compose.json.
|
|
83
|
+
*/
|
|
84
|
+
interface TeeTdxEvidence {
|
|
85
|
+
quote: string;
|
|
73
86
|
collateral?: unknown;
|
|
74
87
|
binding?: ReportDataBinding;
|
|
88
|
+
eventLog?: DstackEvent[];
|
|
89
|
+
appCompose?: string;
|
|
90
|
+
}
|
|
91
|
+
export declare function encodeTeeTdxEvidence(quote: Uint8Array, collateral?: unknown, binding?: ReportDataBinding, dstack?: {
|
|
92
|
+
eventLog?: DstackEvent[];
|
|
93
|
+
appCompose?: string;
|
|
94
|
+
}): Uint8Array;
|
|
95
|
+
export declare function decodeTeeTdxEvidence(bytes: Uint8Array): Omit<TeeTdxEvidence, 'quote'> & {
|
|
96
|
+
quote: Uint8Array;
|
|
75
97
|
};
|
|
76
98
|
/**
|
|
77
99
|
* Default DCAP verifier: it validates the quote's ECDSA signature + PCK cert chain to
|
|
@@ -85,22 +107,26 @@ export declare const defaultVerifyQuote: VerifyQuoteFn;
|
|
|
85
107
|
* decode or verify errors are captured in `error`, so dependent caps still see the raw
|
|
86
108
|
* `quoteEvidence` bytes (seller-bound only needs those to bind identity to the quote).
|
|
87
109
|
*/
|
|
88
|
-
export declare function verifyTdxEvidence(evidence: Uint8Array, verifyQuote: VerifyQuoteFn, nowSecs: number): Promise<ParsedTdxQuote>;
|
|
110
|
+
export declare function verifyTdxEvidence(evidence: Uint8Array, verifyQuote: VerifyQuoteFn, nowSecs: number, verifyConfidentialSpaceToken?: VerifyConfidentialSpaceTokenFn): Promise<ParsedTdxQuote>;
|
|
89
111
|
/**
|
|
90
112
|
* Mint one TDX capability. `id` names the target (node or provider); `defaultSource`
|
|
91
113
|
* is the collector used when config supplies no `<id>.source` override:
|
|
92
|
-
* 'configfs': self-hosted TDX minted locally via configfs-tsm; report_data = antseed-rd-v1
|
|
114
|
+
* 'configfs': self-hosted TDX minted locally via configfs-tsm; report_data = antseed-rd-v1
|
|
115
|
+
* {peerId, channelBinding} for seller-node attestations
|
|
93
116
|
* 'dstack' : self-hosted TDX minted via the dstack guest-agent socket (Phala CVMs, where
|
|
94
|
-
* configfs-tsm is absent); same
|
|
117
|
+
* configfs-tsm is absent); the same binding, plus the event log and app compose
|
|
95
118
|
* 'http' : a pre-made quote fetched from a config-supplied evidence route ({nonce} hex)
|
|
96
119
|
* verify reads this cap's own parsed quote (the orchestrator DCAP-verifies each cap's
|
|
97
120
|
* own evidence entry independently). collect throws when its source is unavailable
|
|
98
121
|
* (off-TEE for configfs, or no url for http), so the prover omits the cap.
|
|
99
122
|
*/
|
|
100
123
|
export declare function makeTdxCap(id: string, defaultSource: 'configfs' | 'http', opts?: {
|
|
101
|
-
|
|
124
|
+
sellerNode?: boolean;
|
|
102
125
|
}): Capability;
|
|
103
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* The AntSeed seller node's own TEE — mints its quote locally via configfs; report_data bound to
|
|
128
|
+
* nonce + peerId + the buyer's connection, and the TD measurement must be an approved build.
|
|
129
|
+
*/
|
|
104
130
|
export declare const nodeTeeCapability: Capability;
|
|
105
131
|
/** The downstream inference provider's TEE — quote fetched from the provider's evidence route. */
|
|
106
132
|
export declare const providerTeeCapability: Capability;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tee-tdx.d.ts","sourceRoot":"","sources":["../../src/caps/tee-tdx.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAiD,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"tee-tdx.d.ts","sourceRoot":"","sources":["../../src/caps/tee-tdx.ts"],"names":[],"mappings":"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"}
|