caveat-cli 0.20.3 → 0.21.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/privateEvidence/validation.ts","../../src/contracts/factory-private-evidence/capability.v1.schema.json","../../src/contracts/factory-private-evidence/private-frame.v1.schema.json","../../src/contracts/factory-private-evidence/windows-channel.v1.schema.json"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { TextDecoder, isDeepStrictEqual } from 'node:util';\nimport { Ajv2020 } from 'ajv/dist/2020.js';\nimport { visit } from 'jsonc-parser';\nimport capabilitySchema from '../contracts/factory-private-evidence/capability.v1.schema.json' with { type: 'json' };\nimport frameSchema from '../contracts/factory-private-evidence/private-frame.v1.schema.json' with { type: 'json' };\nimport windowsSchema from '../contracts/factory-private-evidence/windows-channel.v1.schema.json' with { type: 'json' };\n\nconst ajv = new Ajv2020({ strict: true, strictRequired: false });\nexport const validateCapability = ajv.compile(capabilitySchema);\nexport const validateFrame = ajv.compile(frameSchema);\nexport const validateWindowsDescriptor = ajv.compile(windowsSchema);\nexport const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\nconst NONCE = /^[0-9a-f]{64}$/;\nexport const MAX_CHANNEL_BYTES = 16384;\n\n/** Strict, bounded JSON. The parser library supplies tokenization and nesting events. */\nexport function strictJson(bytes: Uint8Array, limit = MAX_CHANNEL_BYTES): unknown {\n if (bytes.byteLength === 0 || bytes.byteLength > limit) throw new Error('json_budget');\n const text = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);\n const objects: Set<string>[] = [];\n let depth = 0, invalid = false;\n visit(text, {\n onObjectBegin() { if (++depth > 32) throw new Error('json_depth'); objects.push(new Set()); },\n onObjectProperty(key) { const keys = objects.at(-1)!; if (keys.has(key)) invalid = true; keys.add(key); },\n onObjectEnd() { objects.pop(); depth--; },\n onArrayBegin() { if (++depth > 32) throw new Error('json_depth'); },\n onArrayEnd() { depth--; },\n onError() { invalid = true; },\n }, { disallowComments: true, allowTrailingComma: false, allowEmptyContent: false });\n if (invalid || depth !== 0 || objects.length !== 0) throw new Error('json_invalid');\n return JSON.parse(text);\n}\n\ntype Dict = Record<string, any>; // Schema checks narrow every use below; values never enter logs.\nexport function validateRequest(env: Readonly<Record<string, string | undefined>>) {\n if (env.CAVEAT_FACTORY_PRIVATE_EVIDENCE !== 'v1') return { status: 'off' } as const;\n const collection = env.CAVEAT_FACTORY_PRIVATE_COLLECTION_ID;\n const nonce = env.CAVEAT_FACTORY_PRIVATE_NONCE;\n const channel = env.CAVEAT_FACTORY_PRIVATE_CHANNEL;\n if (!collection || !UUID.test(collection) || !nonce || !NONCE.test(nonce) || !channel || channel.length > MAX_CHANNEL_BYTES)\n return { status: 'unverified', reason: 'request_invalid' } as const;\n if (channel === 'fd:3') return { status: 'valid', collection_id: collection, nonce, transport: 'posix-fd-v1' } as const;\n try {\n const descriptor = strictJson(Buffer.from(channel));\n if (validateWindowsDescriptor(descriptor))\n return { status: 'valid', collection_id: collection, nonce, transport: 'windows-named-pipe-v1' } as const;\n } catch { /* A fixed reason only; never propagate an input or parser error. */ }\n return { status: 'unverified', reason: 'request_invalid' } as const;\n}\n\nexport function selectCapability(request: ReturnType<typeof validateRequest>, capability: unknown,\n expectedVersion: string, platform: string, launchPath: string) {\n if (request.status === 'off') return { status: 'off' } as const;\n if (request.status !== 'valid') return { status: 'unverified', reason: 'request_invalid' } as const;\n if (capability == null) return { status: 'not_supported', reason: 'capability_absent' } as const;\n if (!validateCapability(capability) || (capability as Dict).package_version !== expectedVersion)\n return { status: 'unverified', reason: 'capability_invalid' } as const;\n const common = (capability as Dict).transports.some((t: Dict) =>\n t.id === request.transport && t.platforms.includes(platform) && t.launch_paths.includes(launchPath));\n // This pure selection is NOT permission to open a channel. OS safety must be separately established.\n return common ? { status: 'candidate_requires_os_verification' } as const\n : { status: 'not_supported', reason: 'transport_unsupported' } as const;\n}\n\n/** Validates a synthetic or already received complete channel. Does not read/send a real channel. */\nexport function validateExchange(input: {\n channelBytes: Uint8Array; eof: boolean; publicBytes: Uint8Array;\n request: ReturnType<typeof validateRequest>; capability: unknown; expectedVersion: string;\n peerVerified: boolean; expectedProcess: unknown; platform: string; launchPath: string;\n}): { status: 'valid' | 'unverified'; reason: string } {\n const bad = (reason: string) => ({ status: 'unverified', reason } as const);\n try {\n if (input.request.status !== 'valid' || input.eof !== true || input.peerVerified !== true) return bad('channel_incomplete');\n if (!validateCapability(input.capability) || (input.capability as Dict).package_version !== input.expectedVersion)\n return bad('capability_invalid');\n if (input.channelBytes.byteLength > MAX_CHANNEL_BYTES) return bad('channel_budget');\n const bytes = Buffer.from(input.channelBytes);\n if (bytes.at(-1) !== 10) return bad('frame_framing');\n const lines = bytes.toString('latin1').split('\\n');\n if (lines.length !== 3 || lines[2] !== '') return bad('frame_framing');\n const frames = lines.slice(0, 2).map(line => strictJson(Buffer.from(line, 'latin1')) as Dict);\n if (frames.some(frame => !validateFrame(frame))) return bad('frame_schema');\n const [hello, result] = frames as [Dict, Dict];\n if (hello.type !== 'hello' || result.type !== 'diagnostic_result') return bad('frame_order');\n if (!UUID.test(hello.execution_id)) return bad('frame_identity');\n for (const key of ['schema', 'collection_id', 'nonce', 'execution_id'])\n if (hello[key] !== result[key]) return bad('frame_identity');\n if (hello.collection_id !== input.request.collection_id || hello.nonce !== input.request.nonce ||\n hello.product_version !== input.expectedVersion || hello.process.package_version !== input.expectedVersion ||\n hello.transport !== input.request.transport) return bad('frame_identity');\n if (selectCapability(input.request, input.capability, input.expectedVersion, input.platform, input.launchPath).status !==\n 'candidate_requires_os_verification') return bad('transport_unsupported');\n const p = hello.process;\n if (!input.expectedProcess || !isDeepStrictEqual(p, input.expectedProcess)) return bad('peer_identity');\n const needed: string[] = [];\n for (const [key, reason] of [['parent_pid', 'parent_identity_unavailable'], ['exec_path', 'exec_path_unavailable'],\n ['entry_realpath', 'entry_path_unavailable'], ['build_id', 'build_id_unavailable']])\n if (p[key!] === null) needed.push(reason!);\n if (p.start_identity.source === 'unavailable') needed.push('start_identity_unavailable');\n if (p.identity.kind === 'unknown') needed.push('actor_identity_unavailable');\n if (!isDeepStrictEqual([...needed].sort(), [...p.missing_reasons].sort())) return bad('process_missing_reason');\n if (input.publicBytes.at(-1) !== 10 || input.publicBytes.subarray(0, -1).includes(10)) return bad('public_framing');\n const pub = strictJson(input.publicBytes, 65536) as Dict;\n if (pub.schema !== hello.public_diagnostic_schema || pub.product !== 'caveat' || pub.version !== input.expectedVersion ||\n pub.overall?.status !== result.public_result.overall_status || pub.sync?.status !== result.sync_observation.status ||\n pub.sync?.reason_code !== result.sync_observation.reason_code) return bad('public_mismatch');\n if (result.public_output.bytes !== input.publicBytes.byteLength || result.public_output.sha256 !==\n createHash('sha256').update(input.publicBytes).digest('hex')) return bad('public_bytes_mismatch');\n const sync = result.sync_observation;\n const both = sync.local_head.status === 'observed' && sync.remote_head.status === 'observed';\n const comparison = both ? sync.local_head.value === sync.remote_head.value ? 'equal' : 'different' : 'not_evaluated';\n if (sync.comparison !== comparison) return bad('head_comparison');\n const repo = sync.repo_identity;\n const allowed = repo.status === 'available' ? ['origin_descriptor_observed'] : repo.status === 'not_observed'\n ? ['origin_not_reached'] : ['origin_capture_unverified', 'origin_syntax_unsupported', 'origin_semantics_ambiguous'];\n if (!allowed.includes(repo.reason)) return bad('origin_reason');\n return { status: 'valid', reason: 'complete_synthetic_exchange' };\n } catch { return bad('exchange_invalid'); }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"urn:caveat:factory-private-evidence-capability:v1\",\n \"title\": \"Draft: Caveat official private evidence capability v1\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"schema\",\n \"product\",\n \"package_version\",\n \"public_diagnostic_schema\",\n \"private_protocol\",\n \"transports\",\n \"max_channel_bytes\",\n \"operation_receipt\"\n ],\n \"properties\": {\n \"schema\": {\n \"const\": \"caveat.factory_private_evidence_capability.v1\"\n },\n \"product\": {\n \"const\": \"caveat\"\n },\n \"package_version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\",\n \"maxLength\": 128\n },\n \"public_diagnostic_schema\": {\n \"const\": \"caveat.native_factory_diagnostics.v1\"\n },\n \"private_protocol\": {\n \"const\": \"caveat.factory_private_evidence.v1\"\n },\n \"transports\": {\n \"type\": \"array\",\n \"maxItems\": 2,\n \"uniqueItems\": true,\n \"items\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"platforms\",\n \"launch_paths\"\n ],\n \"properties\": {\n \"id\": {\n \"const\": \"posix-fd-v1\"\n },\n \"platforms\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 2,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"linux\",\n \"darwin\"\n ]\n }\n },\n \"launch_paths\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"direct_node_entry\"\n ]\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"platforms\",\n \"launch_paths\"\n ],\n \"properties\": {\n \"id\": {\n \"const\": \"windows-named-pipe-v1\"\n },\n \"platforms\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"win32\"\n ]\n }\n },\n \"launch_paths\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 2,\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"native_exe\",\n \"powershell_standard_shim\"\n ]\n }\n }\n }\n }\n ]\n },\n \"allOf\": [\n {\n \"contains\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"const\": \"posix-fd-v1\"\n }\n }\n },\n \"minContains\": 0,\n \"maxContains\": 1\n },\n {\n \"contains\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"const\": \"windows-named-pipe-v1\"\n }\n }\n },\n \"minContains\": 0,\n \"maxContains\": 1\n }\n ]\n },\n \"max_channel_bytes\": {\n \"const\": 16384\n },\n \"operation_receipt\": {\n \"const\": \"not_supported\"\n }\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"urn:caveat:factory-private-evidence:v1\",\n \"title\": \"Draft: Caveat official private evidence NDJSON frame v1\",\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"schema\",\n \"collection_id\",\n \"nonce\",\n \"execution_id\",\n \"type\",\n \"product\",\n \"product_version\",\n \"public_diagnostic_schema\",\n \"transport\",\n \"process\"\n ],\n \"properties\": {\n \"schema\": {\n \"const\": \"caveat.factory_private_evidence.v1\"\n },\n \"collection_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n },\n \"nonce\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{64}$\"\n },\n \"execution_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n },\n \"type\": {\n \"const\": \"hello\"\n },\n \"product\": {\n \"const\": \"caveat\"\n },\n \"product_version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\",\n \"maxLength\": 128\n },\n \"public_diagnostic_schema\": {\n \"const\": \"caveat.native_factory_diagnostics.v1\"\n },\n \"transport\": {\n \"enum\": [\n \"posix-fd-v1\",\n \"windows-named-pipe-v1\"\n ]\n },\n \"process\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"pid\",\n \"parent_pid\",\n \"start_identity\",\n \"identity\",\n \"exec_path\",\n \"entry_realpath\",\n \"package_version\",\n \"build_id\",\n \"missing_reasons\"\n ],\n \"properties\": {\n \"pid\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 9007199254740991\n },\n \"parent_pid\": {\n \"anyOf\": [\n {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"start_identity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"source\",\n \"value\"\n ],\n \"properties\": {\n \"source\": {\n \"enum\": [\n \"linux_proc_start\",\n \"windows_process_creation\",\n \"os_process_start\",\n \"unavailable\"\n ]\n },\n \"value\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 256\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"source\": {\n \"const\": \"unavailable\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"value\": {\n \"type\": \"null\"\n }\n }\n },\n \"else\": {\n \"properties\": {\n \"value\": {\n \"type\": \"string\"\n }\n }\n }\n }\n ]\n },\n \"identity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"kind\",\n \"uid\",\n \"gid\",\n \"sid\"\n ],\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"uid_gid\",\n \"windows_sid\",\n \"unknown\"\n ]\n },\n \"uid\": {\n \"anyOf\": [\n {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"gid\": {\n \"anyOf\": [\n {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"sid\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"pattern\": \"^S-1-[0-9]+(?:-[0-9]+)+$\",\n \"maxLength\": 256\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"kind\": {\n \"const\": \"uid_gid\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"uid\": {\n \"type\": \"integer\"\n },\n \"gid\": {\n \"type\": \"integer\"\n },\n \"sid\": {\n \"type\": \"null\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"kind\": {\n \"const\": \"windows_sid\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"uid\": {\n \"type\": \"null\"\n },\n \"gid\": {\n \"type\": \"null\"\n },\n \"sid\": {\n \"type\": \"string\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"kind\": {\n \"const\": \"unknown\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"uid\": {\n \"type\": \"null\"\n },\n \"gid\": {\n \"type\": \"null\"\n },\n \"sid\": {\n \"type\": \"null\"\n }\n }\n }\n }\n ]\n },\n \"exec_path\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4096\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"entry_realpath\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4096\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"package_version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\",\n \"maxLength\": 128\n },\n \"build_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 256\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"missing_reasons\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"enum\": [\n \"parent_identity_unavailable\",\n \"start_identity_unavailable\",\n \"actor_identity_unavailable\",\n \"exec_path_unavailable\",\n \"entry_path_unavailable\",\n \"build_id_unavailable\"\n ]\n }\n }\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"schema\",\n \"collection_id\",\n \"nonce\",\n \"execution_id\",\n \"type\",\n \"public_output\",\n \"public_result\",\n \"sync_observation\",\n \"operation_receipt\"\n ],\n \"properties\": {\n \"schema\": {\n \"const\": \"caveat.factory_private_evidence.v1\"\n },\n \"collection_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n },\n \"nonce\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{64}$\"\n },\n \"execution_id\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n },\n \"type\": {\n \"const\": \"diagnostic_result\"\n },\n \"public_output\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"bytes\",\n \"sha256\"\n ],\n \"properties\": {\n \"bytes\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 9007199254740991\n },\n \"sha256\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{64}$\"\n }\n }\n },\n \"public_result\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"schema\",\n \"overall_status\",\n \"planned_exit_code\"\n ],\n \"properties\": {\n \"schema\": {\n \"const\": \"caveat.native_factory_diagnostics.v1\"\n },\n \"overall_status\": {\n \"enum\": [\n \"ready\",\n \"not_ready\",\n \"unverified\"\n ]\n },\n \"planned_exit_code\": {\n \"enum\": [\n 0,\n 1\n ]\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"overall_status\": {\n \"const\": \"ready\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"planned_exit_code\": {\n \"const\": 0\n }\n }\n },\n \"else\": {\n \"properties\": {\n \"planned_exit_code\": {\n \"const\": 1\n }\n }\n }\n }\n ]\n },\n \"sync_observation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"status\",\n \"reason_code\",\n \"repo_identity\",\n \"local_head\",\n \"remote_head\",\n \"comparison\",\n \"relation_counts\"\n ],\n \"properties\": {\n \"status\": {\n \"enum\": [\n \"ready\",\n \"not_ready\",\n \"unverified\"\n ]\n },\n \"reason_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9_]{0,63}$\"\n },\n \"repo_identity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"status\",\n \"algorithm\",\n \"digest\",\n \"reason\"\n ],\n \"properties\": {\n \"status\": {\n \"enum\": [\n \"available\",\n \"not_observed\",\n \"unverified\"\n ]\n },\n \"algorithm\": {\n \"anyOf\": [\n {\n \"const\": \"origin-descriptor-sha256-v1\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"digest\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{64}$\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"reason\": {\n \"enum\": [\n \"origin_descriptor_observed\",\n \"origin_not_reached\",\n \"origin_capture_unverified\",\n \"origin_syntax_unsupported\",\n \"origin_semantics_ambiguous\"\n ]\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"status\": {\n \"const\": \"available\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"algorithm\": {\n \"const\": \"origin-descriptor-sha256-v1\"\n },\n \"digest\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{64}$\"\n },\n \"reason\": {\n \"const\": \"origin_descriptor_observed\"\n }\n }\n },\n \"else\": {\n \"properties\": {\n \"algorithm\": {\n \"type\": \"null\"\n },\n \"digest\": {\n \"type\": \"null\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"status\": {\n \"const\": \"not_observed\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"reason\": {\n \"const\": \"origin_not_reached\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"status\": {\n \"const\": \"unverified\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"reason\": {\n \"enum\": [\n \"origin_capture_unverified\",\n \"origin_syntax_unsupported\",\n \"origin_semantics_ambiguous\"\n ]\n }\n }\n }\n }\n ]\n },\n \"local_head\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"status\",\n \"value\",\n \"reason\"\n ],\n \"properties\": {\n \"status\": {\n \"enum\": [\n \"observed\",\n \"not_observed\",\n \"unverified\"\n ]\n },\n \"value\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{40}$\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"reason\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9_]{0,63}$\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"status\": {\n \"const\": \"observed\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{40}$\"\n }\n }\n },\n \"else\": {\n \"properties\": {\n \"value\": {\n \"type\": \"null\"\n }\n }\n }\n }\n ]\n },\n \"remote_head\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"status\",\n \"value\",\n \"reason\"\n ],\n \"properties\": {\n \"status\": {\n \"enum\": [\n \"observed\",\n \"not_observed\",\n \"unverified\"\n ]\n },\n \"value\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{40}$\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"reason\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z][a-z0-9_]{0,63}$\"\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"status\": {\n \"const\": \"observed\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9a-f]{40}$\"\n }\n }\n },\n \"else\": {\n \"properties\": {\n \"value\": {\n \"type\": \"null\"\n }\n }\n }\n }\n ]\n },\n \"comparison\": {\n \"enum\": [\n \"equal\",\n \"different\",\n \"not_evaluated\"\n ]\n },\n \"relation_counts\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"status\",\n \"behind\",\n \"ahead\"\n ],\n \"properties\": {\n \"status\": {\n \"const\": \"not_supported\"\n },\n \"behind\": {\n \"type\": \"null\"\n },\n \"ahead\": {\n \"type\": \"null\"\n }\n }\n }\n }\n },\n \"operation_receipt\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"status\",\n \"receipt\"\n ],\n \"properties\": {\n \"status\": {\n \"const\": \"not_supported\"\n },\n \"receipt\": {\n \"type\": \"null\"\n }\n }\n }\n }\n }\n ]\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"urn:caveat:factory-private-evidence-windows-channel:v1\",\n \"title\": \"Draft: local Windows private channel descriptor\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"transport\",\n \"path\",\n \"server_pid\",\n \"server_start_identity\",\n \"owner_sid\"\n ],\n \"properties\": {\n \"transport\": {\n \"const\": \"windows-named-pipe-v1\"\n },\n \"path\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\caveat-evidence-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n },\n \"server_pid\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 9007199254740991\n },\n \"server_start_identity\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 256\n },\n \"owner_sid\": {\n \"type\": \"string\",\n \"pattern\": \"^S-1-[0-9]+(?:-[0-9]+)+$\",\n \"maxLength\": 256\n }\n }\n}\n"],"mappings":"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","names":[]}