@oxdeai/conformance 1.1.0 → 1.3.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/CHANGELOG.md ADDED
@@ -0,0 +1,44 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@oxdeai/conformance` will be documented in this file.
4
+
5
+ The format is based on Keep a Changelog.
6
+ This project follows Semantic Versioning.
7
+
8
+ ---
9
+
10
+ ## [1.3.0] - 2026-03-08
11
+
12
+ ### Changed
13
+
14
+ - Protocol-stack release alignment to the v1.3 line with synchronized versioning.
15
+ - Conformance package publication metadata updated to target `@oxdeai/core@^1.3.0`.
16
+
17
+ ### Notes
18
+
19
+ - `@oxdeai/conformance@1.3.0` is released together with:
20
+ - `@oxdeai/core@1.3.0`
21
+ - `@oxdeai/sdk@1.3.0`
22
+ - Validator behavior and vector semantics remain aligned with the existing deterministic protocol guarantees from `1.2.x`.
23
+
24
+ ---
25
+
26
+ ## [1.2.0] - 2026-03-08
27
+
28
+ ### Added
29
+
30
+ - Protocol milestone vectors for non-forgeable verification.
31
+ - Authorization signature verification coverage (Ed25519, `alg`, `kid`, tamper/unknown-key/unknown-alg cases).
32
+ - Envelope signature verification coverage with deterministic fail-closed outcomes.
33
+
34
+ ### Changed
35
+
36
+ - Validator alignment with `verifyAuthorization(...)` and enhanced `verifyEnvelope(...)` behaviors.
37
+ - Deterministic conformance output expanded for v1.2 protocol-stack verification paths.
38
+
39
+ ### Notes
40
+
41
+ - `@oxdeai/conformance@1.2.0` is released together with:
42
+ - `@oxdeai/core@1.2.0`
43
+ - `@oxdeai/sdk@1.2.0`
44
+ - `@oxdeai/cli` remains on a separate tooling version line.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Conformance vectors and validator for the OxDeAI protocol.
8
8
  Passing validation means the implementation reproduces expected deterministic artifacts (hashes, statuses, and verification outputs) from frozen vectors.
9
9
 
10
10
  ## Version Coupling
11
- - `@oxdeai/conformance@1.0.2` targets protocol/core `1.0.2` behavior.
11
+ - `@oxdeai/conformance@1.3.x` targets protocol/core `1.3.x` behavior.
12
12
  - Use matching major/minor protocol versions when validating.
13
13
 
14
14
  ## Included Vector Sets
@@ -18,8 +18,11 @@ Passing validation means the implementation reproduces expected deterministic ar
18
18
  - `audit-chain.json`
19
19
  - `audit-verification.json`
20
20
  - `envelope-verification.json`
21
+ - `authorization-verification.json`
22
+ - `authorization-signature-verification.json`
23
+ - `envelope-signature-verification.json`
21
24
 
22
- Current validator assertion count: `50`.
25
+ Current validator assertion count: `94`.
23
26
 
24
27
  ## Usage
25
28
  From repo root:
@@ -32,7 +35,7 @@ pnpm -C packages/conformance validate
32
35
  Expected success output includes:
33
36
 
34
37
  ```text
35
- Conformance passed: 40 assertions
38
+ Conformance passed: 94 assertions
36
39
  ```
37
40
 
38
41
  ## Adapter Contract
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TEST ONLY — DO NOT USE IN PRODUCTION.
3
+ *
4
+ * Deterministic Ed25519 fixture for conformance vectors/validation.
5
+ * This keypair is intentionally public test material and not a deployable secret.
6
+ */
7
+ export declare const TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION = "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIBx0hBPi6cIYPo/JZbavNXDDLlfV1vj+IyS+R4oq2Zvx\n-----END PRIVATE KEY-----";
8
+ export declare const TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION = "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAWiMMGTYK7zzHwZXLzDpCshxAH6Lgx8gVsJaixePuY7g=\n-----END PUBLIC KEY-----";
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TEST ONLY — DO NOT USE IN PRODUCTION.
3
+ *
4
+ * Deterministic Ed25519 fixture for conformance vectors/validation.
5
+ * This keypair is intentionally public test material and not a deployable secret.
6
+ */
7
+ export const TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION = `-----BEGIN PRIVATE KEY-----
8
+ MC4CAQAwBQYDK2VwBCIEIBx0hBPi6cIYPo/JZbavNXDDLlfV1vj+IyS+R4oq2Zvx
9
+ -----END PRIVATE KEY-----`;
10
+ export const TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION = `-----BEGIN PUBLIC KEY-----
11
+ MCowBQYDK2VwAyEAWiMMGTYK7zzHwZXLzDpCshxAH6Lgx8gVsJaixePuY7g=
12
+ -----END PUBLIC KEY-----`;
13
+ //# sourceMappingURL=ed25519.test-only.fixture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ed25519.test-only.fixture.js","sourceRoot":"","sources":["../../../src/fixtures/ed25519.test-only.fixture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,0DAA0D,GAAG;;0BAEhD,CAAC;AAE3B,MAAM,CAAC,MAAM,yDAAyD,GAAG;;yBAEhD,CAAC"}
@@ -1,7 +1,19 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { resolve } from "node:path";
3
3
  import { createHash } from "node:crypto";
4
- import { encodeCanonicalState, encodeEnvelope, PolicyEngine, sha256HexFromJson, verifyAuthorization, verifyAuditEvents, verifyEnvelope, verifySnapshot } from "@oxdeai/core";
4
+ import { encodeCanonicalState, encodeEnvelope, PolicyEngine, sha256HexFromJson, signAuthorizationEd25519, signEnvelopeEd25519, verifyAuthorization, verifyAuditEvents, verifyEnvelope, verifySnapshot } from "@oxdeai/core";
5
+ import { TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION, TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION, } from "./fixtures/ed25519.test-only.fixture.js";
6
+ const TEST_KEYSET = {
7
+ issuer: "oxdeai.policy-engine",
8
+ version: "1",
9
+ keys: [
10
+ {
11
+ kid: "2026-01",
12
+ alg: "Ed25519",
13
+ public_key: TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION
14
+ }
15
+ ]
16
+ };
5
17
  const CORE_ENGINE_SECRET = "test-secret";
6
18
  const CORE_POLICY_ID = "a".repeat(64);
7
19
  const INTENT_BINDING_FIELDS = [
@@ -257,7 +269,12 @@ function validateAuthorizationVerificationVectors(ctx, adapter) {
257
269
  for (const v of file.vectors) {
258
270
  const id = String(v.id);
259
271
  const input = asRecord(v.input);
260
- const auth = asRecord(input.auth);
272
+ const auth = {
273
+ alg: "HMAC-SHA256",
274
+ kid: "legacy",
275
+ signature: "legacy-placeholder",
276
+ ...asRecord(input.auth)
277
+ };
261
278
  const opts = (input.opts ? asRecord(input.opts) : {});
262
279
  const expected = asRecord(v.expected);
263
280
  const got = adapter.verifyAuthorization(auth, opts);
@@ -265,6 +282,76 @@ function validateAuthorizationVerificationVectors(ctx, adapter) {
265
282
  eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
266
283
  }
267
284
  }
285
+ function makeSignedAuthorizationBase(now = 1730000000) {
286
+ return signAuthorizationEd25519({
287
+ auth_id: "f".repeat(64),
288
+ issuer: "oxdeai.policy-engine",
289
+ audience: "merchant-gateway",
290
+ intent_hash: "a".repeat(64),
291
+ state_hash: "b".repeat(64),
292
+ policy_id: "c".repeat(64),
293
+ decision: "ALLOW",
294
+ issued_at: now,
295
+ expiry: now + 60,
296
+ kid: "2026-01"
297
+ }, TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION);
298
+ }
299
+ function validateAuthorizationSignatureVectors(ctx, adapter) {
300
+ const file = loadJson("authorization-signature-verification.json");
301
+ for (const v of file.vectors) {
302
+ const id = String(v.id);
303
+ const mode = String(v.mode);
304
+ const expected = asRecord(v.expected);
305
+ let auth = makeSignedAuthorizationBase();
306
+ const opts = {
307
+ now: 1730000010,
308
+ expectedIssuer: "oxdeai.policy-engine",
309
+ expectedAudience: "merchant-gateway",
310
+ expectedPolicyId: "c".repeat(64),
311
+ trustedKeySets: TEST_KEYSET,
312
+ requireSignatureVerification: true,
313
+ consumedAuthIds: []
314
+ };
315
+ if (mode === "invalid-signature") {
316
+ auth = { ...auth, signature: `${auth.signature.slice(0, -2)}aa` };
317
+ }
318
+ else if (mode === "wrong-kid") {
319
+ auth = { ...auth, kid: "unknown-kid" };
320
+ }
321
+ else if (mode === "wrong-issuer") {
322
+ auth = { ...auth, issuer: "other-issuer" };
323
+ }
324
+ else if (mode === "wrong-audience") {
325
+ const { signature: _sig, alg: _alg, ...unsigned } = auth;
326
+ auth = signAuthorizationEd25519({
327
+ ...unsigned,
328
+ audience: "other-audience"
329
+ }, TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION);
330
+ opts.expectedAudience = "merchant-gateway";
331
+ }
332
+ else if (mode === "tampered-field") {
333
+ auth = { ...auth, state_hash: "d".repeat(64) };
334
+ }
335
+ else if (mode === "expired") {
336
+ const { signature: _sig, alg: _alg, ...unsigned } = auth;
337
+ auth = signAuthorizationEd25519({
338
+ ...unsigned,
339
+ issued_at: 100,
340
+ expiry: 110
341
+ }, TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION);
342
+ opts.now = 120;
343
+ }
344
+ else if (mode === "replay") {
345
+ opts.consumedAuthIds = [auth.auth_id];
346
+ }
347
+ else if (mode === "unknown-alg") {
348
+ auth = { ...auth, alg: "Unknown" };
349
+ }
350
+ const got = adapter.verifyAuthorization(auth, opts);
351
+ eq(ctx, `${id} status`, got.status, String(expected.status));
352
+ eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
353
+ }
354
+ }
268
355
  function validateSnapshotVectors(ctx, adapter) {
269
356
  const file = loadJson("snapshot-hash.json");
270
357
  for (const v of file.vectors) {
@@ -397,6 +484,63 @@ function validateEnvelopeVectors(ctx, adapter) {
397
484
  eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
398
485
  }
399
486
  }
487
+ function validateEnvelopeSignatureVectors(ctx, adapter) {
488
+ const file = loadJson("envelope-signature-verification.json");
489
+ const engine = makeEngine();
490
+ const state = makeBaseState();
491
+ const bytes = encodeCanonicalState(engine.exportState(state));
492
+ const policyId = engine.computePolicyId();
493
+ const events = [
494
+ {
495
+ type: "INTENT_RECEIVED",
496
+ intent_hash: "11".repeat(32),
497
+ agent_id: "agent-1",
498
+ timestamp: 100,
499
+ policyId
500
+ },
501
+ {
502
+ type: "STATE_CHECKPOINT",
503
+ stateHash: verifySnapshot(bytes, { expectedPolicyId: policyId }).stateHash,
504
+ timestamp: 101,
505
+ policyId
506
+ }
507
+ ];
508
+ const signed = signEnvelopeEd25519({
509
+ formatVersion: 1,
510
+ snapshot: bytes,
511
+ events
512
+ }, { issuer: "oxdeai.policy-engine", kid: "2026-01", privateKeyPem: TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION });
513
+ for (const v of file.vectors) {
514
+ const id = String(v.id);
515
+ const mode = String(v.mode);
516
+ const expected = asRecord(v.expected);
517
+ let env = structuredClone(signed);
518
+ const opts = {
519
+ mode: "strict",
520
+ expectedPolicyId: policyId,
521
+ expectedIssuer: "oxdeai.policy-engine",
522
+ trustedKeySets: TEST_KEYSET,
523
+ requireSignatureVerification: true,
524
+ now: 1730000010
525
+ };
526
+ if (mode === "tampered-envelope") {
527
+ env = { ...env, events: [...env.events, { type: "DECISION", intent_hash: "11".repeat(32), decision: "ALLOW", reasons: [], policy_version: "v1", timestamp: 102, policyId }] };
528
+ }
529
+ else if (mode === "unknown-alg") {
530
+ env = { ...env, alg: "Unknown" };
531
+ }
532
+ else if (mode === "unknown-kid") {
533
+ env = { ...env, kid: "missing-kid" };
534
+ }
535
+ else if (mode === "malformed-signature") {
536
+ env = { ...env, signature: "!!!not-base64!!!" };
537
+ }
538
+ const wire = encodeEnvelope(env);
539
+ const got = adapter.verifyEnvelope(wire, opts);
540
+ eq(ctx, `${id} status`, got.status, String(expected.status));
541
+ eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
542
+ }
543
+ }
400
544
  function buildAuditVerificationCases(adapter) {
401
545
  const expectedPolicyId = "a".repeat(64);
402
546
  const mismatchPolicyId = "b".repeat(64);
@@ -502,10 +646,12 @@ function main() {
502
646
  validateIntentHashVectors(ctx, adapter);
503
647
  validateAuthorizationVectors(ctx, adapter);
504
648
  validateAuthorizationVerificationVectors(ctx, adapter);
649
+ validateAuthorizationSignatureVectors(ctx, adapter);
505
650
  validateSnapshotVectors(ctx, adapter);
506
651
  validateAuditChainVectors(ctx, adapter);
507
652
  validateAuditVerificationVectors(ctx, adapter);
508
653
  validateEnvelopeVectors(ctx, adapter);
654
+ validateEnvelopeSignatureVectors(ctx, adapter);
509
655
  if (ctx.failures.length > 0) {
510
656
  console.error(`\nConformance failed: ${ctx.failures.length} assertion(s)`);
511
657
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxdeai/conformance",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Conformance test suite for OxDeAI Core implementations, ensuring compliance with the deterministic policy engine protocol through standardized test cases and validation tools.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "publishConfig": {
33
33
  "dependencies": {
34
- "@oxdeai/core": "^1.1.0"
34
+ "@oxdeai/core": "^1.3.0"
35
35
  }
36
36
  }
37
37
  }
@@ -0,0 +1,11 @@
1
+ # Conformance Crypto Fixtures
2
+
3
+ TEST ONLY — DO NOT USE IN PRODUCTION.
4
+
5
+ This directory contains deterministic cryptographic fixtures used only for conformance vector generation/validation.
6
+
7
+ Rules:
8
+
9
+ - Production private keys must never be committed.
10
+ - Fixtures are allowed only in explicit fixture paths and must be labeled non-production.
11
+ - Deterministic fixtures should be minimized and isolated to test/conformance scope.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * TEST ONLY — DO NOT USE IN PRODUCTION.
3
+ *
4
+ * Deterministic Ed25519 fixture for conformance vectors/validation.
5
+ * This keypair is intentionally public test material and not a deployable secret.
6
+ */
7
+
8
+ export const TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION = `-----BEGIN PRIVATE KEY-----
9
+ MC4CAQAwBQYDK2VwBCIEIBx0hBPi6cIYPo/JZbavNXDDLlfV1vj+IyS+R4oq2Zvx
10
+ -----END PRIVATE KEY-----`;
11
+
12
+ export const TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION = `-----BEGIN PUBLIC KEY-----
13
+ MCowBQYDK2VwAyEAWiMMGTYK7zzHwZXLzDpCshxAH6Lgx8gVsJaixePuY7g=
14
+ -----END PUBLIC KEY-----`;
package/src/validate.ts CHANGED
@@ -6,12 +6,18 @@ import {
6
6
  encodeEnvelope,
7
7
  PolicyEngine,
8
8
  sha256HexFromJson,
9
+ signAuthorizationEd25519,
10
+ signEnvelopeEd25519,
9
11
  verifyAuthorization,
10
12
  verifyAuditEvents,
11
13
  verifyEnvelope,
12
14
  verifySnapshot
13
15
  } from "@oxdeai/core";
14
- import type { AuthorizationV1, Intent, State, VerificationResult } from "@oxdeai/core";
16
+ import type { AuthorizationV1, Intent, KeySet, State, VerificationResult } from "@oxdeai/core";
17
+ import {
18
+ TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION,
19
+ TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION,
20
+ } from "./fixtures/ed25519.test-only.fixture.js";
15
21
 
16
22
  type JsonRecord = Record<string, unknown>;
17
23
 
@@ -25,6 +31,9 @@ type AuthorizationLike = {
25
31
  decision: "ALLOW" | "DENY";
26
32
  issued_at: number;
27
33
  expiry: number;
34
+ alg: "Ed25519" | "HMAC-SHA256";
35
+ kid: string;
36
+ signature: string;
28
37
  state_snapshot_hash: string;
29
38
  expires_at: number;
30
39
  engine_signature: string;
@@ -43,16 +52,38 @@ type ConformanceAdapter = {
43
52
  events: unknown[],
44
53
  opts?: { expectedPolicyId?: string; mode?: "strict" | "best-effort"; requireStateAnchors?: boolean }
45
54
  ): VerificationResult;
46
- verifyEnvelope(bytes: Uint8Array, opts?: { expectedPolicyId?: string; mode?: "strict" | "best-effort" }): VerificationResult;
55
+ verifyEnvelope(bytes: Uint8Array, opts?: {
56
+ expectedPolicyId?: string;
57
+ mode?: "strict" | "best-effort";
58
+ expectedIssuer?: string;
59
+ trustedKeySets?: KeySet | readonly KeySet[];
60
+ requireSignatureVerification?: boolean;
61
+ now?: number;
62
+ }): VerificationResult;
47
63
  verifyAuthorization(auth: AuthorizationV1, opts?: {
48
64
  now?: number;
49
65
  expectedIssuer?: string;
50
66
  expectedAudience?: string;
51
67
  expectedPolicyId?: string;
52
68
  consumedAuthIds?: readonly string[];
69
+ trustedKeySets?: KeySet | readonly KeySet[];
70
+ requireSignatureVerification?: boolean;
71
+ legacyHmacSecret?: string;
53
72
  }): VerificationResult;
54
73
  };
55
74
 
75
+ const TEST_KEYSET: KeySet = {
76
+ issuer: "oxdeai.policy-engine",
77
+ version: "1",
78
+ keys: [
79
+ {
80
+ kid: "2026-01",
81
+ alg: "Ed25519",
82
+ public_key: TEST_ONLY_ED25519_PUBLIC_KEY_PEM_DO_NOT_USE_IN_PRODUCTION
83
+ }
84
+ ]
85
+ };
86
+
56
87
  const CORE_ENGINE_SECRET = "test-secret";
57
88
  const CORE_POLICY_ID = "a".repeat(64);
58
89
  const INTENT_BINDING_FIELDS = [
@@ -340,7 +371,12 @@ function validateAuthorizationVerificationVectors(ctx: CheckCtx, adapter: Confor
340
371
  for (const v of file.vectors) {
341
372
  const id = String(v.id);
342
373
  const input = asRecord(v.input);
343
- const auth = asRecord(input.auth) as AuthorizationV1;
374
+ const auth = {
375
+ alg: "HMAC-SHA256",
376
+ kid: "legacy",
377
+ signature: "legacy-placeholder",
378
+ ...(asRecord(input.auth) as Record<string, unknown>)
379
+ } as AuthorizationV1;
344
380
  const opts = (input.opts ? asRecord(input.opts) : {}) as {
345
381
  now?: number;
346
382
  expectedIssuer?: string;
@@ -356,6 +392,83 @@ function validateAuthorizationVerificationVectors(ctx: CheckCtx, adapter: Confor
356
392
  }
357
393
  }
358
394
 
395
+ function makeSignedAuthorizationBase(now = 1730000000): AuthorizationV1 {
396
+ return signAuthorizationEd25519(
397
+ {
398
+ auth_id: "f".repeat(64),
399
+ issuer: "oxdeai.policy-engine",
400
+ audience: "merchant-gateway",
401
+ intent_hash: "a".repeat(64),
402
+ state_hash: "b".repeat(64),
403
+ policy_id: "c".repeat(64),
404
+ decision: "ALLOW",
405
+ issued_at: now,
406
+ expiry: now + 60,
407
+ kid: "2026-01"
408
+ },
409
+ TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION
410
+ );
411
+ }
412
+
413
+ function validateAuthorizationSignatureVectors(ctx: CheckCtx, adapter: ConformanceAdapter): void {
414
+ const file = loadJson<VectorFile>("authorization-signature-verification.json");
415
+
416
+ for (const v of file.vectors) {
417
+ const id = String(v.id);
418
+ const mode = String(v.mode);
419
+ const expected = asRecord(v.expected);
420
+ let auth = makeSignedAuthorizationBase();
421
+ const opts: Parameters<ConformanceAdapter["verifyAuthorization"]>[1] = {
422
+ now: 1730000010,
423
+ expectedIssuer: "oxdeai.policy-engine",
424
+ expectedAudience: "merchant-gateway",
425
+ expectedPolicyId: "c".repeat(64),
426
+ trustedKeySets: TEST_KEYSET,
427
+ requireSignatureVerification: true,
428
+ consumedAuthIds: []
429
+ };
430
+
431
+ if (mode === "invalid-signature") {
432
+ auth = { ...auth, signature: `${auth.signature.slice(0, -2)}aa` };
433
+ } else if (mode === "wrong-kid") {
434
+ auth = { ...auth, kid: "unknown-kid" };
435
+ } else if (mode === "wrong-issuer") {
436
+ auth = { ...auth, issuer: "other-issuer" };
437
+ } else if (mode === "wrong-audience") {
438
+ const { signature: _sig, alg: _alg, ...unsigned } = auth;
439
+ auth = signAuthorizationEd25519(
440
+ {
441
+ ...unsigned,
442
+ audience: "other-audience"
443
+ },
444
+ TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION
445
+ );
446
+ opts.expectedAudience = "merchant-gateway";
447
+ } else if (mode === "tampered-field") {
448
+ auth = { ...auth, state_hash: "d".repeat(64) };
449
+ } else if (mode === "expired") {
450
+ const { signature: _sig, alg: _alg, ...unsigned } = auth;
451
+ auth = signAuthorizationEd25519(
452
+ {
453
+ ...unsigned,
454
+ issued_at: 100,
455
+ expiry: 110
456
+ },
457
+ TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION
458
+ );
459
+ opts.now = 120;
460
+ } else if (mode === "replay") {
461
+ opts.consumedAuthIds = [auth.auth_id];
462
+ } else if (mode === "unknown-alg") {
463
+ auth = { ...auth, alg: "Unknown" as any };
464
+ }
465
+
466
+ const got = adapter.verifyAuthorization(auth, opts);
467
+ eq(ctx, `${id} status`, got.status, String(expected.status));
468
+ eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
469
+ }
470
+ }
471
+
359
472
  function validateSnapshotVectors(ctx: CheckCtx, adapter: ConformanceAdapter): void {
360
473
  const file = loadJson<VectorFile>("snapshot-hash.json");
361
474
 
@@ -498,6 +611,72 @@ function validateEnvelopeVectors(ctx: CheckCtx, adapter: ConformanceAdapter): vo
498
611
  }
499
612
  }
500
613
 
614
+ function validateEnvelopeSignatureVectors(ctx: CheckCtx, adapter: ConformanceAdapter): void {
615
+ const file = loadJson<VectorFile>("envelope-signature-verification.json");
616
+ const engine = makeEngine();
617
+ const state = makeBaseState();
618
+ const bytes = encodeCanonicalState(engine.exportState(state));
619
+ const policyId = engine.computePolicyId();
620
+ const events = [
621
+ {
622
+ type: "INTENT_RECEIVED" as const,
623
+ intent_hash: "11".repeat(32),
624
+ agent_id: "agent-1",
625
+ timestamp: 100,
626
+ policyId
627
+ },
628
+ {
629
+ type: "STATE_CHECKPOINT" as const,
630
+ stateHash: verifySnapshot(bytes, { expectedPolicyId: policyId }).stateHash!,
631
+ timestamp: 101,
632
+ policyId
633
+ }
634
+ ];
635
+ const signed = signEnvelopeEd25519(
636
+ {
637
+ formatVersion: 1,
638
+ snapshot: bytes,
639
+ events
640
+ },
641
+ { issuer: "oxdeai.policy-engine", kid: "2026-01", privateKeyPem: TEST_ONLY_ED25519_PRIVATE_KEY_PEM_DO_NOT_USE_IN_PRODUCTION }
642
+ );
643
+
644
+ for (const v of file.vectors) {
645
+ const id = String(v.id);
646
+ const mode = String(v.mode);
647
+ const expected = asRecord(v.expected);
648
+ let env = structuredClone(signed);
649
+ const opts: Parameters<ConformanceAdapter["verifyEnvelope"]>[1] & {
650
+ trustedKeySets?: KeySet;
651
+ expectedIssuer?: string;
652
+ requireSignatureVerification?: boolean;
653
+ now?: number;
654
+ } = {
655
+ mode: "strict",
656
+ expectedPolicyId: policyId,
657
+ expectedIssuer: "oxdeai.policy-engine",
658
+ trustedKeySets: TEST_KEYSET,
659
+ requireSignatureVerification: true,
660
+ now: 1730000010
661
+ };
662
+
663
+ if (mode === "tampered-envelope") {
664
+ env = { ...env, events: [...env.events, { type: "DECISION", intent_hash: "11".repeat(32), decision: "ALLOW", reasons: [], policy_version: "v1", timestamp: 102, policyId }] as any };
665
+ } else if (mode === "unknown-alg") {
666
+ env = { ...env, alg: "Unknown" as any };
667
+ } else if (mode === "unknown-kid") {
668
+ env = { ...env, kid: "missing-kid" };
669
+ } else if (mode === "malformed-signature") {
670
+ env = { ...env, signature: "!!!not-base64!!!" };
671
+ }
672
+
673
+ const wire = encodeEnvelope(env as any);
674
+ const got = adapter.verifyEnvelope(wire, opts as any);
675
+ eq(ctx, `${id} status`, got.status, String(expected.status));
676
+ eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
677
+ }
678
+ }
679
+
501
680
  function buildAuditVerificationCases(
502
681
  adapter: ConformanceAdapter
503
682
  ): Array<{ status: string; violations: unknown[] }> {
@@ -631,10 +810,12 @@ function main(): void {
631
810
  validateIntentHashVectors(ctx, adapter);
632
811
  validateAuthorizationVectors(ctx, adapter);
633
812
  validateAuthorizationVerificationVectors(ctx, adapter);
813
+ validateAuthorizationSignatureVectors(ctx, adapter);
634
814
  validateSnapshotVectors(ctx, adapter);
635
815
  validateAuditChainVectors(ctx, adapter);
636
816
  validateAuditVerificationVectors(ctx, adapter);
637
817
  validateEnvelopeVectors(ctx, adapter);
818
+ validateEnvelopeSignatureVectors(ctx, adapter);
638
819
 
639
820
  if (ctx.failures.length > 0) {
640
821
  console.error(`\nConformance failed: ${ctx.failures.length} assertion(s)`);
@@ -0,0 +1,121 @@
1
+ {
2
+ "version": "1.2.0",
3
+ "vectors": [
4
+ {
5
+ "id": "authorization-sig-001",
6
+ "mode": "valid",
7
+ "expected": {
8
+ "status": "ok",
9
+ "violations": []
10
+ }
11
+ },
12
+ {
13
+ "id": "authorization-sig-002",
14
+ "mode": "invalid-signature",
15
+ "expected": {
16
+ "status": "invalid",
17
+ "violations": [
18
+ {
19
+ "code": "AUTH_SIGNATURE_INVALID",
20
+ "message": "signature verification failed"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "id": "authorization-sig-003",
27
+ "mode": "wrong-kid",
28
+ "expected": {
29
+ "status": "invalid",
30
+ "violations": [
31
+ {
32
+ "code": "AUTH_KID_UNKNOWN",
33
+ "message": "kid not found for issuer/alg"
34
+ }
35
+ ]
36
+ }
37
+ },
38
+ {
39
+ "id": "authorization-sig-004",
40
+ "mode": "wrong-issuer",
41
+ "expected": {
42
+ "status": "invalid",
43
+ "violations": [
44
+ {
45
+ "code": "AUTH_ISSUER_MISMATCH",
46
+ "message": "issuer does not match expectedIssuer"
47
+ },
48
+ {
49
+ "code": "AUTH_KID_UNKNOWN",
50
+ "message": "kid not found for issuer/alg"
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "id": "authorization-sig-005",
57
+ "mode": "wrong-audience",
58
+ "expected": {
59
+ "status": "invalid",
60
+ "violations": [
61
+ {
62
+ "code": "AUTH_AUDIENCE_MISMATCH",
63
+ "message": "audience does not match expectedAudience"
64
+ }
65
+ ]
66
+ }
67
+ },
68
+ {
69
+ "id": "authorization-sig-006",
70
+ "mode": "tampered-field",
71
+ "expected": {
72
+ "status": "invalid",
73
+ "violations": [
74
+ {
75
+ "code": "AUTH_SIGNATURE_INVALID",
76
+ "message": "signature verification failed"
77
+ }
78
+ ]
79
+ }
80
+ },
81
+ {
82
+ "id": "authorization-sig-007",
83
+ "mode": "expired",
84
+ "expected": {
85
+ "status": "invalid",
86
+ "violations": [
87
+ {
88
+ "code": "AUTH_EXPIRED",
89
+ "message": "authorization has expired"
90
+ }
91
+ ]
92
+ }
93
+ },
94
+ {
95
+ "id": "authorization-sig-008",
96
+ "mode": "replay",
97
+ "expected": {
98
+ "status": "invalid",
99
+ "violations": [
100
+ {
101
+ "code": "AUTH_REPLAY",
102
+ "message": "auth_id has already been consumed"
103
+ }
104
+ ]
105
+ }
106
+ },
107
+ {
108
+ "id": "authorization-sig-009",
109
+ "mode": "unknown-alg",
110
+ "expected": {
111
+ "status": "invalid",
112
+ "violations": [
113
+ {
114
+ "code": "AUTH_ALG_UNSUPPORTED",
115
+ "message": "unsupported signature algorithm"
116
+ }
117
+ ]
118
+ }
119
+ }
120
+ ]
121
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "version": "1.2.0",
3
+ "vectors": [
4
+ {
5
+ "id": "envelope-sig-001",
6
+ "mode": "valid",
7
+ "expected": {
8
+ "status": "ok",
9
+ "violations": []
10
+ }
11
+ },
12
+ {
13
+ "id": "envelope-sig-002",
14
+ "mode": "tampered-envelope",
15
+ "expected": {
16
+ "status": "invalid",
17
+ "violations": [
18
+ {
19
+ "code": "ENVELOPE_SIGNATURE_INVALID",
20
+ "message": "envelope signature verification failed"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "id": "envelope-sig-003",
27
+ "mode": "unknown-alg",
28
+ "expected": {
29
+ "status": "invalid",
30
+ "violations": [
31
+ {
32
+ "code": "ENVELOPE_MALFORMED",
33
+ "message": "invalid verification envelope: $.alg: must be Ed25519"
34
+ }
35
+ ]
36
+ }
37
+ },
38
+ {
39
+ "id": "envelope-sig-004",
40
+ "mode": "unknown-kid",
41
+ "expected": {
42
+ "status": "invalid",
43
+ "violations": [
44
+ {
45
+ "code": "ENVELOPE_KID_UNKNOWN",
46
+ "message": "envelope kid not found for issuer/alg"
47
+ }
48
+ ]
49
+ }
50
+ },
51
+ {
52
+ "id": "envelope-sig-005",
53
+ "mode": "malformed-signature",
54
+ "expected": {
55
+ "status": "invalid",
56
+ "violations": [
57
+ {
58
+ "code": "ENVELOPE_SIGNATURE_INVALID",
59
+ "message": "envelope signature verification failed"
60
+ }
61
+ ]
62
+ }
63
+ }
64
+ ]
65
+ }
@@ -7,8 +7,8 @@
7
7
  "expected": {
8
8
  "status": "ok",
9
9
  "policyId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
10
- "stateHash": "bba76624cc41d3642c6e789c12050a61b1caa063ad51aa7558d78f408c994b68",
11
- "auditHeadHash": "004d44ef83c4503e0117ae66c37c0a3684ad13c2b41b01c8a4e8ef2f73990a19",
10
+ "stateHash": "41f336cb4677d73b2c494e3a8aa6d89196cc603309742227faff06ac4da7333c",
11
+ "auditHeadHash": "210f6da534cd7eb92e4747d56604f57738f9af2e9f4cace24a489f9f00ecbe0c",
12
12
  "violations": []
13
13
  }
14
14
  },
@@ -75,4 +75,4 @@
75
75
  }
76
76
  }
77
77
  ]
78
- }
78
+ }