@oxdeai/conformance 1.0.3 → 1.1.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.
@@ -1,7 +1,7 @@
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, verifyAuditEvents, verifyEnvelope, verifySnapshot } from "@oxdeai/core";
4
+ import { encodeCanonicalState, encodeEnvelope, PolicyEngine, sha256HexFromJson, verifyAuthorization, verifyAuditEvents, verifyEnvelope, verifySnapshot } from "@oxdeai/core";
5
5
  const CORE_ENGINE_SECRET = "test-secret";
6
6
  const CORE_POLICY_ID = "a".repeat(64);
7
7
  const INTENT_BINDING_FIELDS = [
@@ -192,7 +192,8 @@ const coreAdapter = {
192
192
  verifyAuditEvents(events, opts) {
193
193
  return verifyAuditEvents(events, opts);
194
194
  },
195
- verifyEnvelope
195
+ verifyEnvelope,
196
+ verifyAuthorization
196
197
  };
197
198
  function loadJson(name) {
198
199
  const p = resolve(process.cwd(), "vectors", name);
@@ -251,6 +252,19 @@ function validateAuthorizationVectors(ctx, adapter) {
251
252
  eq(ctx, `${id} signature`, authorization.engine_signature, String(expected.signature));
252
253
  }
253
254
  }
255
+ function validateAuthorizationVerificationVectors(ctx, adapter) {
256
+ const file = loadJson("authorization-verification.json");
257
+ for (const v of file.vectors) {
258
+ const id = String(v.id);
259
+ const input = asRecord(v.input);
260
+ const auth = asRecord(input.auth);
261
+ const opts = (input.opts ? asRecord(input.opts) : {});
262
+ const expected = asRecord(v.expected);
263
+ const got = adapter.verifyAuthorization(auth, opts);
264
+ eq(ctx, `${id} status`, got.status, String(expected.status));
265
+ eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
266
+ }
267
+ }
254
268
  function validateSnapshotVectors(ctx, adapter) {
255
269
  const file = loadJson("snapshot-hash.json");
256
270
  for (const v of file.vectors) {
@@ -487,6 +501,7 @@ function main() {
487
501
  console.log(`Running conformance validation with ${adapter.name}`);
488
502
  validateIntentHashVectors(ctx, adapter);
489
503
  validateAuthorizationVectors(ctx, adapter);
504
+ validateAuthorizationVerificationVectors(ctx, adapter);
490
505
  validateSnapshotVectors(ctx, adapter);
491
506
  validateAuditChainVectors(ctx, adapter);
492
507
  validateAuditVerificationVectors(ctx, adapter);
@@ -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.0.3",
3
+ "version": "1.1.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.0.3"
34
+ "@oxdeai/core": "^1.1.0"
35
35
  }
36
36
  }
37
37
  }
package/src/validate.ts CHANGED
@@ -6,16 +6,25 @@ import {
6
6
  encodeEnvelope,
7
7
  PolicyEngine,
8
8
  sha256HexFromJson,
9
+ verifyAuthorization,
9
10
  verifyAuditEvents,
10
11
  verifyEnvelope,
11
12
  verifySnapshot
12
13
  } from "@oxdeai/core";
13
- import type { Intent, State, VerificationResult } from "@oxdeai/core";
14
+ import type { AuthorizationV1, Intent, State, VerificationResult } from "@oxdeai/core";
14
15
 
15
16
  type JsonRecord = Record<string, unknown>;
16
17
 
17
18
  type AuthorizationLike = {
19
+ auth_id: string;
20
+ issuer: string;
21
+ audience: string;
18
22
  intent_hash: string;
23
+ state_hash: string;
24
+ policy_id: string;
25
+ decision: "ALLOW" | "DENY";
26
+ issued_at: number;
27
+ expiry: number;
19
28
  state_snapshot_hash: string;
20
29
  expires_at: number;
21
30
  engine_signature: string;
@@ -35,6 +44,13 @@ type ConformanceAdapter = {
35
44
  opts?: { expectedPolicyId?: string; mode?: "strict" | "best-effort"; requireStateAnchors?: boolean }
36
45
  ): VerificationResult;
37
46
  verifyEnvelope(bytes: Uint8Array, opts?: { expectedPolicyId?: string; mode?: "strict" | "best-effort" }): VerificationResult;
47
+ verifyAuthorization(auth: AuthorizationV1, opts?: {
48
+ now?: number;
49
+ expectedIssuer?: string;
50
+ expectedAudience?: string;
51
+ expectedPolicyId?: string;
52
+ consumedAuthIds?: readonly string[];
53
+ }): VerificationResult;
38
54
  };
39
55
 
40
56
  const CORE_ENGINE_SECRET = "test-secret";
@@ -240,7 +256,8 @@ const coreAdapter: ConformanceAdapter = {
240
256
  verifyAuditEvents(events, opts) {
241
257
  return verifyAuditEvents(events as any, opts);
242
258
  },
243
- verifyEnvelope
259
+ verifyEnvelope,
260
+ verifyAuthorization
244
261
  };
245
262
 
246
263
  function loadJson<T>(name: string): T {
@@ -317,6 +334,28 @@ function validateAuthorizationVectors(ctx: CheckCtx, adapter: ConformanceAdapter
317
334
  }
318
335
  }
319
336
 
337
+ function validateAuthorizationVerificationVectors(ctx: CheckCtx, adapter: ConformanceAdapter): void {
338
+ const file = loadJson<VectorFile>("authorization-verification.json");
339
+
340
+ for (const v of file.vectors) {
341
+ const id = String(v.id);
342
+ const input = asRecord(v.input);
343
+ const auth = asRecord(input.auth) as AuthorizationV1;
344
+ const opts = (input.opts ? asRecord(input.opts) : {}) as {
345
+ now?: number;
346
+ expectedIssuer?: string;
347
+ expectedAudience?: string;
348
+ expectedPolicyId?: string;
349
+ consumedAuthIds?: readonly string[];
350
+ };
351
+ const expected = asRecord(v.expected);
352
+ const got = adapter.verifyAuthorization(auth, opts);
353
+
354
+ eq(ctx, `${id} status`, got.status, String(expected.status));
355
+ eq(ctx, `${id} violations`, got.violations, expected.violations ?? []);
356
+ }
357
+ }
358
+
320
359
  function validateSnapshotVectors(ctx: CheckCtx, adapter: ConformanceAdapter): void {
321
360
  const file = loadJson<VectorFile>("snapshot-hash.json");
322
361
 
@@ -591,6 +630,7 @@ function main(): void {
591
630
 
592
631
  validateIntentHashVectors(ctx, adapter);
593
632
  validateAuthorizationVectors(ctx, adapter);
633
+ validateAuthorizationVerificationVectors(ctx, adapter);
594
634
  validateSnapshotVectors(ctx, adapter);
595
635
  validateAuditChainVectors(ctx, adapter);
596
636
  validateAuditVerificationVectors(ctx, adapter);
@@ -0,0 +1,237 @@
1
+ {
2
+ "version": "1.1.0",
3
+ "vectors": [
4
+ {
5
+ "id": "authorization-verify-001",
6
+ "input": {
7
+ "auth": {
8
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
9
+ "issuer": "oxdeai.policy-engine",
10
+ "audience": "merchant-gateway",
11
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
12
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
13
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
14
+ "decision": "ALLOW",
15
+ "issued_at": 100,
16
+ "expiry": 160
17
+ },
18
+ "opts": {
19
+ "now": 120,
20
+ "expectedIssuer": "oxdeai.policy-engine",
21
+ "expectedAudience": "merchant-gateway",
22
+ "expectedPolicyId": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
23
+ "consumedAuthIds": []
24
+ }
25
+ },
26
+ "expected": {
27
+ "status": "ok",
28
+ "violations": []
29
+ }
30
+ },
31
+ {
32
+ "id": "authorization-verify-002",
33
+ "input": {
34
+ "auth": {
35
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
36
+ "issuer": "oxdeai.policy-engine",
37
+ "audience": "merchant-gateway",
38
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
39
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
40
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
41
+ "decision": "ALLOW",
42
+ "issued_at": 100,
43
+ "expiry": 120
44
+ },
45
+ "opts": {
46
+ "now": 120
47
+ }
48
+ },
49
+ "expected": {
50
+ "status": "invalid",
51
+ "violations": [
52
+ {
53
+ "code": "AUTH_EXPIRED",
54
+ "message": "authorization has expired"
55
+ }
56
+ ]
57
+ }
58
+ },
59
+ {
60
+ "id": "authorization-verify-003",
61
+ "input": {
62
+ "auth": {
63
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
64
+ "issuer": "oxdeai.policy-engine",
65
+ "audience": "merchant-gateway",
66
+ "intent_hash": "",
67
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
68
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
69
+ "decision": "ALLOW",
70
+ "expiry": 160
71
+ },
72
+ "opts": {
73
+ "now": 110
74
+ }
75
+ },
76
+ "expected": {
77
+ "status": "invalid",
78
+ "violations": [
79
+ {
80
+ "code": "AUTH_MISSING_FIELD",
81
+ "message": "intent_hash is required"
82
+ },
83
+ {
84
+ "code": "AUTH_MISSING_FIELD",
85
+ "message": "issued_at must be integer unix seconds"
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ {
91
+ "id": "authorization-verify-004",
92
+ "input": {
93
+ "auth": {
94
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
95
+ "issuer": "oxdeai.policy-engine",
96
+ "audience": "merchant-gateway",
97
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
98
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
99
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
100
+ "decision": "DENY",
101
+ "issued_at": 100,
102
+ "expiry": 160
103
+ },
104
+ "opts": {
105
+ "now": 110
106
+ }
107
+ },
108
+ "expected": {
109
+ "status": "invalid",
110
+ "violations": [
111
+ {
112
+ "code": "AUTH_DECISION_INVALID",
113
+ "message": "authorization decision must be ALLOW"
114
+ }
115
+ ]
116
+ }
117
+ },
118
+ {
119
+ "id": "authorization-verify-005",
120
+ "input": {
121
+ "auth": {
122
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
123
+ "issuer": "oxdeai.policy-engine",
124
+ "audience": "merchant-gateway",
125
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
126
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
127
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
128
+ "decision": "ALLOW",
129
+ "issued_at": 100,
130
+ "expiry": 160
131
+ },
132
+ "opts": {
133
+ "now": 110,
134
+ "consumedAuthIds": [
135
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
136
+ ]
137
+ }
138
+ },
139
+ "expected": {
140
+ "status": "invalid",
141
+ "violations": [
142
+ {
143
+ "code": "AUTH_REPLAY",
144
+ "message": "auth_id has already been consumed"
145
+ }
146
+ ]
147
+ }
148
+ },
149
+ {
150
+ "id": "authorization-verify-006",
151
+ "input": {
152
+ "auth": {
153
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
154
+ "issuer": "oxdeai.policy-engine",
155
+ "audience": "merchant-gateway",
156
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
157
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
158
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
159
+ "decision": "ALLOW",
160
+ "issued_at": 100,
161
+ "expiry": 160
162
+ },
163
+ "opts": {
164
+ "now": 110,
165
+ "expectedAudience": "vault-service"
166
+ }
167
+ },
168
+ "expected": {
169
+ "status": "invalid",
170
+ "violations": [
171
+ {
172
+ "code": "AUTH_AUDIENCE_MISMATCH",
173
+ "message": "audience does not match expectedAudience"
174
+ }
175
+ ]
176
+ }
177
+ },
178
+ {
179
+ "id": "authorization-verify-007",
180
+ "input": {
181
+ "auth": {
182
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
183
+ "issuer": "oxdeai.policy-engine",
184
+ "audience": "merchant-gateway",
185
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
186
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
187
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
188
+ "decision": "ALLOW",
189
+ "issued_at": 100,
190
+ "expiry": 160
191
+ },
192
+ "opts": {
193
+ "now": 110,
194
+ "expectedIssuer": "other-issuer"
195
+ }
196
+ },
197
+ "expected": {
198
+ "status": "invalid",
199
+ "violations": [
200
+ {
201
+ "code": "AUTH_ISSUER_MISMATCH",
202
+ "message": "issuer does not match expectedIssuer"
203
+ }
204
+ ]
205
+ }
206
+ },
207
+ {
208
+ "id": "authorization-verify-008",
209
+ "input": {
210
+ "auth": {
211
+ "auth_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
212
+ "issuer": "oxdeai.policy-engine",
213
+ "audience": "merchant-gateway",
214
+ "intent_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
215
+ "state_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
216
+ "policy_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
217
+ "decision": "ALLOW",
218
+ "issued_at": 100,
219
+ "expiry": 160
220
+ },
221
+ "opts": {
222
+ "now": 110,
223
+ "expectedPolicyId": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
224
+ }
225
+ },
226
+ "expected": {
227
+ "status": "invalid",
228
+ "violations": [
229
+ {
230
+ "code": "AUTH_POLICY_ID_MISMATCH",
231
+ "message": "policy_id does not match expectedPolicyId"
232
+ }
233
+ ]
234
+ }
235
+ }
236
+ ]
237
+ }