secretvm-verify 0.4.0 → 0.6.0
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 +71 -7
- package/data/sev.json +42 -2
- package/data/tdx.csv +13 -1
- package/dist/agent.d.ts +8 -2
- package/dist/agent.js +45 -28
- package/dist/agent.js.map +1 -1
- package/dist/amd.d.ts +1 -1
- package/dist/amd.js +180 -9
- package/dist/amd.js.map +1 -1
- package/dist/cli.js +60 -63
- package/dist/cli.js.map +1 -1
- package/dist/cpu.d.ts +4 -1
- package/dist/cpu.js +5 -2
- package/dist/cpu.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/kdsCache.d.ts +30 -0
- package/dist/kdsCache.js +82 -0
- package/dist/kdsCache.js.map +1 -0
- package/dist/proofOfCloud.d.ts +11 -0
- package/dist/proofOfCloud.js +68 -0
- package/dist/proofOfCloud.js.map +1 -0
- package/dist/tdx.d.ts +10 -0
- package/dist/tdx.js +157 -228
- package/dist/tdx.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.js +38 -0
- package/dist/types.js.map +1 -1
- package/dist/vm.d.ts +1 -1
- package/dist/vm.js +35 -23
- package/dist/vm.js.map +1 -1
- package/package.json +13 -1
package/README.md
CHANGED
|
@@ -4,11 +4,12 @@ Attestation verification SDK for confidential computing environments. Verifies I
|
|
|
4
4
|
|
|
5
5
|
## What it verifies
|
|
6
6
|
|
|
7
|
-
- **Intel TDX** —
|
|
7
|
+
- **Intel TDX** — Performs full Intel DCAP quote verification, delegating the cryptographic checks to the upstream [`@teekit/qvl`](https://www.npmjs.com/package/@teekit/qvl) library. Verifies the PCK certificate chain against a pinned Intel SGX Root CA, the QE Identity, PCK CRL and Root CA CRL revocation, the TCB Info signature, the TCB status, the quote signature, and the QE report binding. Collateral (TCB Info, QE Identity, CRLs, issuer chains) is fetched from a Provisioning Certificate Caching Service (PCCS) — defaults to SCRT Labs' deployment.
|
|
8
8
|
- **AMD SEV-SNP** — Parses a SEV-SNP attestation report, fetches the VCEK certificate from AMD's Key Distribution Service, verifies the ECDSA-P384 report signature, and validates the certificate chain (VCEK -> ASK -> ARK).
|
|
9
9
|
- **NVIDIA GPU** — Submits GPU attestation evidence to NVIDIA's Remote Attestation Service (NRAS), verifies the returned JWT signatures against NVIDIA's published JWKS keys, and extracts per-GPU attestation claims.
|
|
10
10
|
- **SecretVM workload** — Given a TDX or SEV-SNP quote and a `docker-compose.yaml`, determines whether the quote was produced by a known SecretVM image and verifies the exact compose file that was booted.
|
|
11
11
|
- **Secret VM** — End-to-end verification that connects to a VM's attestation endpoints, verifies CPU and GPU attestation, and validates TLS and GPU cryptographic bindings.
|
|
12
|
+
- **Proof of cloud** — POSTs a CPU quote to SCRT Labs' [`/api/quote-parse`](https://secretai.scrtlabs.com/api/quote-parse) endpoint, which confirms the quote originated on a Secret VM and returns its `origin` and `machine_id`. Included in the default `checkSecretVm` flow and exposed as a standalone `checkProofOfCloud` function.
|
|
12
13
|
- **ERC-8004 Agent verification** — End-to-end verification of on-chain AI agents registered under the [ERC-8004](https://eips.ethereum.org/EIPS/eip-8004) standard. Resolves agent metadata from any supported blockchain (Ethereum, Base, Arbitrum, Polygon, and 14 more), discovers the agent's TEE attestation endpoints, and runs the full verification flow. Three composable functions:
|
|
13
14
|
- **`resolveAgent`** — Queries the on-chain registry contract for the agent's metadata.
|
|
14
15
|
- **`verifyAgent`** — Takes agent metadata and runs full TEE verification against the agent's declared endpoints.
|
|
@@ -33,7 +34,7 @@ const result = await checkSecretVm('my-vm.example.com');
|
|
|
33
34
|
|
|
34
35
|
console.log(result.valid); // true if all checks pass
|
|
35
36
|
console.log(result.attestationType); // "SECRET-VM"
|
|
36
|
-
console.log(result.checks); // {
|
|
37
|
+
console.log(result.checks); // { cpu_quote_fetched: true, tls_cert_fetched: true, ... }
|
|
37
38
|
console.log(result.report); // { tls_fingerprint: "...", cpu: {...}, cpu_type: "TDX", ... }
|
|
38
39
|
console.log(result.errors); // [] if no errors
|
|
39
40
|
```
|
|
@@ -168,6 +169,10 @@ Verifies an AMD SEV-SNP attestation report.
|
|
|
168
169
|
|
|
169
170
|
Verifies NVIDIA GPU attestation via NRAS.
|
|
170
171
|
|
|
172
|
+
#### `checkProofOfCloud(quote)`
|
|
173
|
+
|
|
174
|
+
POSTs a raw CPU quote to SCRT Labs' [`/api/quote-parse`](https://secretai.scrtlabs.com/api/quote-parse) endpoint. Returns an `AttestationResult` with `attestationType: "PROOF-OF-CLOUD"` and a single check `proof_of_cloud_verified`. The report exposes `origin`, `proof_of_cloud`, `status`, and `machine_id`. Also runs automatically inside `checkSecretVm` and is spliced into the CLI output for `--cpu`, `--tdx`, and `--sev`.
|
|
175
|
+
|
|
171
176
|
#### `resolveSecretVmVersion(data)`
|
|
172
177
|
|
|
173
178
|
Looks up a quote in the SecretVM artifact registry. Returns the matching template name and version, or `null` if not found.
|
|
@@ -303,17 +308,76 @@ The library contacts these services during verification:
|
|
|
303
308
|
|
|
304
309
|
| Service | Used by | Purpose |
|
|
305
310
|
|---------|---------|---------|
|
|
306
|
-
| [
|
|
307
|
-
| [AMD KDS](https://kdsintf.amd.com) | SEV-SNP | VCEK certificate
|
|
311
|
+
| [SCRT PCCS](https://pccs.scrtlabs.com) | TDX | DCAP collateral (TCB Info, QE Identity, PCK CRL, Root CA CRL, issuer chains) |
|
|
312
|
+
| [AMD KDS](https://kdsintf.amd.com) | SEV-SNP | VCEK certificate, AMD CA cert chain (ASK + ARK), CRL |
|
|
308
313
|
| [NVIDIA NRAS](https://nras.attestation.nvidia.com) | GPU | GPU attestation verification |
|
|
309
314
|
|
|
310
|
-
|
|
315
|
+
## AMD KDS caching
|
|
316
|
+
|
|
317
|
+
To minimize calls to `kdsintf.amd.com` (which is rate-limited and returns HTTP 429 under load) the AMD SEV-SNP verifier caches all three KDS responses to disk. The cache is on by default; nothing to enable.
|
|
318
|
+
|
|
319
|
+
| Item | TTL | Cache key |
|
|
320
|
+
|---|---|---|
|
|
321
|
+
| VCEK certificate | 30 days | `(product, chip_id, ucode_SPL, snp_SPL, tee_SPL, bl_SPL)` — full TCB tuple |
|
|
322
|
+
| AMD CA cert chain (ASK + ARK) | 30 days | `product` |
|
|
323
|
+
| CRL | from the CRL's own X.509 `nextUpdate` field (typically ~7 months for AMD); falls back to 7 days if `nextUpdate` is missing or unparseable | `product` |
|
|
324
|
+
|
|
325
|
+
The VCEK cache key includes the full TCB tuple because AMD issues a distinct VCEK per `(chip, TCB version)`. A microcode update on the same chip becomes a cache miss with the new key, fetching the updated VCEK as expected.
|
|
326
|
+
|
|
327
|
+
**Cache location.** Default `~/.cache/secretvm-verify/amd/`. Override with the `SECRETVM_VERIFY_CACHE_DIR` environment variable; the library appends `/amd` to whatever you set:
|
|
328
|
+
|
|
329
|
+
```sh
|
|
330
|
+
export SECRETVM_VERIFY_CACHE_DIR=/var/cache/myapp
|
|
331
|
+
# → entries land in /var/cache/myapp/amd/{vcek,cert_chain,crl}/
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
Each cached entry is two files: the payload (DER bytes for VCEK and CRL, PEM text for the cert chain) and a sidecar `<name>.expires` containing the Unix-epoch expiration time.
|
|
335
|
+
|
|
336
|
+
**Inspect cached entries:**
|
|
337
|
+
|
|
338
|
+
```sh
|
|
339
|
+
ls -lR ~/.cache/secretvm-verify/amd/
|
|
340
|
+
|
|
341
|
+
# Decode a specific VCEK
|
|
342
|
+
openssl x509 -in ~/.cache/secretvm-verify/amd/vcek/<file> -inform DER -text -noout
|
|
343
|
+
|
|
344
|
+
# Decode the CRL — see revoked serials and nextUpdate
|
|
345
|
+
openssl crl -in ~/.cache/secretvm-verify/amd/crl/Genoa -inform DER -text -noout
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**Network failure fallback.** If AMD KDS is unreachable or returns an error, the cache falls back to a stale entry rather than failing the verification. Better to verify with a slightly old CRL than to fail every SEV-SNP attestation while KDS is down.
|
|
349
|
+
|
|
350
|
+
**Force a refresh** (skip the cache for this call, fetch fresh, write back to cache):
|
|
351
|
+
|
|
352
|
+
CLI:
|
|
353
|
+
```sh
|
|
354
|
+
secretvm-verify --secretvm <url> --reload-amd-kds
|
|
355
|
+
secretvm-verify --sev <quote.txt> --product Genoa --reload-amd-kds
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Programmatic — pass `true` as the third argument:
|
|
359
|
+
|
|
360
|
+
```js
|
|
361
|
+
const result = await checkSevCpuAttestation(quote, "Genoa", /* reloadAmdKds */ true);
|
|
362
|
+
const result = await checkSecretVm(url, "", /* reloadAmdKds */ true);
|
|
363
|
+
const result = await checkCpuAttestation(quote, "Genoa", /* reloadAmdKds */ true);
|
|
364
|
+
const result = await checkAgent(agentId, "base", /* reloadAmdKds */ true);
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
The `--reload-amd-kds` flag has no effect on Intel TDX verification (TDX doesn't cache; the upstream `@teekit/qvl` library manages its own ephemeral state).
|
|
368
|
+
|
|
369
|
+
**To clear the cache entirely:**
|
|
370
|
+
|
|
371
|
+
```sh
|
|
372
|
+
rm -rf ~/.cache/secretvm-verify/amd
|
|
373
|
+
```
|
|
311
374
|
|
|
312
375
|
## Requirements
|
|
313
376
|
|
|
314
377
|
- Node.js >= 18 (uses built-in `crypto`, `fetch`)
|
|
315
|
-
- `
|
|
316
|
-
|
|
378
|
+
- npm dependencies: [`@teekit/qvl`](https://www.npmjs.com/package/@teekit/qvl) (TDX quote verification), [`asn1js`](https://www.npmjs.com/package/asn1js) (parses the CRL's `nextUpdate` field for cache TTL), `ethers` (ERC-8004 agent resolution) — installed automatically.
|
|
379
|
+
|
|
380
|
+
No system-level dependencies. AMD SEV-SNP certificate chains (RSA-PSS) are verified natively via `node:crypto`.
|
|
317
381
|
|
|
318
382
|
## License
|
|
319
383
|
|
package/data/sev.json
CHANGED
|
@@ -190,5 +190,45 @@
|
|
|
190
190
|
"section_type": 16
|
|
191
191
|
}
|
|
192
192
|
]
|
|
193
|
-
}
|
|
194
|
-
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"vm_type": "prod",
|
|
196
|
+
"rootfs_hash": "f44141c9a0cbed19ddf30b16929de33633e5631cfd68731e9ff9e4321d5775fd",
|
|
197
|
+
"artifacts_ver": "v0.0.27-alpha.1",
|
|
198
|
+
"kernel_hash": "98c41a86a1ba6a9a9d772ae0b028835091b4930f79ea509b595d2080d7df90c2",
|
|
199
|
+
"initrd_hash": "6b19d1b356c1e791f5c1c3d7dd86a723b870c87ebdfe3f7ccace80215ac71d2e",
|
|
200
|
+
"vcpu_type": "EPYC",
|
|
201
|
+
"ovmf_hash": "c581d3eaebf2941beb1f757de97497279b953a6999921cab05f9ed5268f9c0505d741f4021b5a3995c9893851cde190e",
|
|
202
|
+
"sev_hashes_table_gpa": 8457216,
|
|
203
|
+
"sev_es_reset_eip": 8433668,
|
|
204
|
+
"ovmf_sections": [
|
|
205
|
+
{"gpa": 8388608, "size": 36864, "section_type": 1},
|
|
206
|
+
{"gpa": 8429568, "size": 12288, "section_type": 1},
|
|
207
|
+
{"gpa": 8441856, "size": 4096, "section_type": 2},
|
|
208
|
+
{"gpa": 8445952, "size": 4096, "section_type": 3},
|
|
209
|
+
{"gpa": 8450048, "size": 4096, "section_type": 4},
|
|
210
|
+
{"gpa": 8458240, "size": 61440, "section_type": 1},
|
|
211
|
+
{"gpa": 8454144, "size": 4096, "section_type": 16}
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"vm_type": "dev",
|
|
216
|
+
"rootfs_hash": "a2e5a4582bba5a0cfa512b1c0809c375ec78912af238dbbaf37afdecee60c25c",
|
|
217
|
+
"artifacts_ver": "v0.0.27-alpha.1",
|
|
218
|
+
"kernel_hash": "98c41a86a1ba6a9a9d772ae0b028835091b4930f79ea509b595d2080d7df90c2",
|
|
219
|
+
"initrd_hash": "6b19d1b356c1e791f5c1c3d7dd86a723b870c87ebdfe3f7ccace80215ac71d2e",
|
|
220
|
+
"vcpu_type": "EPYC",
|
|
221
|
+
"ovmf_hash": "c581d3eaebf2941beb1f757de97497279b953a6999921cab05f9ed5268f9c0505d741f4021b5a3995c9893851cde190e",
|
|
222
|
+
"sev_hashes_table_gpa": 8457216,
|
|
223
|
+
"sev_es_reset_eip": 8433668,
|
|
224
|
+
"ovmf_sections": [
|
|
225
|
+
{"gpa": 8388608, "size": 36864, "section_type": 1},
|
|
226
|
+
{"gpa": 8429568, "size": 12288, "section_type": 1},
|
|
227
|
+
{"gpa": 8441856, "size": 4096, "section_type": 2},
|
|
228
|
+
{"gpa": 8445952, "size": 4096, "section_type": 3},
|
|
229
|
+
{"gpa": 8450048, "size": 4096, "section_type": 4},
|
|
230
|
+
{"gpa": 8458240, "size": 61440, "section_type": 1},
|
|
231
|
+
{"gpa": 8454144, "size": 4096, "section_type": 16}
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
]
|
package/data/tdx.csv
CHANGED
|
@@ -50,4 +50,16 @@ large,prod,v0.0.25,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb47
|
|
|
50
50
|
small,dev,v0.0.25,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,2709012eccc10afb618d90f4e2849de97ede129e27b3f53b4465f71852af9e1a52583e931f340ce9ebfa06be3c3feb48,2db7eacca93100fb7199b055f55e8fd3a52f2153e25696f937745ff7f254d1be9cf37223237375dec74e685250b273ab,be378f0c4f1180fde14d8bb0a13a9dd430c842b135be23acd7b09cd6181550b6f8adb36588eabdc10be9325d92a8e055,e0a44b90c318d2b081f8fe0247b7952576fda01e3cf3f9c4b607f19554510ea1,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
51
51
|
medium,dev,v0.0.25,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,660eb1c0ce5b816b45ad7d6b49d1e9c2fcd1e14e08ef77faa7b0e9f1d180da593231adae01081799a0c700eb6ab350e7,2db7eacca93100fb7199b055f55e8fd3a52f2153e25696f937745ff7f254d1be9cf37223237375dec74e685250b273ab,be378f0c4f1180fde14d8bb0a13a9dd430c842b135be23acd7b09cd6181550b6f8adb36588eabdc10be9325d92a8e055,e0a44b90c318d2b081f8fe0247b7952576fda01e3cf3f9c4b607f19554510ea1,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
52
52
|
4xlarge_256GB_gpu,prod,v0.0.21,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,6fd479c2f47a90d10070db2f2a489ec88d752577d42e65164fa0f144ebc898ee71c2852722e37f897e80ad9596bd2539,b918cee54c974b16a89c16367df46b9b54a37db35f3d983ad4b7c0d024b09b9bc345f4eed6f30a5fce5ceffa654fd076,b35419954f635b3c9188cf8731c4b542eb00fc376c657d2e2d7bfe2acfc087300439e4e41bad5cebfba5f5866f84da5c,9fa99509306bf652e45ce0a689b3e480ab369649240f14ff53a265a279ff8202,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
53
|
-
4xlarge_256GB_gpu,prod,v0.0.25,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,6fd479c2f47a90d10070db2f2a489ec88d752577d42e65164fa0f144ebc898ee71c2852722e37f897e80ad9596bd2539,2db7eacca93100fb7199b055f55e8fd3a52f2153e25696f937745ff7f254d1be9cf37223237375dec74e685250b273ab,be378f0c4f1180fde14d8bb0a13a9dd430c842b135be23acd7b09cd6181550b6f8adb36588eabdc10be9325d92a8e055, f19a00d3575f6b4340b1aefb60a686b51bba9db628092b3c73c129a1b5c73c08,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
53
|
+
4xlarge_256GB_gpu,prod,v0.0.25,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,6fd479c2f47a90d10070db2f2a489ec88d752577d42e65164fa0f144ebc898ee71c2852722e37f897e80ad9596bd2539,2db7eacca93100fb7199b055f55e8fd3a52f2153e25696f937745ff7f254d1be9cf37223237375dec74e685250b273ab,be378f0c4f1180fde14d8bb0a13a9dd430c842b135be23acd7b09cd6181550b6f8adb36588eabdc10be9325d92a8e055, f19a00d3575f6b4340b1aefb60a686b51bba9db628092b3c73c129a1b5c73c08,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
54
|
+
small,dev,v0.0.27-alpha.1,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,2709012eccc10afb618d90f4e2849de97ede129e27b3f53b4465f71852af9e1a52583e931f340ce9ebfa06be3c3feb48,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,ea74c4d024d2732dfdf8c8ba240cb383df2cc198a72901f4d9a902caa0582f17,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
55
|
+
small,dev,v0.0.27-alpha.1,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,671800f0b5fefa5ca79b63bde0ee0e55f38944cedfa69282ac014a9fc5f6a4a19b0cdfe33661012b3390d2aecb8e486a,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,ea74c4d024d2732dfdf8c8ba240cb383df2cc198a72901f4d9a902caa0582f17,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
56
|
+
small,prod,v0.0.27-alpha.1,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,2709012eccc10afb618d90f4e2849de97ede129e27b3f53b4465f71852af9e1a52583e931f340ce9ebfa06be3c3feb48,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,1d638b068bc6f9254e74ea917818d4e09a7ffce8e486d54c5b5dbe9e6c44b261,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
57
|
+
small,prod,v0.0.27-alpha.1,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,671800f0b5fefa5ca79b63bde0ee0e55f38944cedfa69282ac014a9fc5f6a4a19b0cdfe33661012b3390d2aecb8e486a,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,1d638b068bc6f9254e74ea917818d4e09a7ffce8e486d54c5b5dbe9e6c44b261,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
58
|
+
medium,dev,v0.0.27-alpha.1,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,660eb1c0ce5b816b45ad7d6b49d1e9c2fcd1e14e08ef77faa7b0e9f1d180da593231adae01081799a0c700eb6ab350e7,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,ea74c4d024d2732dfdf8c8ba240cb383df2cc198a72901f4d9a902caa0582f17,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
59
|
+
medium,dev,v0.0.27-alpha.1,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,09d747e568e012bb560b37604e25f1a83988037d8286e81bb97e46fb31ec4d35edf9e23236ae573265417e7ed2f89b99,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,ea74c4d024d2732dfdf8c8ba240cb383df2cc198a72901f4d9a902caa0582f17,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
60
|
+
medium,prod,v0.0.27-alpha.1,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,660eb1c0ce5b816b45ad7d6b49d1e9c2fcd1e14e08ef77faa7b0e9f1d180da593231adae01081799a0c700eb6ab350e7,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,1d638b068bc6f9254e74ea917818d4e09a7ffce8e486d54c5b5dbe9e6c44b261,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
61
|
+
medium,prod,v0.0.27-alpha.1,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,09d747e568e012bb560b37604e25f1a83988037d8286e81bb97e46fb31ec4d35edf9e23236ae573265417e7ed2f89b99,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,1d638b068bc6f9254e74ea917818d4e09a7ffce8e486d54c5b5dbe9e6c44b261,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
62
|
+
large,dev,v0.0.27-alpha.1,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,5814602c6329237ab8ab42caba02bb39a4e69723ae19b062429a95f5bec6715217ae66b431e480bc877eb4f3415332b5,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,ea74c4d024d2732dfdf8c8ba240cb383df2cc198a72901f4d9a902caa0582f17,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
63
|
+
large,dev,v0.0.27-alpha.1,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,8cf0b4047ce95aa84e38049ff7c959b1cc062a50cea4dee141e6cdea8d59c59c78c55a5ad50fef025b7009b68e01fca9,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,ea74c4d024d2732dfdf8c8ba240cb383df2cc198a72901f4d9a902caa0582f17,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
|
64
|
+
large,prod,v0.0.27-alpha.1,1e305ac8284517f73ada985bfc9fded48b23ed091ba8149678bb10207fb470c7903d7a8ddffa5a7be2a60e349bb75b6e,5814602c6329237ab8ab42caba02bb39a4e69723ae19b062429a95f5bec6715217ae66b431e480bc877eb4f3415332b5,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,1d638b068bc6f9254e74ea917818d4e09a7ffce8e486d54c5b5dbe9e6c44b261,cb15e395fb189df263feb84049d0c37917d053ebf7bd688517bb76918ee1836898148d5051e43bb684d6ef25c4db67c0
|
|
65
|
+
large,prod,v0.0.27-alpha.1,ba87a347454466680bfd267446df89d8117c04ea9f28234dd3d84e1a8a957d5adaf02d4aa88433b559fb13bd40f0109e,8cf0b4047ce95aa84e38049ff7c959b1cc062a50cea4dee141e6cdea8d59c59c78c55a5ad50fef025b7009b68e01fca9,ec47f52ade4cac8b52bf17017779b393cbe9093ebcf44a422875c9a0e9639f624334088862575e23d226b5d225b5d764,398d93923bcd8f1c9df5ef0c04ee7c938427961f6118b47f65f64e7c00434750222e644b614e14251924f7694f3c7370,1d638b068bc6f9254e74ea917818d4e09a7ffce8e486d54c5b5dbe9e6c44b261,b60b27d5c6d7b89200deb0b560b33d357d00494d51f10f57647f21ac9d3b0e48ca33f01dde868bb21ce0a877fb0fca75
|
package/dist/agent.d.ts
CHANGED
|
@@ -18,12 +18,18 @@ export declare function resolveAgent(agentId: number, chain: string): Promise<Ag
|
|
|
18
18
|
* Discovers teequote and workload endpoints from the metadata, then runs
|
|
19
19
|
* the full verification flow: TLS cert, CPU quote, TLS binding, GPU quote,
|
|
20
20
|
* GPU binding, and workload verification.
|
|
21
|
+
*
|
|
22
|
+
* @param reloadAmdKds If true, bypass the local AMD KDS cache and re-fetch
|
|
23
|
+
* VCEK / cert chain / CRL. No effect on TDX agents.
|
|
21
24
|
*/
|
|
22
|
-
export declare function verifyAgent(metadata: AgentMetadata): Promise<AttestationResult>;
|
|
25
|
+
export declare function verifyAgent(metadata: AgentMetadata, reloadAmdKds?: boolean): Promise<AttestationResult>;
|
|
23
26
|
/**
|
|
24
27
|
* End-to-end ERC-8004 agent verification.
|
|
25
28
|
*
|
|
26
29
|
* Resolves the agent's metadata from the on-chain registry, then runs
|
|
27
30
|
* the full verification flow via verifyAgent.
|
|
31
|
+
*
|
|
32
|
+
* @param reloadAmdKds If true, bypass the local AMD KDS cache and re-fetch
|
|
33
|
+
* VCEK / cert chain / CRL. No effect on TDX agents.
|
|
28
34
|
*/
|
|
29
|
-
export declare function checkAgent(agentId: number, chain: string): Promise<AttestationResult>;
|
|
35
|
+
export declare function checkAgent(agentId: number, chain: string, reloadAmdKds?: boolean): Promise<AttestationResult>;
|
package/dist/agent.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ethers } from "ethers";
|
|
2
2
|
import { getChainConfig, getRpcUrl } from "./chains.js";
|
|
3
|
-
import { makeResult } from "./types.js";
|
|
3
|
+
import { makeResult, orderChecks } from "./types.js";
|
|
4
4
|
import { checkCpuAttestation } from "./cpu.js";
|
|
5
5
|
import { checkNvidiaGpuAttestation } from "./nvidia.js";
|
|
6
|
+
import { checkProofOfCloud } from "./proofOfCloud.js";
|
|
6
7
|
import { verifyWorkload } from "./workload.js";
|
|
7
8
|
import { extractDockerCompose, getTlsCertFingerprint } from "./url.js";
|
|
8
9
|
const REGISTRY_ABI = [
|
|
@@ -129,8 +130,11 @@ export async function resolveAgent(agentId, chain) {
|
|
|
129
130
|
* Discovers teequote and workload endpoints from the metadata, then runs
|
|
130
131
|
* the full verification flow: TLS cert, CPU quote, TLS binding, GPU quote,
|
|
131
132
|
* GPU binding, and workload verification.
|
|
133
|
+
*
|
|
134
|
+
* @param reloadAmdKds If true, bypass the local AMD KDS cache and re-fetch
|
|
135
|
+
* VCEK / cert chain / CRL. No effect on TDX agents.
|
|
132
136
|
*/
|
|
133
|
-
export async function verifyAgent(metadata) {
|
|
137
|
+
export async function verifyAgent(metadata, reloadAmdKds = false) {
|
|
134
138
|
const errors = [];
|
|
135
139
|
const checks = {};
|
|
136
140
|
const report = {};
|
|
@@ -142,13 +146,13 @@ export async function verifyAgent(metadata) {
|
|
|
142
146
|
if (!hasTeeAttestation) {
|
|
143
147
|
errors.push("Agent does not support tee-attestation");
|
|
144
148
|
checks.metadata_valid = false;
|
|
145
|
-
return makeResult("ERC-8004", { checks, report, errors });
|
|
149
|
+
return makeResult("ERC-8004", { checks: orderChecks(checks), report, errors });
|
|
146
150
|
}
|
|
147
151
|
const teequoteEndpoint = findTeequoteEndpoint(metadata.services);
|
|
148
152
|
if (!teequoteEndpoint) {
|
|
149
153
|
errors.push("No teequote service endpoint found in agent metadata");
|
|
150
154
|
checks.metadata_valid = false;
|
|
151
|
-
return makeResult("ERC-8004", { checks, report, errors });
|
|
155
|
+
return makeResult("ERC-8004", { checks: orderChecks(checks), report, errors });
|
|
152
156
|
}
|
|
153
157
|
checks.metadata_valid = true;
|
|
154
158
|
// 2. Derive URLs
|
|
@@ -170,13 +174,13 @@ export async function verifyAgent(metadata) {
|
|
|
170
174
|
let tlsFingerprint;
|
|
171
175
|
try {
|
|
172
176
|
tlsFingerprint = await getTlsCertFingerprint(host, port);
|
|
173
|
-
checks.
|
|
177
|
+
checks.tls_cert_fetched = true;
|
|
174
178
|
report.tls_fingerprint = tlsFingerprint.toString("hex");
|
|
175
179
|
}
|
|
176
180
|
catch (e) {
|
|
177
181
|
errors.push(`Failed to get TLS certificate: ${e.message}`);
|
|
178
|
-
checks.
|
|
179
|
-
return makeResult("ERC-8004", { checks, report, errors });
|
|
182
|
+
checks.tls_cert_fetched = false;
|
|
183
|
+
return makeResult("ERC-8004", { checks: orderChecks(checks), report, errors });
|
|
180
184
|
}
|
|
181
185
|
// 4. Fetch and verify CPU quote
|
|
182
186
|
let cpuData;
|
|
@@ -190,10 +194,10 @@ export async function verifyAgent(metadata) {
|
|
|
190
194
|
catch (e) {
|
|
191
195
|
errors.push(`Failed to fetch CPU quote: ${e.message}`);
|
|
192
196
|
checks.cpu_quote_fetched = false;
|
|
193
|
-
return makeResult("ERC-8004", { checks, report, errors });
|
|
197
|
+
return makeResult("ERC-8004", { checks: orderChecks(checks), report, errors });
|
|
194
198
|
}
|
|
195
|
-
const cpuResult = await checkCpuAttestation(cpuData);
|
|
196
|
-
checks.
|
|
199
|
+
const cpuResult = await checkCpuAttestation(cpuData, "", reloadAmdKds);
|
|
200
|
+
checks.cpu_quote_verified = cpuResult.valid;
|
|
197
201
|
report.cpu = cpuResult.report;
|
|
198
202
|
report.cpu_type = cpuResult.attestationType;
|
|
199
203
|
if (!cpuResult.valid)
|
|
@@ -202,14 +206,14 @@ export async function verifyAgent(metadata) {
|
|
|
202
206
|
const reportDataHex = cpuResult.report.report_data ?? "";
|
|
203
207
|
if (reportDataHex.length >= 64) {
|
|
204
208
|
const firstHalf = reportDataHex.slice(0, 64);
|
|
205
|
-
checks.
|
|
206
|
-
if (!checks.
|
|
209
|
+
checks.tls_binding_verified = firstHalf === tlsFingerprint.toString("hex");
|
|
210
|
+
if (!checks.tls_binding_verified) {
|
|
207
211
|
errors.push(`TLS binding failed: report_data first half (${firstHalf.slice(0, 16)}...) ` +
|
|
208
212
|
`!= TLS fingerprint (${tlsFingerprint.toString("hex").slice(0, 16)}...)`);
|
|
209
213
|
}
|
|
210
214
|
}
|
|
211
215
|
else {
|
|
212
|
-
checks.
|
|
216
|
+
checks.tls_binding_verified = false;
|
|
213
217
|
errors.push("report_data too short for TLS binding check");
|
|
214
218
|
}
|
|
215
219
|
// 6. GPU quote (optional)
|
|
@@ -237,7 +241,7 @@ export async function verifyAgent(metadata) {
|
|
|
237
241
|
}
|
|
238
242
|
if (gpuPresent) {
|
|
239
243
|
const gpuResult = await checkNvidiaGpuAttestation(gpuData);
|
|
240
|
-
checks.
|
|
244
|
+
checks.gpu_quote_verified = gpuResult.valid;
|
|
241
245
|
report.gpu = gpuResult.report;
|
|
242
246
|
if (!gpuResult.valid)
|
|
243
247
|
errors.push(...gpuResult.errors);
|
|
@@ -245,14 +249,14 @@ export async function verifyAgent(metadata) {
|
|
|
245
249
|
const gpuNonce = gpuJson.nonce ?? "";
|
|
246
250
|
if (reportDataHex.length >= 128) {
|
|
247
251
|
const secondHalf = reportDataHex.slice(64, 128);
|
|
248
|
-
checks.
|
|
249
|
-
if (!checks.
|
|
252
|
+
checks.gpu_binding_verified = secondHalf === gpuNonce;
|
|
253
|
+
if (!checks.gpu_binding_verified) {
|
|
250
254
|
errors.push(`GPU binding failed: report_data second half (${secondHalf.slice(0, 16)}...) ` +
|
|
251
255
|
`!= GPU nonce (${gpuNonce.slice(0, 16)}...)`);
|
|
252
256
|
}
|
|
253
257
|
}
|
|
254
258
|
else {
|
|
255
|
-
checks.
|
|
259
|
+
checks.gpu_binding_verified = false;
|
|
256
260
|
errors.push("report_data too short for GPU binding check");
|
|
257
261
|
}
|
|
258
262
|
}
|
|
@@ -264,7 +268,7 @@ export async function verifyAgent(metadata) {
|
|
|
264
268
|
const dockerCompose = extractDockerCompose(await resp.text());
|
|
265
269
|
checks.workload_fetched = true;
|
|
266
270
|
const workloadResult = await verifyWorkload(cpuData, dockerCompose);
|
|
267
|
-
checks.
|
|
271
|
+
checks.workload_binding_verified = workloadResult.status === "authentic_match";
|
|
268
272
|
report.workload = workloadResult;
|
|
269
273
|
if (workloadResult.status === "authentic_mismatch") {
|
|
270
274
|
errors.push("Workload mismatch: VM is authentic but docker-compose does not match");
|
|
@@ -277,21 +281,31 @@ export async function verifyAgent(metadata) {
|
|
|
277
281
|
errors.push(`Failed to fetch workload: ${e.message}`);
|
|
278
282
|
checks.workload_fetched = false;
|
|
279
283
|
}
|
|
284
|
+
// 8. Proof of cloud: confirm the quote was produced on a Secret VM.
|
|
285
|
+
const pocResult = await checkProofOfCloud(cpuData);
|
|
286
|
+
checks.proof_of_cloud_verified = pocResult.valid;
|
|
287
|
+
if (pocResult.report.proof_of_cloud !== undefined) {
|
|
288
|
+
report.proof_of_cloud = pocResult.report.proof_of_cloud;
|
|
289
|
+
}
|
|
290
|
+
if (!pocResult.valid) {
|
|
291
|
+
errors.push(...pocResult.errors);
|
|
292
|
+
}
|
|
280
293
|
// Overall validity
|
|
281
294
|
const requiredChecks = [
|
|
282
295
|
checks.metadata_valid,
|
|
283
|
-
checks.
|
|
296
|
+
checks.tls_cert_fetched,
|
|
284
297
|
checks.cpu_quote_fetched,
|
|
285
|
-
checks.
|
|
286
|
-
checks.
|
|
287
|
-
!!checks.
|
|
298
|
+
checks.cpu_quote_verified,
|
|
299
|
+
checks.tls_binding_verified,
|
|
300
|
+
!!checks.workload_binding_verified,
|
|
301
|
+
!!checks.proof_of_cloud_verified,
|
|
288
302
|
];
|
|
289
303
|
if (gpuPresent) {
|
|
290
|
-
requiredChecks.push(!!checks.
|
|
291
|
-
requiredChecks.push(!!checks.
|
|
304
|
+
requiredChecks.push(!!checks.gpu_quote_verified);
|
|
305
|
+
requiredChecks.push(!!checks.gpu_binding_verified);
|
|
292
306
|
}
|
|
293
307
|
const valid = requiredChecks.every(Boolean);
|
|
294
|
-
return makeResult("ERC-8004", { valid, checks, report, errors });
|
|
308
|
+
return makeResult("ERC-8004", { valid, checks: orderChecks(checks), report, errors });
|
|
295
309
|
}
|
|
296
310
|
// ---------------------------------------------------------------------------
|
|
297
311
|
// Public: checkAgent
|
|
@@ -301,8 +315,11 @@ export async function verifyAgent(metadata) {
|
|
|
301
315
|
*
|
|
302
316
|
* Resolves the agent's metadata from the on-chain registry, then runs
|
|
303
317
|
* the full verification flow via verifyAgent.
|
|
318
|
+
*
|
|
319
|
+
* @param reloadAmdKds If true, bypass the local AMD KDS cache and re-fetch
|
|
320
|
+
* VCEK / cert chain / CRL. No effect on TDX agents.
|
|
304
321
|
*/
|
|
305
|
-
export async function checkAgent(agentId, chain) {
|
|
322
|
+
export async function checkAgent(agentId, chain, reloadAmdKds = false) {
|
|
306
323
|
const errors = [];
|
|
307
324
|
const checks = {};
|
|
308
325
|
let metadata;
|
|
@@ -313,9 +330,9 @@ export async function checkAgent(agentId, chain) {
|
|
|
313
330
|
catch (e) {
|
|
314
331
|
errors.push(`Failed to resolve agent: ${e.message}`);
|
|
315
332
|
checks.agent_resolved = false;
|
|
316
|
-
return makeResult("ERC-8004", { checks, errors });
|
|
333
|
+
return makeResult("ERC-8004", { checks: orderChecks(checks), errors });
|
|
317
334
|
}
|
|
318
|
-
const result = await verifyAgent(metadata);
|
|
335
|
+
const result = await verifyAgent(metadata, reloadAmdKds);
|
|
319
336
|
result.checks = { agent_resolved: true, ...result.checks };
|
|
320
337
|
return result;
|
|
321
338
|
}
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/amd.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { AttestationResult } from "./types.js";
|
|
2
|
-
export declare function checkSevCpuAttestation(dataOrUrl: string, product?: string): Promise<AttestationResult>;
|
|
2
|
+
export declare function checkSevCpuAttestation(dataOrUrl: string, product?: string, reloadAmdKds?: boolean): Promise<AttestationResult>;
|