@emilia-protocol/gate 0.18.2 → 0.20.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +64 -0
  3. package/action-refusal-statement.js +1 -0
  4. package/coverage-reconciliation-attestation.js +1 -0
  5. package/dist/action-refusal-statement.d.ts +109 -0
  6. package/dist/action-refusal-statement.d.ts.map +1 -0
  7. package/dist/action-refusal-statement.js +333 -0
  8. package/dist/action-refusal-statement.js.map +1 -0
  9. package/dist/coverage-reconciliation-attestation.d.ts +29 -0
  10. package/dist/coverage-reconciliation-attestation.d.ts.map +1 -0
  11. package/dist/coverage-reconciliation-attestation.js +111 -0
  12. package/dist/coverage-reconciliation-attestation.js.map +1 -0
  13. package/dist/gate-qualification-v2.d.ts +4 -0
  14. package/dist/gate-qualification-v2.d.ts.map +1 -1
  15. package/dist/gate-qualification-v2.js +39 -47
  16. package/dist/gate-qualification-v2.js.map +1 -1
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +7 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/loss-allocation-schedule.d.ts +53 -0
  22. package/dist/loss-allocation-schedule.d.ts.map +1 -0
  23. package/dist/loss-allocation-schedule.js +351 -0
  24. package/dist/loss-allocation-schedule.js.map +1 -0
  25. package/dist/loss-experience-feed.d.ts +82 -0
  26. package/dist/loss-experience-feed.d.ts.map +1 -0
  27. package/dist/loss-experience-feed.js +314 -0
  28. package/dist/loss-experience-feed.js.map +1 -0
  29. package/dist/open-exposure-ledger-postgres.d.ts +40 -0
  30. package/dist/open-exposure-ledger-postgres.d.ts.map +1 -0
  31. package/dist/open-exposure-ledger-postgres.js +577 -0
  32. package/dist/open-exposure-ledger-postgres.js.map +1 -0
  33. package/dist/open-exposure-ledger.d.ts +243 -0
  34. package/dist/open-exposure-ledger.d.ts.map +1 -0
  35. package/dist/open-exposure-ledger.js +794 -0
  36. package/dist/open-exposure-ledger.js.map +1 -0
  37. package/dist/receipt-census.d.ts +21 -0
  38. package/dist/receipt-census.d.ts.map +1 -0
  39. package/dist/receipt-census.js +162 -0
  40. package/dist/receipt-census.js.map +1 -0
  41. package/dist/reliance-program.d.ts +88 -0
  42. package/dist/reliance-program.d.ts.map +1 -0
  43. package/dist/reliance-program.js +437 -0
  44. package/dist/reliance-program.js.map +1 -0
  45. package/dist/reliance-risk-crypto.d.ts +28 -0
  46. package/dist/reliance-risk-crypto.d.ts.map +1 -0
  47. package/dist/reliance-risk-crypto.js +110 -0
  48. package/dist/reliance-risk-crypto.js.map +1 -0
  49. package/dist/remedy-program.d.ts.map +1 -1
  50. package/dist/remedy-program.js +28 -18
  51. package/dist/remedy-program.js.map +1 -1
  52. package/loss-allocation-schedule.js +1 -0
  53. package/loss-experience-feed.js +1 -0
  54. package/open-exposure-ledger-postgres.js +1 -0
  55. package/open-exposure-ledger.js +1 -0
  56. package/package.json +42 -2
  57. package/receipt-census.js +1 -0
  58. package/reliance-program.js +3 -0
  59. package/src/action-refusal-statement.ts +396 -0
  60. package/src/coverage-reconciliation-attestation.ts +107 -0
  61. package/src/gate-qualification-v2.ts +56 -46
  62. package/src/index.ts +7 -0
  63. package/src/loss-allocation-schedule.ts +427 -0
  64. package/src/loss-experience-feed.ts +398 -0
  65. package/src/open-exposure-ledger-postgres.ts +701 -0
  66. package/src/open-exposure-ledger.ts +1213 -0
  67. package/src/receipt-census.ts +163 -0
  68. package/src/reliance-program.ts +499 -0
  69. package/src/reliance-risk-crypto.ts +114 -0
  70. package/src/remedy-program.ts +28 -17
@@ -0,0 +1,437 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Customer-owned Reliance Program source and deterministic compiler.
5
+ *
6
+ * The signed source is the relying party's policy artifact. Compilation emits
7
+ * the existing Gate Trust Program wire format; it does not create another
8
+ * authorization engine or let a presenter select the acceptance bar.
9
+ */
10
+ import crypto from 'node:crypto';
11
+ import { canonicalize, hashCanonical } from './execution-binding.js';
12
+ import { TRUST_PROGRAM_VERSION, trustProgramDigest, validateTrustProgram, } from './trust-program.js';
13
+ import { createPinnedEvidenceAdapter } from './trust-program-adapters.js';
14
+ export const RELIANCE_PROGRAM_SOURCE_VERSION = 'EP-RELIANCE-PROGRAM-SOURCE-v1';
15
+ export const RELIANCE_PROGRAM_VERSION = 'EP-RELIANCE-PROGRAM-v1';
16
+ export const RELIANCE_PROGRAM_SIGNATURE_ALGORITHM = 'Ed25519';
17
+ export const RELIANCE_PROGRAM_ADMISSIBILITY_EVIDENCE = 'ep-admissibility-evaluation';
18
+ export const RELIANCE_PROGRAM_ADMISSIBILITY_VERIFIER = 'ep-admissibility-profile:v1';
19
+ const DOMAIN = `${RELIANCE_PROGRAM_VERSION}\0`;
20
+ const DIGEST = /^sha256:[0-9a-f]{64}$/;
21
+ const ID = /^[A-Za-z0-9][A-Za-z0-9._:@/-]{0,255}$/;
22
+ const TRUST_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
23
+ const CAID = /^caid:1:[a-z][a-z0-9.-]*\.[1-9][0-9]*:jcs-sha256:[A-Za-z0-9_-]{43}$/;
24
+ const SOURCE_KEYS = new Set([
25
+ '@version', 'program_id', 'version', 'relying_party', 'root_caid',
26
+ 'action_digest', 'valid_from', 'expires_at', 'stages', 'execution',
27
+ ]);
28
+ const RELYING_PARTY_KEYS = new Set(['id', 'key_id']);
29
+ const STAGE_KEYS = new Set(['stage_id', 'depends_on', 'rule', 'profiles']);
30
+ const PROFILE_REF_KEYS = new Set([
31
+ 'profile_id', 'profile_hash', 'evaluation_max_age_sec', 'revocation_required',
32
+ ]);
33
+ const EXECUTION_KEYS = new Set([
34
+ 'depends_on', 'consequence_mode', 'capability_template_digest', 'escrow_profile_digest',
35
+ ]);
36
+ const ENVELOPE_KEYS = new Set(['@version', 'source', 'source_digest', 'signature']);
37
+ const SIGNATURE_KEYS = new Set(['algorithm', 'key_id', 'value']);
38
+ const TRUSTED_SIGNER_KEYS = new Set(['relying_party_id', 'public_key']);
39
+ const MAX_STAGES = 64;
40
+ const MAX_PROFILES_PER_STAGE = 64;
41
+ const MAX_PROFILE_CATALOG = 1024;
42
+ const MAX_PROFILE_BYTES = 262_144;
43
+ export class RelianceProgramValidationError extends TypeError {
44
+ code;
45
+ constructor(code, message) {
46
+ super(message);
47
+ this.name = 'RelianceProgramValidationError';
48
+ this.code = code;
49
+ }
50
+ }
51
+ function refuse(code, message) {
52
+ throw new RelianceProgramValidationError(code, message);
53
+ }
54
+ function isRecord(value) {
55
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
56
+ return false;
57
+ const prototype = Object.getPrototypeOf(value);
58
+ return prototype === Object.prototype || prototype === null;
59
+ }
60
+ function isDataRecord(value) {
61
+ return isRecord(value) && Reflect.ownKeys(value).every((key) => {
62
+ if (typeof key !== 'string')
63
+ return false;
64
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
65
+ return descriptor?.enumerable === true && Object.hasOwn(descriptor, 'value');
66
+ });
67
+ }
68
+ function exact(value, keys) {
69
+ return isDataRecord(value)
70
+ && Reflect.ownKeys(value).length === keys.size
71
+ && Object.keys(value).every((key) => keys.has(key));
72
+ }
73
+ function canonicalCopy(value) {
74
+ return JSON.parse(canonicalize(value));
75
+ }
76
+ function deepFreeze(value) {
77
+ if (!value || typeof value !== 'object' || Object.isFrozen(value))
78
+ return value;
79
+ Object.freeze(value);
80
+ for (const child of Object.values(value))
81
+ deepFreeze(child);
82
+ return value;
83
+ }
84
+ function digest(value) {
85
+ return `sha256:${hashCanonical(value)}`;
86
+ }
87
+ function strictInstant(value) {
88
+ if (typeof value !== 'string'
89
+ || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/.test(value))
90
+ return NaN;
91
+ const parsed = Date.parse(value);
92
+ return Number.isFinite(parsed) ? parsed : NaN;
93
+ }
94
+ function exactIdentifiers(value, maximum = MAX_STAGES) {
95
+ return Array.isArray(value) && value.length <= maximum
96
+ && value.every((entry) => typeof entry === 'string' && TRUST_ID.test(entry))
97
+ && new Set(value).size === value.length;
98
+ }
99
+ function validateRule(rule, profileCount) {
100
+ if (!isDataRecord(rule) || !['all', 'any', 'threshold'].includes(rule.mode))
101
+ return false;
102
+ const keys = rule.mode === 'threshold'
103
+ ? new Set(['mode', 'required', 'distinct_subjects', 'distinct_keys'])
104
+ : new Set(['mode', 'distinct_subjects', 'distinct_keys']);
105
+ if (!exact(rule, keys)
106
+ || typeof rule.distinct_subjects !== 'boolean'
107
+ || typeof rule.distinct_keys !== 'boolean')
108
+ return false;
109
+ if (rule.mode !== 'threshold')
110
+ return true;
111
+ return Number.isSafeInteger(rule.required) && rule.required >= 1 && rule.required <= profileCount;
112
+ }
113
+ function validateSource(value) {
114
+ try {
115
+ canonicalize(value);
116
+ }
117
+ catch {
118
+ refuse('source_not_canonical', 'reliance program source is not canonicalizable JSON');
119
+ }
120
+ if (!exact(value, SOURCE_KEYS) || value['@version'] !== RELIANCE_PROGRAM_SOURCE_VERSION
121
+ || !exact(value.relying_party, RELYING_PARTY_KEYS)) {
122
+ refuse('source_schema_invalid', 'reliance program source is not a closed v1 object');
123
+ }
124
+ if (typeof value.program_id !== 'string' || !TRUST_ID.test(value.program_id)
125
+ || !Number.isSafeInteger(value.version) || value.version < 1
126
+ || typeof value.relying_party.id !== 'string' || !ID.test(value.relying_party.id)
127
+ || typeof value.relying_party.key_id !== 'string' || !TRUST_ID.test(value.relying_party.key_id)
128
+ || typeof value.root_caid !== 'string' || !CAID.test(value.root_caid)
129
+ || typeof value.action_digest !== 'string' || !DIGEST.test(value.action_digest)) {
130
+ refuse('source_binding_invalid', 'relying party, CAID, or action binding is invalid');
131
+ }
132
+ const validFrom = strictInstant(value.valid_from);
133
+ const expiresAt = strictInstant(value.expires_at);
134
+ if (!Number.isFinite(validFrom) || !Number.isFinite(expiresAt) || expiresAt <= validFrom) {
135
+ refuse('source_time_window_invalid', 'reliance program validity window is invalid');
136
+ }
137
+ if (!Array.isArray(value.stages) || value.stages.length < 1 || value.stages.length > MAX_STAGES) {
138
+ refuse('source_stage_count_invalid', 'reliance program stage count is invalid');
139
+ }
140
+ const stageIds = new Set();
141
+ for (const stage of value.stages) {
142
+ if (!exact(stage, STAGE_KEYS) || typeof stage.stage_id !== 'string'
143
+ || !TRUST_ID.test(stage.stage_id) || stageIds.has(stage.stage_id)
144
+ || !exactIdentifiers(stage.depends_on)
145
+ || !Array.isArray(stage.profiles) || stage.profiles.length < 1
146
+ || stage.profiles.length > MAX_PROFILES_PER_STAGE
147
+ || !validateRule(stage.rule, stage.profiles.length)) {
148
+ refuse('source_stage_invalid', 'reliance program stage is invalid');
149
+ }
150
+ stageIds.add(stage.stage_id);
151
+ const profileIds = new Set();
152
+ for (const reference of stage.profiles) {
153
+ if (!exact(reference, PROFILE_REF_KEYS)
154
+ || typeof reference.profile_id !== 'string' || !ID.test(reference.profile_id)
155
+ || profileIds.has(reference.profile_id)
156
+ || typeof reference.profile_hash !== 'string' || !DIGEST.test(reference.profile_hash)
157
+ || !Number.isSafeInteger(reference.evaluation_max_age_sec)
158
+ || reference.evaluation_max_age_sec < 1 || reference.evaluation_max_age_sec > 31_536_000
159
+ || typeof reference.revocation_required !== 'boolean') {
160
+ refuse('source_profile_reference_invalid', 'admissibility profile reference is invalid');
161
+ }
162
+ profileIds.add(reference.profile_id);
163
+ }
164
+ }
165
+ if (!exact(value.execution, EXECUTION_KEYS)
166
+ || !exactIdentifiers(value.execution.depends_on)
167
+ || value.execution.depends_on.length < 1
168
+ || !['receipt-program', 'action-escrow'].includes(value.execution.consequence_mode)
169
+ || (value.execution.consequence_mode === 'receipt-program'
170
+ && (!DIGEST.test(value.execution.capability_template_digest)
171
+ || value.execution.escrow_profile_digest !== null))
172
+ || (value.execution.consequence_mode === 'action-escrow'
173
+ && (!DIGEST.test(value.execution.escrow_profile_digest)
174
+ || value.execution.capability_template_digest !== null))) {
175
+ refuse('source_execution_invalid', 'reliance program consequence owner is invalid');
176
+ }
177
+ }
178
+ function signingBytes(source) {
179
+ return Buffer.concat([
180
+ Buffer.from(DOMAIN, 'utf8'),
181
+ Buffer.from(canonicalize(source), 'utf8'),
182
+ ]);
183
+ }
184
+ function publicKey(value) {
185
+ try {
186
+ if (value instanceof crypto.KeyObject) {
187
+ const key = value.type === 'public' ? value : crypto.createPublicKey(value);
188
+ return key.asymmetricKeyType === 'ed25519' ? key : null;
189
+ }
190
+ if (typeof value !== 'string' || !/^[A-Za-z0-9_-]+$/.test(value))
191
+ return null;
192
+ const bytes = Buffer.from(value, 'base64url');
193
+ if (bytes.toString('base64url') !== value)
194
+ return null;
195
+ const key = crypto.createPublicKey({ key: bytes, type: 'spki', format: 'der' });
196
+ return key.asymmetricKeyType === 'ed25519' ? key : null;
197
+ }
198
+ catch {
199
+ return null;
200
+ }
201
+ }
202
+ export function relianceProgramSourceDigest(source) {
203
+ validateSource(source);
204
+ return digest(source);
205
+ }
206
+ export function signRelianceProgram(source, privateKey) {
207
+ validateSource(source);
208
+ const key = privateKey instanceof crypto.KeyObject
209
+ ? privateKey : crypto.createPrivateKey(privateKey);
210
+ if (key.asymmetricKeyType !== 'ed25519') {
211
+ refuse('signing_key_invalid', 'reliance program signing key must be Ed25519');
212
+ }
213
+ const frozenSource = canonicalCopy(source);
214
+ const signature = crypto.sign(null, signingBytes(frozenSource), key).toString('base64url');
215
+ return deepFreeze({
216
+ '@version': RELIANCE_PROGRAM_VERSION,
217
+ source: frozenSource,
218
+ source_digest: digest(frozenSource),
219
+ signature: {
220
+ algorithm: RELIANCE_PROGRAM_SIGNATURE_ALGORITHM,
221
+ key_id: frozenSource.relying_party.key_id,
222
+ value: signature,
223
+ },
224
+ });
225
+ }
226
+ export function verifyRelianceProgram(envelope, { trustedKeys = {} } = {}) {
227
+ if (!exact(envelope, ENVELOPE_KEYS) || envelope['@version'] !== RELIANCE_PROGRAM_VERSION
228
+ || !exact(envelope.signature, SIGNATURE_KEYS)
229
+ || envelope.signature.algorithm !== RELIANCE_PROGRAM_SIGNATURE_ALGORITHM
230
+ || typeof envelope.source_digest !== 'string' || !DIGEST.test(envelope.source_digest)
231
+ || typeof envelope.signature.key_id !== 'string'
232
+ || typeof envelope.signature.value !== 'string'
233
+ || !/^[A-Za-z0-9_-]+$/.test(envelope.signature.value)
234
+ || Buffer.from(envelope.signature.value, 'base64url').length !== 64
235
+ || Buffer.from(envelope.signature.value, 'base64url').toString('base64url') !== envelope.signature.value) {
236
+ return { valid: false, reason: 'envelope_schema_invalid', source_digest: null };
237
+ }
238
+ try {
239
+ validateSource(envelope.source);
240
+ }
241
+ catch (error) {
242
+ return { valid: false, reason: error instanceof RelianceProgramValidationError
243
+ ? error.code : 'source_schema_invalid', source_digest: null };
244
+ }
245
+ if (envelope.signature.key_id !== envelope.source.relying_party.key_id) {
246
+ return { valid: false, reason: 'signature_key_mismatch', source_digest: envelope.source_digest };
247
+ }
248
+ const computed = digest(envelope.source);
249
+ if (computed !== envelope.source_digest) {
250
+ return { valid: false, reason: 'source_digest_mismatch', source_digest: computed };
251
+ }
252
+ if (!isRecord(trustedKeys) || !Object.hasOwn(trustedKeys, envelope.signature.key_id)) {
253
+ return { valid: false, reason: 'relying_party_key_untrusted', source_digest: computed };
254
+ }
255
+ const signer = trustedKeys[envelope.signature.key_id];
256
+ if (!exact(signer, TRUSTED_SIGNER_KEYS)
257
+ || signer.relying_party_id !== envelope.source.relying_party.id) {
258
+ return { valid: false, reason: 'relying_party_identity_mismatch', source_digest: computed };
259
+ }
260
+ const key = publicKey(signer.public_key);
261
+ if (!key) {
262
+ return { valid: false, reason: 'relying_party_key_untrusted', source_digest: computed };
263
+ }
264
+ const valid = crypto.verify(null, signingBytes(envelope.source), key, Buffer.from(envelope.signature.value, 'base64url'));
265
+ if (!valid)
266
+ return { valid: false, reason: 'signature_invalid', source_digest: computed };
267
+ return {
268
+ valid: true,
269
+ reason: null,
270
+ source_digest: computed,
271
+ relying_party_id: envelope.source.relying_party.id,
272
+ key_id: envelope.signature.key_id,
273
+ };
274
+ }
275
+ function profileMap(profiles) {
276
+ if (!Array.isArray(profiles) || profiles.length > MAX_PROFILE_CATALOG) {
277
+ refuse('profile_catalog_invalid', 'profile catalog must be a bounded array');
278
+ }
279
+ const result = new Map();
280
+ for (const profile of profiles) {
281
+ if (!isDataRecord(profile) || typeof profile.id !== 'string' || !ID.test(profile.id)
282
+ || typeof profile.profile_hash !== 'string' || !DIGEST.test(profile.profile_hash)
283
+ || result.has(profile.id)) {
284
+ refuse('profile_catalog_invalid', 'profile catalog contains an invalid or duplicate entry');
285
+ }
286
+ const { profile_hash: profileHash, ...profileBody } = profile;
287
+ let computed;
288
+ try {
289
+ const canonical = canonicalize(profileBody);
290
+ if (Buffer.byteLength(canonical, 'utf8') > MAX_PROFILE_BYTES) {
291
+ refuse('profile_catalog_invalid', `profile ${profile.id} exceeds the size limit`);
292
+ }
293
+ computed = `sha256:${crypto.createHash('sha256').update(canonical, 'utf8').digest('hex')}`;
294
+ }
295
+ catch (error) {
296
+ if (error instanceof RelianceProgramValidationError)
297
+ throw error;
298
+ refuse('profile_integrity_invalid', `profile ${profile.id} is not canonicalizable`);
299
+ }
300
+ if (computed !== profileHash) {
301
+ refuse('profile_integrity_invalid', `profile ${profile.id} self-hash does not match its content`);
302
+ }
303
+ result.set(profile.id, profile);
304
+ }
305
+ return result;
306
+ }
307
+ function verifiedProfile(profile) {
308
+ const catalog = profileMap([profile]);
309
+ return catalog.values().next().value;
310
+ }
311
+ /**
312
+ * Adapt the existing Admissibility Profile evaluator into one constructor-
313
+ * pinned Trust Program verifier. The runtime artifact supplies evidence only;
314
+ * the profile, evaluator, projection, and clock are all relying-party owned.
315
+ */
316
+ export function createAdmissibilityProfileTrustAdapter({ profile, evaluate, project, now, }) {
317
+ const pinnedProfile = canonicalCopy(verifiedProfile(profile));
318
+ if (typeof evaluate !== 'function' || typeof project !== 'function') {
319
+ refuse('admissibility_adapter_invalid', 'admissibility evaluator and projection are required');
320
+ }
321
+ const profileHash = pinnedProfile.profile_hash;
322
+ return createPinnedEvidenceAdapter({
323
+ policyDigest: profileHash,
324
+ trustedConfiguration: {
325
+ profile_id: pinnedProfile.id,
326
+ profile_hash: profileHash,
327
+ },
328
+ verify: async (evidence, context) => {
329
+ if (!exact(evidence, new Set(['bundle']))) {
330
+ return { valid: false, reason: 'admissibility_evidence_schema_invalid' };
331
+ }
332
+ const evaluationTime = typeof now === 'function' ? now() : now;
333
+ let evaluation;
334
+ try {
335
+ evaluation = await evaluate(pinnedProfile, evidence.bundle, {
336
+ ...(evaluationTime === undefined ? {} : { now: evaluationTime }),
337
+ expectedProfileHash: profileHash,
338
+ });
339
+ }
340
+ catch {
341
+ return { valid: false, reason: 'admissibility_evaluation_failed' };
342
+ }
343
+ if (!isDataRecord(evaluation)
344
+ || evaluation.profile_hash !== profileHash
345
+ || evaluation.verdict !== 'admissible') {
346
+ const verdict = typeof evaluation?.verdict === 'string'
347
+ && /^[a-z_]{1,64}$/.test(evaluation.verdict)
348
+ ? evaluation.verdict : 'unverifiable';
349
+ return { valid: false, reason: `admissibility_${verdict}` };
350
+ }
351
+ let projection;
352
+ try {
353
+ projection = await project({
354
+ evaluation: Object.freeze(canonicalCopy(evaluation)),
355
+ bundle: evidence.bundle,
356
+ });
357
+ }
358
+ catch {
359
+ return { valid: false, reason: 'admissibility_projection_failed' };
360
+ }
361
+ if (!isDataRecord(projection)) {
362
+ return { valid: false, reason: 'admissibility_projection_invalid' };
363
+ }
364
+ return {
365
+ valid: true,
366
+ binding_digest: context.expectedBindingDigest,
367
+ policy_digest: profileHash,
368
+ subjects: projection.subjects,
369
+ key_fingerprints: projection.key_fingerprints,
370
+ issued_at: projection.issued_at,
371
+ expires_at: projection.expires_at,
372
+ revocation_checked_at: projection.revocation_checked_at ?? null,
373
+ };
374
+ },
375
+ });
376
+ }
377
+ export function compileRelianceProgram(envelope, { trustedKeys = {}, profiles = [] } = {}) {
378
+ const verified = verifyRelianceProgram(envelope, { trustedKeys });
379
+ if (verified.valid !== true) {
380
+ refuse(verified.reason ?? 'source_unverified', 'reliance program source did not verify');
381
+ }
382
+ const signed = envelope;
383
+ const source = canonicalCopy(signed.source);
384
+ const catalog = profileMap(profiles);
385
+ const trace = [];
386
+ const stages = source.stages.map((stage) => ({
387
+ stage_id: stage.stage_id,
388
+ depends_on: [...stage.depends_on],
389
+ rule: canonicalCopy(stage.rule),
390
+ requirements: stage.profiles.map((reference, index) => {
391
+ const profile = catalog.get(reference.profile_id);
392
+ if (!profile || profile.profile_hash !== reference.profile_hash) {
393
+ refuse('profile_pin_mismatch', `profile ${reference.profile_id} does not match the relying-party pin`);
394
+ }
395
+ const requirementId = `admissibility-${String(index + 1).padStart(2, '0')}`;
396
+ trace.push({
397
+ stage_id: stage.stage_id,
398
+ requirement_id: requirementId,
399
+ profile_id: reference.profile_id,
400
+ profile_hash: reference.profile_hash,
401
+ });
402
+ return {
403
+ requirement_id: requirementId,
404
+ evidence_type: RELIANCE_PROGRAM_ADMISSIBILITY_EVIDENCE,
405
+ verifier_profile: RELIANCE_PROGRAM_ADMISSIBILITY_VERIFIER,
406
+ policy_digest: reference.profile_hash,
407
+ max_age_sec: reference.evaluation_max_age_sec,
408
+ revocation_required: reference.revocation_required,
409
+ };
410
+ }),
411
+ }));
412
+ const program = {
413
+ '@version': TRUST_PROGRAM_VERSION,
414
+ program_id: source.program_id,
415
+ version: source.version,
416
+ root_caid: source.root_caid,
417
+ action_digest: source.action_digest,
418
+ valid_from: source.valid_from,
419
+ expires_at: source.expires_at,
420
+ stages,
421
+ execution: canonicalCopy(source.execution),
422
+ };
423
+ const checked = validateTrustProgram(program);
424
+ if (!checked.valid) {
425
+ refuse('compiled_program_invalid', `compiled Trust Program is invalid: ${checked.reason}`);
426
+ }
427
+ return deepFreeze({
428
+ version: RELIANCE_PROGRAM_VERSION,
429
+ source_digest: verified.source_digest,
430
+ relying_party_id: verified.relying_party_id,
431
+ program,
432
+ program_digest: trustProgramDigest(program),
433
+ trace,
434
+ claim_boundary: 'Compilation proves a pinned RP program maps to the existing Trust Program; it does not prove evidence sufficiency, authorization, or execution.',
435
+ });
436
+ }
437
+ //# sourceMappingURL=reliance-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reliance-program.js","sourceRoot":"","sources":["../src/reliance-program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import crypto from 'node:crypto';
2
+ export type RiskRecord = Record<string, any>;
3
+ export type TrustedRiskKeys = Record<string, {
4
+ issuer_id: string;
5
+ public_key: string;
6
+ }>;
7
+ export declare const RISK_DIGEST: RegExp;
8
+ export declare const RISK_CAID: RegExp;
9
+ export declare const RISK_ID: RegExp;
10
+ export declare function riskRecord(value: unknown): value is RiskRecord;
11
+ export declare function riskExact(value: unknown, keys: readonly string[]): value is RiskRecord;
12
+ export declare function riskIdentifier(value: unknown): value is string;
13
+ export declare function riskInstant(value: unknown): number;
14
+ export declare function riskDigest(value: unknown): string;
15
+ export declare function riskClone<T>(value: T): T;
16
+ export declare function riskFreeze<T>(value: T): T;
17
+ export declare function signRiskBody(version: string, bodyInput: RiskRecord, signer: {
18
+ issuer_id: string;
19
+ key_id: string;
20
+ private_key: crypto.KeyLike;
21
+ }): RiskRecord;
22
+ export declare function verifyRiskBody(artifact: unknown, version: string, trustedKeys: TrustedRiskKeys | undefined): {
23
+ valid: boolean;
24
+ reason: string | null;
25
+ body: RiskRecord | null;
26
+ artifact_digest: string | null;
27
+ };
28
+ //# sourceMappingURL=reliance-risk-crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reliance-risk-crypto.d.ts","sourceRoot":"","sources":["../src/reliance-risk-crypto.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExF,eAAO,MAAM,WAAW,QAA0B,CAAC;AACnD,eAAO,MAAM,SAAS,QAA6F,CAAC;AACpH,eAAO,MAAM,OAAO,QAA4C,CAAC;AAGjE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAS9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,IAAI,UAAU,CAGtF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAExC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAKzC;AAMD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAA;CAAE,GACzE,UAAU,CAcZ;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,eAAe,GAAG,SAAS,GACvC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA4BpG"}
@@ -0,0 +1,110 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import crypto from 'node:crypto';
4
+ import { canonicalize, hashCanonical } from './execution-binding.js';
5
+ export const RISK_DIGEST = /^sha256:[0-9a-f]{64}$/;
6
+ export const RISK_CAID = /^caid:1:[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[1-9][0-9]*:jcs-sha256:[A-Za-z0-9_-]{43}$/;
7
+ export const RISK_ID = /^[A-Za-z0-9][A-Za-z0-9:_.@/+\-]{0,511}$/;
8
+ const RFC3339 = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,9}))?Z$/;
9
+ export function riskRecord(value) {
10
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
11
+ return false;
12
+ const prototype = Object.getPrototypeOf(value);
13
+ if (prototype !== Object.prototype && prototype !== null)
14
+ return false;
15
+ return Reflect.ownKeys(value).every((key) => {
16
+ if (typeof key !== 'string')
17
+ return false;
18
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
19
+ return descriptor?.enumerable === true && Object.hasOwn(descriptor, 'value');
20
+ });
21
+ }
22
+ export function riskExact(value, keys) {
23
+ return riskRecord(value) && Reflect.ownKeys(value).length === keys.length
24
+ && keys.every((key) => Object.hasOwn(value, key));
25
+ }
26
+ export function riskIdentifier(value) {
27
+ return typeof value === 'string' && RISK_ID.test(value);
28
+ }
29
+ export function riskInstant(value) {
30
+ if (typeof value !== 'string')
31
+ return NaN;
32
+ const match = value.match(RFC3339);
33
+ if (!match)
34
+ return NaN;
35
+ const parsed = Date.parse(value);
36
+ if (!Number.isFinite(parsed))
37
+ return NaN;
38
+ return new Date(parsed).toISOString().slice(0, 19) === value.slice(0, 19) ? parsed : NaN;
39
+ }
40
+ export function riskDigest(value) {
41
+ return `sha256:${hashCanonical(value)}`;
42
+ }
43
+ export function riskClone(value) {
44
+ return JSON.parse(canonicalize(value));
45
+ }
46
+ export function riskFreeze(value) {
47
+ if (!value || typeof value !== 'object' || Object.isFrozen(value))
48
+ return value;
49
+ Object.freeze(value);
50
+ for (const child of Object.values(value))
51
+ riskFreeze(child);
52
+ return value;
53
+ }
54
+ function signingBytes(version, body) {
55
+ return Buffer.from(`${version}\0${canonicalize(body)}`, 'utf8');
56
+ }
57
+ export function signRiskBody(version, bodyInput, signer) {
58
+ const key = signer.private_key instanceof crypto.KeyObject
59
+ ? signer.private_key : crypto.createPrivateKey(signer.private_key);
60
+ if (key.asymmetricKeyType !== 'ed25519')
61
+ throw new TypeError('risk artifact signing key must be Ed25519');
62
+ if (!riskIdentifier(signer.issuer_id) || !riskIdentifier(signer.key_id))
63
+ throw new TypeError('risk artifact issuer is invalid');
64
+ const body = riskClone({ ...bodyInput, issuer: { id: signer.issuer_id, key_id: signer.key_id } });
65
+ const bodyDigest = riskDigest(body);
66
+ const proof = {
67
+ algorithm: 'Ed25519',
68
+ key_id: signer.key_id,
69
+ body_digest: bodyDigest,
70
+ signature_b64u: crypto.sign(null, signingBytes(version, body), key).toString('base64url'),
71
+ };
72
+ return riskFreeze({ ...body, proof });
73
+ }
74
+ export function verifyRiskBody(artifact, version, trustedKeys) {
75
+ const refuse = (reason) => ({ valid: false, reason, body: null, artifact_digest: null });
76
+ try {
77
+ if (!riskRecord(artifact) || !riskRecord(artifact.proof) || !riskRecord(artifact.issuer))
78
+ return refuse('artifact_shape_invalid');
79
+ const proof = artifact.proof;
80
+ const { proof: _proof, ...body } = artifact;
81
+ if (artifact['@version'] !== version || !riskExact(artifact.issuer, ['id', 'key_id'])
82
+ || !riskIdentifier(artifact.issuer.id) || !riskIdentifier(artifact.issuer.key_id)
83
+ || !riskExact(proof, ['algorithm', 'key_id', 'body_digest', 'signature_b64u'])
84
+ || proof.algorithm !== 'Ed25519' || proof.key_id !== artifact.issuer.key_id
85
+ || typeof proof.body_digest !== 'string' || !RISK_DIGEST.test(proof.body_digest)
86
+ || typeof proof.signature_b64u !== 'string' || !/^[A-Za-z0-9_-]+$/.test(proof.signature_b64u)) {
87
+ return refuse('artifact_signature_envelope_invalid');
88
+ }
89
+ if (riskDigest(body) !== proof.body_digest)
90
+ return refuse('digest_mismatch');
91
+ const pin = trustedKeys?.[artifact.issuer.key_id];
92
+ if (!pin || pin.issuer_id !== artifact.issuer.id)
93
+ return refuse('issuer_untrusted');
94
+ const keyBytes = Buffer.from(pin.public_key, 'base64url');
95
+ if (keyBytes.toString('base64url') !== pin.public_key)
96
+ return refuse('pinned_key_invalid');
97
+ const key = crypto.createPublicKey({ key: keyBytes, type: 'spki', format: 'der' });
98
+ if (key.asymmetricKeyType !== 'ed25519')
99
+ return refuse('pinned_key_invalid');
100
+ const signature = Buffer.from(proof.signature_b64u, 'base64url');
101
+ if (signature.length !== 64 || signature.toString('base64url') !== proof.signature_b64u
102
+ || !crypto.verify(null, signingBytes(version, body), key, signature))
103
+ return refuse('signature_invalid');
104
+ return { valid: true, reason: null, body, artifact_digest: riskDigest(artifact) };
105
+ }
106
+ catch {
107
+ return refuse('artifact_invalid');
108
+ }
109
+ }
110
+ //# sourceMappingURL=reliance-risk-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reliance-risk-crypto.js","sourceRoot":"","sources":["../src/reliance-risk-crypto.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remedy-program.d.ts","sourceRoot":"","sources":["../src/remedy-program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remedy-program.d.ts","sourceRoot":"","sources":["../src/remedy-program.ts"],"names":[],"mappings":"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"}