@callcium/sdk 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -2
- package/dist/index.d.ts +21 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -13
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
- package/src/constants.ts +1 -0
- package/src/constraint.ts +19 -1
- package/src/index.ts +1 -0
- package/src/policy-coder.ts +13 -2
- package/src/policy-enforcer.ts +74 -7
- package/src/policy-validator.ts +38 -2
- package/src/signature.ts +1 -1
- package/src/types.ts +9 -2
- package/src/validation-issue.ts +14 -0
package/README.md
CHANGED
|
@@ -1,16 +1,91 @@
|
|
|
1
1
|
# @callcium/sdk
|
|
2
2
|
|
|
3
|
-
TypeScript
|
|
3
|
+
TypeScript SDK for the [Callcium](https://callcium.dev) policy engine.
|
|
4
|
+
|
|
5
|
+
Callcium defines type-safe constraints on ABI-encoded data, such as function arguments or a raw payload with no selector, using value ranges, set membership, array quantifiers, and transaction context. This SDK builds policies into canonical policy bytes and validates ABI-encoded data, such as transaction calldata, against a policy offchain, before it is signed.
|
|
4
6
|
|
|
5
7
|
## Install
|
|
6
8
|
|
|
9
|
+
```bash
|
|
10
|
+
npm install @callcium/sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
7
13
|
```bash
|
|
8
14
|
bun add @callcium/sdk
|
|
9
15
|
```
|
|
10
16
|
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
Node.js >=22.11.0. Ships as ESM, built to ES2024 — any browser or runtime with ES2024 support works; no browser floor is tested or declared.
|
|
20
|
+
|
|
21
|
+
## Quick start
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { PolicyBuilder, PolicyEnforcer, arg } from "@callcium/sdk";
|
|
25
|
+
|
|
26
|
+
// function approve(address spender, uint256 amount)
|
|
27
|
+
const policy = PolicyBuilder.create("approve(address,uint256)")
|
|
28
|
+
.add(arg(0).isIn(trustedSpenders)) // spender
|
|
29
|
+
.add(arg(1).lte(1_000_000n * 10n ** 6n)) // amount
|
|
30
|
+
.build();
|
|
31
|
+
|
|
32
|
+
// throws on a violation
|
|
33
|
+
PolicyEnforcer.enforce(policy, calldata);
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## More examples
|
|
37
|
+
|
|
38
|
+
**Nested structs** — target fields deep inside struct arguments by path.
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
// struct SwapParams { address tokenIn; address tokenOut; uint256 amount; }
|
|
42
|
+
// function swap(SwapParams params)
|
|
43
|
+
const policy = PolicyBuilder.create("swap((address,address,uint256))")
|
|
44
|
+
.add(arg(0, 0).notIn(denied)) // params.tokenIn
|
|
45
|
+
.add(arg(0, 1).notIn(denied)) // params.tokenOut
|
|
46
|
+
.add(arg(0, 2).gt(0n)) // params.amount
|
|
47
|
+
.build();
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Arrays** — `ANY`/`ALL` quantifiers across array elements, with length bounds.
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
// struct Transfer { address to; uint256 value; }
|
|
54
|
+
// function batch(Transfer[] transfers)
|
|
55
|
+
const policy = PolicyBuilder.create("batch((address,uint256)[])")
|
|
56
|
+
.add(arg(0).lengthBetween(1, 50)) // transfers.length
|
|
57
|
+
.add(arg(0, Quantifier.ALL, 0).notIn(denied)) // transfers[*].to
|
|
58
|
+
.add(arg(0, Quantifier.ALL, 1).lte(1n * 10n ** 18n)) // transfers[*].value
|
|
59
|
+
.build();
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Context** — constrain `msg.sender`, `msg.value`, `block.timestamp`, `block.number`, `block.chainid`, `tx.origin`, `block.basefee`, and `tx.gasprice`, not just calldata.
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
// function transfer(address to, uint256 amount)
|
|
66
|
+
const policy = PolicyBuilder.create("transfer(address,uint256)")
|
|
67
|
+
.add(msgSender().isIn(operators)) // msg.sender
|
|
68
|
+
.add(msgValue().eq(0n)) // msg.value
|
|
69
|
+
.add(arg(1).lte(100n * 10n ** 18n)) // amount
|
|
70
|
+
.build();
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**OR groups** — compose alternative rule paths; all constraints hold within a group.
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
// function supply(address asset, uint256 amount)
|
|
77
|
+
const policy = PolicyBuilder.create("supply(address,uint256)")
|
|
78
|
+
.add(msgSender().eq(OPERATOR)) // path A
|
|
79
|
+
.or()
|
|
80
|
+
.add(arg(0).isIn(allowed)) // path B
|
|
81
|
+
.build();
|
|
82
|
+
```
|
|
83
|
+
|
|
11
84
|
## Documentation
|
|
12
85
|
|
|
13
|
-
Full
|
|
86
|
+
Full API reference, guides, and the policy spec: [callcium.dev/docs/sdk](https://callcium.dev/docs/sdk).
|
|
87
|
+
|
|
88
|
+
For onchain policy enforcement in Solidity, see [callcium.dev/docs/solidity](https://callcium.dev/docs/solidity).
|
|
14
89
|
|
|
15
90
|
## License
|
|
16
91
|
|
package/dist/index.d.ts
CHANGED
|
@@ -44,8 +44,8 @@ type SelectorMismatchViolation = {
|
|
|
44
44
|
resolvedValue: Hex;
|
|
45
45
|
};
|
|
46
46
|
/**
|
|
47
|
-
* A
|
|
48
|
-
|
|
47
|
+
* A rule referenced a context property not supplied in the execution context — a context-scoped
|
|
48
|
+
* subject, or an `EQ_CTX` operand on either scope.
|
|
49
49
|
*/
|
|
50
50
|
type MissingContextViolation = {
|
|
51
51
|
code: "MISSING_CONTEXT";
|
|
@@ -53,8 +53,8 @@ type MissingContextViolation = {
|
|
|
53
53
|
rule: number;
|
|
54
54
|
scope: number;
|
|
55
55
|
path: Hex; /** Declared type of the missing context property. */
|
|
56
|
-
typeCode: number;
|
|
57
|
-
opCode?: number;
|
|
56
|
+
typeCode: number; /** Operator code with the `Op.NOT` bit intact; absent for a context-scoped subject. */
|
|
57
|
+
opCode?: number; /** Operator payload; absent for a context-scoped subject. */
|
|
58
58
|
operandData?: Hex;
|
|
59
59
|
};
|
|
60
60
|
/**
|
|
@@ -79,6 +79,11 @@ type ValueMismatchViolation = {
|
|
|
79
79
|
operandData: Hex; /** Type code of the failing value's leaf. */
|
|
80
80
|
typeCode: number;
|
|
81
81
|
resolvedValue?: Hex;
|
|
82
|
+
/**
|
|
83
|
+
* Resolved runtime value of a reference operand as a 32-byte word; present when the
|
|
84
|
+
* operator's operand names a reference resolved at enforcement, not a literal.
|
|
85
|
+
*/
|
|
86
|
+
resolvedOperand?: Hex;
|
|
82
87
|
elementIndex?: number;
|
|
83
88
|
};
|
|
84
89
|
/**
|
|
@@ -252,6 +257,10 @@ declare class ConstraintBuilder implements Constraint {
|
|
|
252
257
|
eq(value: ScalarValue): this;
|
|
253
258
|
/** Assert the value does not equal `value`. */
|
|
254
259
|
neq(value: ScalarValue): this;
|
|
260
|
+
/** Assert the value equals the context property `contextPropertyId`. */
|
|
261
|
+
eqCtx(contextPropertyId: number): this;
|
|
262
|
+
/** Assert the value does not equal the context property `contextPropertyId`. */
|
|
263
|
+
neqCtx(contextPropertyId: number): this;
|
|
255
264
|
/** Assert the value is greater than `bound`. */
|
|
256
265
|
gt(bound: bigint | number): this;
|
|
257
266
|
/** Assert the value is less than `bound`. */
|
|
@@ -717,6 +726,8 @@ declare const ContextProperty: CodeMap<readonly [{
|
|
|
717
726
|
readonly label: "tx.gasprice";
|
|
718
727
|
readonly typeCode: 32;
|
|
719
728
|
}]>;
|
|
729
|
+
/** Maximum valid context property ID. */
|
|
730
|
+
declare const MAX_CONTEXT_PROPERTY_ID: number;
|
|
720
731
|
/** Display metadata for a context property code. */
|
|
721
732
|
type ContextPropertyInfo = {
|
|
722
733
|
label: string;
|
|
@@ -774,6 +785,11 @@ declare const OP_TABLE: readonly [{
|
|
|
774
785
|
readonly code: 7;
|
|
775
786
|
readonly label: "in";
|
|
776
787
|
readonly operands: "variadic";
|
|
788
|
+
}, {
|
|
789
|
+
readonly key: "EQ_CTX";
|
|
790
|
+
readonly code: 8;
|
|
791
|
+
readonly label: "== ctx";
|
|
792
|
+
readonly operands: "single";
|
|
777
793
|
}, {
|
|
778
794
|
readonly key: "BITMASK_ALL";
|
|
779
795
|
readonly code: 16;
|
|
@@ -925,5 +941,5 @@ declare class PolicyViolationError extends Error {
|
|
|
925
941
|
constructor(violations: Violation[]);
|
|
926
942
|
}
|
|
927
943
|
//#endregion
|
|
928
|
-
export { type Address, CallciumError, type CallciumErrorCode, type CalldataNavigationViolation, type Constraint, type ConstraintBuilder, type Context, ContextProperty, type ContextPropertyInfo, type DecodedGroup, type DecodedParam, type DecodedPolicy, type DecodedRule, Descriptor, DescriptorCoder, type EnforceResult, type Field, type Hex, type Issue, type IssueCategory, type IssueSeverity, Limits, type MissingContextViolation, type MissingSelectorViolation, type NavigationViolationCode, type NonCanonicalValueViolation, Op, type OpInfo, type Operands, PolicyBuilder, PolicyCoder, type PolicyData, PolicyEnforcer, PolicyFormat, PolicyValidator, PolicyViolationError, Quantifier, type QuantifierEmptyArrayViolation, type QuantifierInfo, type QuantifierLimitExceededViolation, type ScalarValue, Scope, type ScopeInfo, type SelectorMismatchViolation, type Span, type TypeClass, type TypeClassInfo, TypeCode, type TypeCodeInfo, type TypeInfo, ValidationError, type ValueMismatchViolation, type Violation, type ViolationCode, arg, baseFee, blockNumber, blockTimestamp, bytesToHex, chainId, gasPrice, hexToBytes, isLengthOp, isOpAllowed, isQuantifier, lookupContextProperty, lookupOp, lookupQuantifier, lookupScope, lookupTypeCode, msgSender, msgValue, parsePathSteps, toAddress, txOrigin };
|
|
944
|
+
export { type Address, CallciumError, type CallciumErrorCode, type CalldataNavigationViolation, type Constraint, type ConstraintBuilder, type Context, ContextProperty, type ContextPropertyInfo, type DecodedGroup, type DecodedParam, type DecodedPolicy, type DecodedRule, Descriptor, DescriptorCoder, type EnforceResult, type Field, type Hex, type Issue, type IssueCategory, type IssueSeverity, Limits, MAX_CONTEXT_PROPERTY_ID, type MissingContextViolation, type MissingSelectorViolation, type NavigationViolationCode, type NonCanonicalValueViolation, Op, type OpInfo, type Operands, PolicyBuilder, PolicyCoder, type PolicyData, PolicyEnforcer, PolicyFormat, PolicyValidator, PolicyViolationError, Quantifier, type QuantifierEmptyArrayViolation, type QuantifierInfo, type QuantifierLimitExceededViolation, type ScalarValue, Scope, type ScopeInfo, type SelectorMismatchViolation, type Span, type TypeClass, type TypeClassInfo, TypeCode, type TypeCodeInfo, type TypeInfo, ValidationError, type ValueMismatchViolation, type Violation, type ViolationCode, arg, baseFee, blockNumber, blockTimestamp, bytesToHex, chainId, gasPrice, hexToBytes, isLengthOp, isOpAllowed, isQuantifier, lookupContextProperty, lookupOp, lookupQuantifier, lookupScope, lookupTypeCode, msgSender, msgValue, parsePathSteps, toAddress, txOrigin };
|
|
929
945
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/constraint.ts","../src/policy-builder.ts","../src/policy-coder.ts","../src/descriptor.ts","../src/policy-validator.ts","../src/policy-enforcer.ts","../src/bytes.ts","../src/descriptor-coder.ts","../src/constants.ts","../src/operators.ts","../src/errors.ts"],"mappings":";;KAKY,GAAA;;KAGA,OAAA;;KAGA,IAAA;EAAS,KAAA;EAAe,GAAA;AAAA;;;AAApC;;;KAWY,OAAA;EACV,SAAA,GAAY,OAAA;EACZ,QAAA;EACA,cAAA;EACA,WAAA;EACA,OAAA;EACA,QAAA,GAAW,OAAA;EACX,OAAA;EACA,QAAA;AAAA;;KAIU,aAAA;EAAkB,EAAA;EAAU,YAAA;AAAA;EAA2B,EAAA;EAAW,UAAA,EAAY,SAAA;AAAA;AAA1F;AAAA,KAGY,uBAAA;;KAGA,wBAAA;EACV,IAAA;AAAA;;KAIU,yBAAA;EACV,IAAA,uBAZiG;EAcjG,aAAA,EAAe,GAAA,EAXL;EAaV,aAAA,EAAe,GAAA;AAAA;;;AAVjB;;KAiBY,uBAAA;EACV,IAAA;EACA,KAAA;EACA,IAAA;EACA,KAAA;EACA,IAAA,EAAM,GAAA,EAZY;EAclB,QAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/constraint.ts","../src/policy-builder.ts","../src/policy-coder.ts","../src/descriptor.ts","../src/policy-validator.ts","../src/policy-enforcer.ts","../src/bytes.ts","../src/descriptor-coder.ts","../src/constants.ts","../src/operators.ts","../src/errors.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { keccak_256 } from "@noble/hashes/sha3";
|
|
1
|
+
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
2
2
|
//#region src/errors.ts
|
|
3
3
|
var CallciumError = class CallciumError extends Error {
|
|
4
4
|
code;
|
|
@@ -320,6 +320,12 @@ const OP_TABLE = [
|
|
|
320
320
|
label: "in",
|
|
321
321
|
operands: "variadic"
|
|
322
322
|
},
|
|
323
|
+
{
|
|
324
|
+
key: "EQ_CTX",
|
|
325
|
+
code: 8,
|
|
326
|
+
label: "== ctx",
|
|
327
|
+
operands: "single"
|
|
328
|
+
},
|
|
323
329
|
{
|
|
324
330
|
key: "BITMASK_ALL",
|
|
325
331
|
code: 16,
|
|
@@ -1289,6 +1295,9 @@ function decodePolicy(blob) {
|
|
|
1289
1295
|
const wordCount = dataLengthValue / 32;
|
|
1290
1296
|
for (let word = 1; word < wordCount; word++) if (compareBytes(data.subarray(dataStart + (word - 1) * 32, dataStart + word * 32), data.subarray(dataStart + word * 32, dataStart + (word + 1) * 32)) >= 0) throw new CallciumError("UNSORTED_IN_SET", "IN operands must be strictly ascending", ruleOffset);
|
|
1291
1297
|
}
|
|
1298
|
+
if (opBase === Op.EQ_CTX) {
|
|
1299
|
+
if (toBigInt(data, dataStart) > BigInt(MAX_CONTEXT_PROPERTY_ID)) throw new CallciumError("UNKNOWN_CONTEXT_PROPERTY", "EQ_CTX operand references an undefined context property", ruleOffset);
|
|
1300
|
+
}
|
|
1292
1301
|
if (depthValue === 0) throw new CallciumError("EMPTY_PATH", "Rule path must have at least one step", ruleOffset);
|
|
1293
1302
|
if (depthValue > Limits.MAX_PATH_DEPTH) throw new CallciumError("PATH_TOO_DEEP", `Path depth ${depthValue} exceeds maximum ${Limits.MAX_PATH_DEPTH}`, ruleOffset);
|
|
1294
1303
|
if (scopeValue === Scope.CONTEXT) {
|
|
@@ -1557,6 +1566,18 @@ function hintMismatch(groupIndex, constraintIndex) {
|
|
|
1557
1566
|
message: "Hint does not match the path compiled against the descriptor"
|
|
1558
1567
|
};
|
|
1559
1568
|
}
|
|
1569
|
+
function contextTypeMismatch(groupIndex, constraintIndex, contextId, typeCode) {
|
|
1570
|
+
return {
|
|
1571
|
+
severity: "error",
|
|
1572
|
+
category: "typeMismatch",
|
|
1573
|
+
groupIndex,
|
|
1574
|
+
constraintIndex,
|
|
1575
|
+
code: "CONTEXT_TYPE_MISMATCH",
|
|
1576
|
+
value1: contextId,
|
|
1577
|
+
value2: typeCode,
|
|
1578
|
+
message: "Context property type does not match the target type"
|
|
1579
|
+
};
|
|
1580
|
+
}
|
|
1560
1581
|
function nonCanonicalOperand(groupIndex, constraintIndex, operand, canonical) {
|
|
1561
1582
|
return {
|
|
1562
1583
|
severity: "error",
|
|
@@ -2006,6 +2027,10 @@ function getIncompat(opBase, typeInfo) {
|
|
|
2006
2027
|
code: "IN_ON_BOOL",
|
|
2007
2028
|
message: "IN operator used on boolean type"
|
|
2008
2029
|
};
|
|
2030
|
+
if (opBase === Op.EQ_CTX && typeCode !== TypeCode.ADDRESS && !(typeCode >= TypeCode.UINT_MIN && typeCode <= TypeCode.UINT_MAX)) return {
|
|
2031
|
+
code: "CONTEXT_TYPE_MISMATCH",
|
|
2032
|
+
message: "Context reference operator used on incompatible type"
|
|
2033
|
+
};
|
|
2009
2034
|
return null;
|
|
2010
2035
|
}
|
|
2011
2036
|
if (isLengthOp(opBase)) {
|
|
@@ -2334,7 +2359,11 @@ function validateConstraint(ctx, constraint, groupIndex, constraintIndex, issues
|
|
|
2334
2359
|
issues.push(fromOpRule(incompat.code, incompat.message, groupIndex, constraintIndex, bigintToHex(BigInt(opCode))));
|
|
2335
2360
|
continue;
|
|
2336
2361
|
}
|
|
2337
|
-
if (
|
|
2362
|
+
if (base === Op.EQ_CTX) {
|
|
2363
|
+
const ctxOperand = readValue(opHex);
|
|
2364
|
+
if (ctxOperand > BigInt(MAX_CONTEXT_PROPERTY_ID)) issues.push(unknownContextProperty(groupIndex, constraintIndex, bigintToHex(ctxOperand), bigintToHex(BigInt(MAX_CONTEXT_PROPERTY_ID))));
|
|
2365
|
+
else if (lookupContextProperty(Number(ctxOperand)).typeCode === TypeCode.ADDRESS !== (ctx.typeInfo.typeCode === TypeCode.ADDRESS)) issues.push(contextTypeMismatch(groupIndex, constraintIndex, bigintToHex(ctxOperand), bigintToHex(BigInt(ctx.typeInfo.typeCode))));
|
|
2366
|
+
} else if (isValueOp(base)) {
|
|
2338
2367
|
const typeCode = ctx.typeInfo.typeCode;
|
|
2339
2368
|
if (isLeftAligned(typeCode)) {
|
|
2340
2369
|
const nonCanonical = findNonCanonicalWord(opHex, typeCode);
|
|
@@ -2628,6 +2657,10 @@ function rangeOp(opCode, min, max) {
|
|
|
2628
2657
|
buffer.set(encodeWord(max), 33);
|
|
2629
2658
|
return bytesToHex(buffer);
|
|
2630
2659
|
}
|
|
2660
|
+
function checkContextPropertyId(contextPropertyId) {
|
|
2661
|
+
if (!Number.isInteger(contextPropertyId) || contextPropertyId < 0 || contextPropertyId > MAX_CONTEXT_PROPERTY_ID) throw new CallciumError("UNKNOWN_CONTEXT_PROPERTY", `Unknown context property ID ${contextPropertyId}`);
|
|
2662
|
+
return contextPropertyId;
|
|
2663
|
+
}
|
|
2631
2664
|
const MAX_SET_MEMBERS = Limits.MAX_SET_MEMBERS;
|
|
2632
2665
|
function setOp(opCode, values) {
|
|
2633
2666
|
const bigs = values.map((v) => {
|
|
@@ -2670,6 +2703,12 @@ var ConstraintBuilder = class {
|
|
|
2670
2703
|
neq(value) {
|
|
2671
2704
|
return this.push(singleOp(Op.EQ | Op.NOT, value));
|
|
2672
2705
|
}
|
|
2706
|
+
eqCtx(contextPropertyId) {
|
|
2707
|
+
return this.push(singleOp(Op.EQ_CTX, checkContextPropertyId(contextPropertyId)));
|
|
2708
|
+
}
|
|
2709
|
+
neqCtx(contextPropertyId) {
|
|
2710
|
+
return this.push(singleOp(Op.EQ_CTX | Op.NOT, checkContextPropertyId(contextPropertyId)));
|
|
2711
|
+
}
|
|
2673
2712
|
gt(bound) {
|
|
2674
2713
|
return this.push(singleOp(Op.GT, bound));
|
|
2675
2714
|
}
|
|
@@ -2833,7 +2872,13 @@ function evaluateRule(rule, policyBytes, callDataBytes, baseOffset, groupIndex,
|
|
|
2833
2872
|
const operandData = fieldBytes(policyBytes, rule.data);
|
|
2834
2873
|
if (rule.scope.value === Scope.CONTEXT) return evaluateContextRule(fieldBytes(policyBytes, rule.path), opCode, operandData, groupIndex, ruleIndex, rule.path.value, context);
|
|
2835
2874
|
if (rule.hint === void 0) throw new CallciumError("MALFORMED_HINT", "Calldata rule carries no hint block");
|
|
2836
|
-
return evaluateCalldataRule(fieldBytes(policyBytes, rule.hint), callDataBytes, baseOffset, opCode, operandData, groupIndex, ruleIndex, rule.path.value);
|
|
2875
|
+
return evaluateCalldataRule(fieldBytes(policyBytes, rule.hint), callDataBytes, baseOffset, opCode, operandData, groupIndex, ruleIndex, rule.path.value, context);
|
|
2876
|
+
}
|
|
2877
|
+
function resolveContextOperand(operandData, context) {
|
|
2878
|
+
const propInfo = lookupContextProperty(Number(toBigInt(operandData, 0)));
|
|
2879
|
+
const value = context?.[propInfo.contextKey];
|
|
2880
|
+
if (value === void 0) return { ctxTypeCode: propInfo.typeCode };
|
|
2881
|
+
return typeof value === "string" ? addressToBigInt(value) : value;
|
|
2837
2882
|
}
|
|
2838
2883
|
function readTargetBlock(hint, targetOffset) {
|
|
2839
2884
|
return {
|
|
@@ -2874,7 +2919,7 @@ function chainResolve(hint, callData, base, hopsOffset, hopCount) {
|
|
|
2874
2919
|
}
|
|
2875
2920
|
return base;
|
|
2876
2921
|
}
|
|
2877
|
-
function evalTarget(callData, target, block, opCode, operandData) {
|
|
2922
|
+
function evalTarget(callData, target, block, opCode, operandData, context) {
|
|
2878
2923
|
const typeCode = block.typeCode;
|
|
2879
2924
|
if (isLengthValidType(typeCode)) {
|
|
2880
2925
|
if (!isLengthOp(opCode)) throw new CallciumError("OPERATOR_TARGET_MISMATCH", "Value operator on a target without a scalar word.");
|
|
@@ -2896,6 +2941,18 @@ function evalTarget(callData, target, block, opCode, operandData) {
|
|
|
2896
2941
|
error: "NON_CANONICAL_VALUE",
|
|
2897
2942
|
value
|
|
2898
2943
|
};
|
|
2944
|
+
if ((opCode & ~Op.NOT) === Op.EQ_CTX) {
|
|
2945
|
+
const operand = resolveContextOperand(operandData, context);
|
|
2946
|
+
if (typeof operand !== "bigint") return {
|
|
2947
|
+
error: "MISSING_CONTEXT",
|
|
2948
|
+
ctxTypeCode: operand.ctxTypeCode
|
|
2949
|
+
};
|
|
2950
|
+
return {
|
|
2951
|
+
passed: value === operand !== ((opCode & Op.NOT) !== 0),
|
|
2952
|
+
value,
|
|
2953
|
+
ctxOperand: operand
|
|
2954
|
+
};
|
|
2955
|
+
}
|
|
2899
2956
|
return {
|
|
2900
2957
|
passed: applyOperator(opCode, value, 32, operandData, typeCode),
|
|
2901
2958
|
value
|
|
@@ -2916,6 +2973,16 @@ function navigationViolation(frame, code, elementIndex) {
|
|
|
2916
2973
|
}
|
|
2917
2974
|
function targetViolation(frame, result, elementIndex) {
|
|
2918
2975
|
if ("error" in result) {
|
|
2976
|
+
if (result.error === "MISSING_CONTEXT") return {
|
|
2977
|
+
group: frame.group,
|
|
2978
|
+
rule: frame.rule,
|
|
2979
|
+
code: result.error,
|
|
2980
|
+
scope: Scope.CALLDATA,
|
|
2981
|
+
path: frame.path,
|
|
2982
|
+
opCode: frame.opCode,
|
|
2983
|
+
operandData: bytesToHex(frame.operandData),
|
|
2984
|
+
typeCode: result.ctxTypeCode
|
|
2985
|
+
};
|
|
2919
2986
|
if (result.error === "NON_CANONICAL_VALUE") return {
|
|
2920
2987
|
group: frame.group,
|
|
2921
2988
|
rule: frame.rule,
|
|
@@ -2941,15 +3008,16 @@ function targetViolation(frame, result, elementIndex) {
|
|
|
2941
3008
|
operandData: bytesToHex(frame.operandData),
|
|
2942
3009
|
typeCode: frame.typeCode,
|
|
2943
3010
|
resolvedValue: bigintToHex(result.value),
|
|
3011
|
+
...result.ctxOperand !== void 0 && { resolvedOperand: bigintToHex(result.ctxOperand) },
|
|
2944
3012
|
...elementIndex !== void 0 && { elementIndex }
|
|
2945
3013
|
};
|
|
2946
3014
|
}
|
|
2947
|
-
function evaluateCalldataRule(hint, callDataBytes, baseOffset, opCode, operandData, groupIndex, ruleIndex, pathHex) {
|
|
3015
|
+
function evaluateCalldataRule(hint, callDataBytes, baseOffset, opCode, operandData, groupIndex, ruleIndex, pathHex, context) {
|
|
2948
3016
|
const header = hint[0];
|
|
2949
3017
|
const hopCount = header & PolicyFormat.HINT_HOP_COUNT_MASK;
|
|
2950
3018
|
const kind = header >> PolicyFormat.HINT_KIND_SHIFT;
|
|
2951
3019
|
const hopsOffset = PolicyFormat.HINT_HEADER_SIZE;
|
|
2952
|
-
if (kind !== PolicyFormat.HINT_KIND_NONE) return evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, hopCount, opCode, operandData, groupIndex, ruleIndex, pathHex);
|
|
3020
|
+
if (kind !== PolicyFormat.HINT_KIND_NONE) return evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, hopCount, opCode, operandData, groupIndex, ruleIndex, pathHex, context);
|
|
2953
3021
|
const block = readTargetBlock(hint, hopsOffset + hopCount * PolicyFormat.HINT_HOP_SIZE);
|
|
2954
3022
|
const frame = {
|
|
2955
3023
|
group: groupIndex,
|
|
@@ -2961,9 +3029,9 @@ function evaluateCalldataRule(hint, callDataBytes, baseOffset, opCode, operandDa
|
|
|
2961
3029
|
};
|
|
2962
3030
|
const base = chainResolve(hint, callDataBytes, baseOffset, hopsOffset, hopCount);
|
|
2963
3031
|
if (typeof base !== "number") return navigationViolation(frame, base.code);
|
|
2964
|
-
return targetViolation(frame, evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData));
|
|
3032
|
+
return targetViolation(frame, evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData, context));
|
|
2965
3033
|
}
|
|
2966
|
-
function evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, hopCount, opCode, operandData, groupIndex, ruleIndex, pathHex) {
|
|
3034
|
+
function evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, hopCount, opCode, operandData, groupIndex, ruleIndex, pathHex, context) {
|
|
2967
3035
|
const frameOffset = hopsOffset + hopCount * PolicyFormat.HINT_HOP_SIZE;
|
|
2968
3036
|
const suffixHeaderOffset = frameOffset + PolicyFormat.HINT_FRAME_PREFIX_SIZE;
|
|
2969
3037
|
const suffixHopCount = hint[suffixHeaderOffset] & PolicyFormat.HINT_HOP_COUNT_MASK;
|
|
@@ -3009,6 +3077,7 @@ function evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, h
|
|
|
3009
3077
|
const meta = readU16(hint, frameOffset + PolicyFormat.HINT_FRAME_META_OFFSET);
|
|
3010
3078
|
const elemStride = (meta & PolicyFormat.HINT_META_STRIDE_MASK) * 32;
|
|
3011
3079
|
const elemIsDynamic = (meta & PolicyFormat.HINT_META_ELEM_DYNAMIC) !== 0;
|
|
3080
|
+
let ctxOperand;
|
|
3012
3081
|
for (let elemIndex = 0; elemIndex < count; elemIndex++) {
|
|
3013
3082
|
const slot = elems + elemIndex * elemStride;
|
|
3014
3083
|
let elem = slot;
|
|
@@ -3023,11 +3092,12 @@ function evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, h
|
|
|
3023
3092
|
if (typeof chainedElem !== "number") return navigationViolation(frame, chainedElem.code, elemIndex);
|
|
3024
3093
|
base = chainedElem;
|
|
3025
3094
|
}
|
|
3026
|
-
const applied = evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData);
|
|
3095
|
+
const applied = evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData, context);
|
|
3027
3096
|
if ("error" in applied) return targetViolation(frame, applied, elemIndex);
|
|
3028
3097
|
if (applied.passed) {
|
|
3029
3098
|
if (!isUniversal) return null;
|
|
3030
3099
|
} else if (isUniversal) return targetViolation(frame, applied, elemIndex);
|
|
3100
|
+
ctxOperand = applied.ctxOperand;
|
|
3031
3101
|
}
|
|
3032
3102
|
if (isUniversal) return null;
|
|
3033
3103
|
return {
|
|
@@ -3038,7 +3108,8 @@ function evaluateQuantified(hint, callDataBytes, baseOffset, kind, hopsOffset, h
|
|
|
3038
3108
|
path: pathHex,
|
|
3039
3109
|
opCode,
|
|
3040
3110
|
operandData: bytesToHex(operandData),
|
|
3041
|
-
typeCode: block.typeCode
|
|
3111
|
+
typeCode: block.typeCode,
|
|
3112
|
+
...ctxOperand !== void 0 && { resolvedOperand: bigintToHex(ctxOperand) }
|
|
3042
3113
|
};
|
|
3043
3114
|
}
|
|
3044
3115
|
function evaluateContextRule(pathBytes, opCode, operandData, groupIndex, ruleIndex, pathHex, context) {
|
|
@@ -3057,7 +3128,24 @@ function evaluateContextRule(pathBytes, opCode, operandData, groupIndex, ruleInd
|
|
|
3057
3128
|
let value;
|
|
3058
3129
|
if (typeof contextValue === "string") value = addressToBigInt(contextValue);
|
|
3059
3130
|
else value = contextValue;
|
|
3060
|
-
|
|
3131
|
+
let result;
|
|
3132
|
+
let ctxOperand;
|
|
3133
|
+
if ((opCode & ~Op.NOT) === Op.EQ_CTX) {
|
|
3134
|
+
const operand = resolveContextOperand(operandData, context);
|
|
3135
|
+
if (typeof operand !== "bigint") return {
|
|
3136
|
+
group: groupIndex,
|
|
3137
|
+
rule: ruleIndex,
|
|
3138
|
+
code: "MISSING_CONTEXT",
|
|
3139
|
+
scope: Scope.CONTEXT,
|
|
3140
|
+
path: pathHex,
|
|
3141
|
+
opCode,
|
|
3142
|
+
operandData: bytesToHex(operandData),
|
|
3143
|
+
typeCode: operand.ctxTypeCode
|
|
3144
|
+
};
|
|
3145
|
+
result = value === operand !== ((opCode & Op.NOT) !== 0);
|
|
3146
|
+
ctxOperand = operand;
|
|
3147
|
+
} else result = applyOperator(opCode, value, 32, operandData, propInfo.typeCode);
|
|
3148
|
+
if (!result) return {
|
|
3061
3149
|
group: groupIndex,
|
|
3062
3150
|
rule: ruleIndex,
|
|
3063
3151
|
code: "VALUE_MISMATCH",
|
|
@@ -3066,7 +3154,8 @@ function evaluateContextRule(pathBytes, opCode, operandData, groupIndex, ruleInd
|
|
|
3066
3154
|
opCode,
|
|
3067
3155
|
operandData: bytesToHex(operandData),
|
|
3068
3156
|
typeCode: propInfo.typeCode,
|
|
3069
|
-
resolvedValue: bigintToHex(value)
|
|
3157
|
+
resolvedValue: bigintToHex(value),
|
|
3158
|
+
...ctxOperand !== void 0 && { resolvedOperand: bigintToHex(ctxOperand) }
|
|
3070
3159
|
};
|
|
3071
3160
|
return null;
|
|
3072
3161
|
}
|
|
@@ -3075,6 +3164,6 @@ const PolicyEnforcer = {
|
|
|
3075
3164
|
enforce
|
|
3076
3165
|
};
|
|
3077
3166
|
//#endregion
|
|
3078
|
-
export { CallciumError, ContextProperty, Descriptor, DescriptorCoder, Limits, Op, PolicyBuilder, PolicyCoder, PolicyEnforcer, PolicyFormat, PolicyValidator, PolicyViolationError, Quantifier, Scope, TypeCode, ValidationError, arg, baseFee, blockNumber, blockTimestamp, bytesToHex, chainId, gasPrice, hexToBytes, isLengthOp, isOpAllowed, isQuantifier, lookupContextProperty, lookupOp, lookupQuantifier, lookupScope, lookupTypeCode, msgSender, msgValue, parsePathSteps, toAddress, txOrigin };
|
|
3167
|
+
export { CallciumError, ContextProperty, Descriptor, DescriptorCoder, Limits, MAX_CONTEXT_PROPERTY_ID, Op, PolicyBuilder, PolicyCoder, PolicyEnforcer, PolicyFormat, PolicyValidator, PolicyViolationError, Quantifier, Scope, TypeCode, ValidationError, arg, baseFee, blockNumber, blockTimestamp, bytesToHex, chainId, gasPrice, hexToBytes, isLengthOp, isOpAllowed, isQuantifier, lookupContextProperty, lookupOp, lookupQuantifier, lookupScope, lookupTypeCode, msgSender, msgValue, parsePathSteps, toAddress, txOrigin };
|
|
3079
3168
|
|
|
3080
3169
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DF","inspect","PF","DF","DF","PF","DF","ValidationIssue.eqNeqContradiction","ValidationIssue.vacuousGte","ValidationIssue.vacuousLte","ValidationIssue.outOfPhysicalBounds","ValidationIssue.impossibleGt","ValidationIssue.impossibleLt","ValidationIssue.conflictingEquality","ValidationIssue.dominatedBound","ValidationIssue.boundsExcludeEquality","ValidationIssue.redundantBound","ValidationIssue.impossibleRange","ValidationIssue.bitmaskContradiction","ValidationIssue.redundantBitmask","ValidationIssue.bitmaskAnyImpossible","ValidationIssue.setFullyExcluded","ValidationIssue.setPartiallyExcluded","ValidationIssue.setExcludesEquality","ValidationIssue.setReduction","ValidationIssue.emptySetIntersection","ValidationIssue.setRedundancy","ValidationIssue.duplicateConstraint","ValidationIssue.fusibleRange","ValidationIssue.fromOpRule","ValidationIssue.negationUnderAny","ValidationIssue.nonCanonicalOperand","ValidationIssue.vacuousNegatedRange","ValidationIssue.unsortedInSet","ValidationIssue.pathDepthExceeded","ValidationIssue.unnavigablePath","ValidationIssue.nestedQuantifier","ValidationIssue.quantifierOverStaticLimit","ValidationIssue.unknownContextProperty","ValidationIssue.hintMismatch","ValidationIssue.emptyGroup","PF"],"sources":["../src/errors.ts","../src/bytes.ts","../src/constants.ts","../src/descriptor.ts","../src/type-desc.ts","../src/descriptor-coder.ts","../src/operators.ts","../src/policy-coder.ts","../src/validation-issue.ts","../src/policy-validator.ts","../src/signature.ts","../src/policy-builder.ts","../src/constraint.ts","../src/calldata-reader.ts","../src/policy-enforcer.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DF","inspect","PF","DF","DF","PF","DF","ValidationIssue.eqNeqContradiction","ValidationIssue.vacuousGte","ValidationIssue.vacuousLte","ValidationIssue.outOfPhysicalBounds","ValidationIssue.impossibleGt","ValidationIssue.impossibleLt","ValidationIssue.conflictingEquality","ValidationIssue.dominatedBound","ValidationIssue.boundsExcludeEquality","ValidationIssue.redundantBound","ValidationIssue.impossibleRange","ValidationIssue.bitmaskContradiction","ValidationIssue.redundantBitmask","ValidationIssue.bitmaskAnyImpossible","ValidationIssue.setFullyExcluded","ValidationIssue.setPartiallyExcluded","ValidationIssue.setExcludesEquality","ValidationIssue.setReduction","ValidationIssue.emptySetIntersection","ValidationIssue.setRedundancy","ValidationIssue.duplicateConstraint","ValidationIssue.fusibleRange","ValidationIssue.fromOpRule","ValidationIssue.negationUnderAny","ValidationIssue.unknownContextProperty","ValidationIssue.contextTypeMismatch","ValidationIssue.nonCanonicalOperand","ValidationIssue.vacuousNegatedRange","ValidationIssue.unsortedInSet","ValidationIssue.pathDepthExceeded","ValidationIssue.unnavigablePath","ValidationIssue.nestedQuantifier","ValidationIssue.quantifierOverStaticLimit","ValidationIssue.hintMismatch","ValidationIssue.emptyGroup","PF"],"sources":["../src/errors.ts","../src/bytes.ts","../src/constants.ts","../src/descriptor.ts","../src/type-desc.ts","../src/descriptor-coder.ts","../src/operators.ts","../src/policy-coder.ts","../src/validation-issue.ts","../src/policy-validator.ts","../src/signature.ts","../src/policy-builder.ts","../src/constraint.ts","../src/calldata-reader.ts","../src/policy-enforcer.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@callcium/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "TypeScript implementation of the Callcium policy engine",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"abi",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"typedoc": "typedoc"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@noble/hashes": "
|
|
49
|
+
"@noble/hashes": "2.3.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@vitest/coverage-v8": "4.1.5",
|
|
@@ -57,5 +57,8 @@
|
|
|
57
57
|
"typedoc": "0.28.19",
|
|
58
58
|
"typescript": "6.0.3",
|
|
59
59
|
"vitest": "4.1.5"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=22.11.0"
|
|
60
63
|
}
|
|
61
64
|
}
|
package/src/constants.ts
CHANGED
|
@@ -226,6 +226,7 @@ const OP_TABLE = [
|
|
|
226
226
|
{ key: "LTE", code: 0x05, label: "<=", operands: "single" },
|
|
227
227
|
{ key: "BETWEEN", code: 0x06, label: "between", operands: "range" },
|
|
228
228
|
{ key: "IN", code: 0x07, label: "in", operands: "variadic" },
|
|
229
|
+
{ key: "EQ_CTX", code: 0x08, label: "== ctx", operands: "single" },
|
|
229
230
|
{ key: "BITMASK_ALL", code: 0x10, label: "bitmask all", operands: "single" },
|
|
230
231
|
{ key: "BITMASK_ANY", code: 0x11, label: "bitmask any", operands: "single" },
|
|
231
232
|
{ key: "BITMASK_NONE", code: 0x12, label: "bitmask none", operands: "single" },
|
package/src/constraint.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { bytesToHex, toAddress, writeBE16 } from "./bytes";
|
|
2
|
-
import { Op, Scope, ContextProperty, Limits } from "./constants";
|
|
2
|
+
import { Op, Scope, ContextProperty, Limits, MAX_CONTEXT_PROPERTY_ID } from "./constants";
|
|
3
3
|
import { CallciumError } from "./errors";
|
|
4
4
|
|
|
5
5
|
import type { Hex, Constraint } from "./types";
|
|
@@ -63,6 +63,14 @@ function rangeOp(opCode: number, min: bigint, max: bigint): Hex {
|
|
|
63
63
|
return bytesToHex(buffer);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
/** Require a defined context property ID and return it. */
|
|
67
|
+
function checkContextPropertyId(contextPropertyId: number): number {
|
|
68
|
+
if (!Number.isInteger(contextPropertyId) || contextPropertyId < 0 || contextPropertyId > MAX_CONTEXT_PROPERTY_ID) {
|
|
69
|
+
throw new CallciumError("UNKNOWN_CONTEXT_PROPERTY", `Unknown context property ID ${contextPropertyId}`);
|
|
70
|
+
}
|
|
71
|
+
return contextPropertyId;
|
|
72
|
+
}
|
|
73
|
+
|
|
66
74
|
/** Largest member count whose 32-byte words still fit a rule's data length field. */
|
|
67
75
|
export const MAX_SET_MEMBERS = Limits.MAX_SET_MEMBERS;
|
|
68
76
|
|
|
@@ -153,6 +161,16 @@ export class ConstraintBuilder implements Constraint {
|
|
|
153
161
|
return this.push(singleOp(Op.EQ | Op.NOT, value));
|
|
154
162
|
}
|
|
155
163
|
|
|
164
|
+
/** Assert the value equals the context property `contextPropertyId`. */
|
|
165
|
+
eqCtx(contextPropertyId: number): this {
|
|
166
|
+
return this.push(singleOp(Op.EQ_CTX, checkContextPropertyId(contextPropertyId)));
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Assert the value does not equal the context property `contextPropertyId`. */
|
|
170
|
+
neqCtx(contextPropertyId: number): this {
|
|
171
|
+
return this.push(singleOp(Op.EQ_CTX | Op.NOT, checkContextPropertyId(contextPropertyId)));
|
|
172
|
+
}
|
|
173
|
+
|
|
156
174
|
/** Assert the value is greater than `bound`. */
|
|
157
175
|
gt(bound: bigint | number): this {
|
|
158
176
|
return this.push(singleOp(Op.GT, bound));
|
package/src/index.ts
CHANGED
package/src/policy-coder.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { keccak_256 } from "@noble/hashes/sha3";
|
|
1
|
+
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
2
2
|
|
|
3
3
|
import { bytesToHex, hexToBytes, toHex, readU16, readU32, writeBE16, writeBE32 } from "./bytes";
|
|
4
4
|
import {
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import { Descriptor } from "./descriptor";
|
|
16
16
|
import { decodeDescriptor } from "./descriptor-coder";
|
|
17
17
|
import { CallciumError } from "./errors";
|
|
18
|
-
import { isLengthOp, isLengthValidType } from "./operators";
|
|
18
|
+
import { isLengthOp, isLengthValidType, toBigInt } from "./operators";
|
|
19
19
|
|
|
20
20
|
import type {
|
|
21
21
|
Constraint,
|
|
@@ -321,6 +321,17 @@ export function decodePolicy(blob: Hex): { policy: DecodedPolicy; data: Uint8Arr
|
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
+
// An EQ_CTX operand word must be a defined context property ID.
|
|
325
|
+
if (opBase === Op.EQ_CTX) {
|
|
326
|
+
if (toBigInt(data, dataStart) > BigInt(MAX_CONTEXT_PROPERTY_ID)) {
|
|
327
|
+
throw new CallciumError(
|
|
328
|
+
"UNKNOWN_CONTEXT_PROPERTY",
|
|
329
|
+
"EQ_CTX operand references an undefined context property",
|
|
330
|
+
ruleOffset,
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
324
335
|
// The path must be non-empty and within the depth cap.
|
|
325
336
|
if (depthValue === 0) {
|
|
326
337
|
throw new CallciumError("EMPTY_PATH", "Rule path must have at least one step", ruleOffset);
|
package/src/policy-enforcer.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
Scope,
|
|
6
6
|
MAX_CONTEXT_PROPERTY_ID,
|
|
7
7
|
Limits,
|
|
8
|
+
Op,
|
|
8
9
|
TypeCode,
|
|
9
10
|
classifyTypeCode,
|
|
10
11
|
lookupContextProperty,
|
|
@@ -172,9 +173,21 @@ function evaluateRule(
|
|
|
172
173
|
groupIndex,
|
|
173
174
|
ruleIndex,
|
|
174
175
|
rule.path.value,
|
|
176
|
+
context,
|
|
175
177
|
);
|
|
176
178
|
}
|
|
177
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Resolve an EQ_CTX operand word to the referenced context property's value as a raw word.
|
|
182
|
+
* Returns the missing property's type code when the context does not supply it.
|
|
183
|
+
*/
|
|
184
|
+
function resolveContextOperand(operandData: Uint8Array, context?: Context): bigint | { ctxTypeCode: number } {
|
|
185
|
+
const propInfo = lookupContextProperty(Number(toBigInt(operandData, 0)));
|
|
186
|
+
const value = context?.[propInfo.contextKey];
|
|
187
|
+
if (value === undefined) return { ctxTypeCode: propInfo.typeCode };
|
|
188
|
+
return typeof value === "string" ? addressToBigInt(value) : value;
|
|
189
|
+
}
|
|
190
|
+
|
|
178
191
|
///////////////////////////////////////////////////////////////////////////
|
|
179
192
|
// Hint chain resolution
|
|
180
193
|
///////////////////////////////////////////////////////////////////////////
|
|
@@ -247,9 +260,10 @@ function chainResolve(
|
|
|
247
260
|
///////////////////////////////////////////////////////////////////////////
|
|
248
261
|
|
|
249
262
|
type TargetResult =
|
|
250
|
-
| { passed: boolean; value: bigint }
|
|
263
|
+
| { passed: boolean; value: bigint; ctxOperand?: bigint }
|
|
251
264
|
| { error: NavigationViolationCode }
|
|
252
|
-
| { error: "NON_CANONICAL_VALUE"; value: bigint }
|
|
265
|
+
| { error: "NON_CANONICAL_VALUE"; value: bigint }
|
|
266
|
+
| { error: "MISSING_CONTEXT"; ctxTypeCode: number };
|
|
253
267
|
|
|
254
268
|
/**
|
|
255
269
|
* Load the value at a resolved target offset and apply the operator.
|
|
@@ -264,6 +278,7 @@ function evalTarget(
|
|
|
264
278
|
block: TargetBlock,
|
|
265
279
|
opCode: number,
|
|
266
280
|
operandData: Uint8Array,
|
|
281
|
+
context?: Context,
|
|
267
282
|
): TargetResult {
|
|
268
283
|
const typeCode = block.typeCode;
|
|
269
284
|
|
|
@@ -295,6 +310,13 @@ function evalTarget(
|
|
|
295
310
|
return { error: "NON_CANONICAL_VALUE", value };
|
|
296
311
|
}
|
|
297
312
|
|
|
313
|
+
if ((opCode & ~Op.NOT) === Op.EQ_CTX) {
|
|
314
|
+
const operand = resolveContextOperand(operandData, context);
|
|
315
|
+
if (typeof operand !== "bigint") return { error: "MISSING_CONTEXT", ctxTypeCode: operand.ctxTypeCode };
|
|
316
|
+
const passed = (value === operand) !== ((opCode & Op.NOT) !== 0);
|
|
317
|
+
return { passed, value, ctxOperand: operand };
|
|
318
|
+
}
|
|
319
|
+
|
|
298
320
|
const passed = applyOperator(opCode, value, 32, operandData, typeCode);
|
|
299
321
|
return { passed, value };
|
|
300
322
|
}
|
|
@@ -331,6 +353,18 @@ function navigationViolation(frame: RuleFrame, code: NavigationViolationCode, el
|
|
|
331
353
|
/** Convert a failed or erroring target result into its violation. Passing results map to null. */
|
|
332
354
|
function targetViolation(frame: RuleFrame, result: TargetResult, elementIndex?: number): Violation | null {
|
|
333
355
|
if ("error" in result) {
|
|
356
|
+
if (result.error === "MISSING_CONTEXT") {
|
|
357
|
+
return {
|
|
358
|
+
group: frame.group,
|
|
359
|
+
rule: frame.rule,
|
|
360
|
+
code: result.error,
|
|
361
|
+
scope: Scope.CALLDATA,
|
|
362
|
+
path: frame.path,
|
|
363
|
+
opCode: frame.opCode,
|
|
364
|
+
operandData: bytesToHex(frame.operandData),
|
|
365
|
+
typeCode: result.ctxTypeCode,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
334
368
|
if (result.error === "NON_CANONICAL_VALUE") {
|
|
335
369
|
return {
|
|
336
370
|
group: frame.group,
|
|
@@ -359,6 +393,7 @@ function targetViolation(frame: RuleFrame, result: TargetResult, elementIndex?:
|
|
|
359
393
|
operandData: bytesToHex(frame.operandData),
|
|
360
394
|
typeCode: frame.typeCode,
|
|
361
395
|
resolvedValue: bigintToHex(result.value),
|
|
396
|
+
...(result.ctxOperand !== undefined && { resolvedOperand: bigintToHex(result.ctxOperand) }),
|
|
362
397
|
...(elementIndex !== undefined && { elementIndex }),
|
|
363
398
|
};
|
|
364
399
|
}
|
|
@@ -373,6 +408,7 @@ function evaluateCalldataRule(
|
|
|
373
408
|
groupIndex: number,
|
|
374
409
|
ruleIndex: number,
|
|
375
410
|
pathHex: Hex,
|
|
411
|
+
context?: Context,
|
|
376
412
|
): Violation | null {
|
|
377
413
|
const header = hint[0]!;
|
|
378
414
|
const hopCount = header & PF.HINT_HOP_COUNT_MASK;
|
|
@@ -392,6 +428,7 @@ function evaluateCalldataRule(
|
|
|
392
428
|
groupIndex,
|
|
393
429
|
ruleIndex,
|
|
394
430
|
pathHex,
|
|
431
|
+
context,
|
|
395
432
|
);
|
|
396
433
|
}
|
|
397
434
|
|
|
@@ -408,7 +445,10 @@ function evaluateCalldataRule(
|
|
|
408
445
|
const base = chainResolve(hint, callDataBytes, baseOffset, hopsOffset, hopCount);
|
|
409
446
|
if (typeof base !== "number") return navigationViolation(frame, base.code);
|
|
410
447
|
|
|
411
|
-
return targetViolation(
|
|
448
|
+
return targetViolation(
|
|
449
|
+
frame,
|
|
450
|
+
evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData, context),
|
|
451
|
+
);
|
|
412
452
|
}
|
|
413
453
|
|
|
414
454
|
///////////////////////////////////////////////////////////////////////////
|
|
@@ -428,6 +468,7 @@ function evaluateQuantified(
|
|
|
428
468
|
groupIndex: number,
|
|
429
469
|
ruleIndex: number,
|
|
430
470
|
pathHex: Hex,
|
|
471
|
+
context?: Context,
|
|
431
472
|
): Violation | null {
|
|
432
473
|
const frameOffset = hopsOffset + hopCount * PF.HINT_HOP_SIZE;
|
|
433
474
|
const suffixHeaderOffset = frameOffset + PF.HINT_FRAME_PREFIX_SIZE;
|
|
@@ -486,6 +527,8 @@ function evaluateQuantified(
|
|
|
486
527
|
const elemStride = (meta & PF.HINT_META_STRIDE_MASK) * 32;
|
|
487
528
|
const elemIsDynamic = (meta & PF.HINT_META_ELEM_DYNAMIC) !== 0;
|
|
488
529
|
|
|
530
|
+
// A reference operand resolves identically for every element; any element's result carries it.
|
|
531
|
+
let ctxOperand: bigint | undefined;
|
|
489
532
|
for (let elemIndex = 0; elemIndex < count; elemIndex++) {
|
|
490
533
|
const slot = elems + elemIndex * elemStride;
|
|
491
534
|
let elem: number = slot;
|
|
@@ -504,10 +547,11 @@ function evaluateQuantified(
|
|
|
504
547
|
base = chainedElem;
|
|
505
548
|
}
|
|
506
549
|
|
|
507
|
-
const applied = evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData);
|
|
550
|
+
const applied = evalTarget(callDataBytes, base + block.targetDelta, block, opCode, operandData, context);
|
|
508
551
|
if ("error" in applied) {
|
|
509
|
-
//
|
|
510
|
-
//
|
|
552
|
+
// Error results end the rule whatever the quantifier: a later element cannot rescue
|
|
553
|
+
// calldata the enforcer cannot read (abort effects, spec §9.3), and a missing context
|
|
554
|
+
// property is missing for every element alike (group-local).
|
|
511
555
|
return targetViolation(frame, applied, elemIndex);
|
|
512
556
|
}
|
|
513
557
|
|
|
@@ -517,6 +561,7 @@ function evaluateQuantified(
|
|
|
517
561
|
} else if (isUniversal) {
|
|
518
562
|
return targetViolation(frame, applied, elemIndex);
|
|
519
563
|
}
|
|
564
|
+
ctxOperand = applied.ctxOperand;
|
|
520
565
|
}
|
|
521
566
|
|
|
522
567
|
if (isUniversal) return null;
|
|
@@ -530,6 +575,7 @@ function evaluateQuantified(
|
|
|
530
575
|
opCode,
|
|
531
576
|
operandData: bytesToHex(operandData),
|
|
532
577
|
typeCode: block.typeCode,
|
|
578
|
+
...(ctxOperand !== undefined && { resolvedOperand: bigintToHex(ctxOperand) }),
|
|
533
579
|
};
|
|
534
580
|
}
|
|
535
581
|
|
|
@@ -577,7 +623,27 @@ function evaluateContextRule(
|
|
|
577
623
|
value = contextValue;
|
|
578
624
|
}
|
|
579
625
|
|
|
580
|
-
|
|
626
|
+
let result: boolean;
|
|
627
|
+
let ctxOperand: bigint | undefined;
|
|
628
|
+
if ((opCode & ~Op.NOT) === Op.EQ_CTX) {
|
|
629
|
+
const operand = resolveContextOperand(operandData, context);
|
|
630
|
+
if (typeof operand !== "bigint") {
|
|
631
|
+
return {
|
|
632
|
+
group: groupIndex,
|
|
633
|
+
rule: ruleIndex,
|
|
634
|
+
code: "MISSING_CONTEXT",
|
|
635
|
+
scope: Scope.CONTEXT,
|
|
636
|
+
path: pathHex,
|
|
637
|
+
opCode,
|
|
638
|
+
operandData: bytesToHex(operandData),
|
|
639
|
+
typeCode: operand.ctxTypeCode,
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
result = (value === operand) !== ((opCode & Op.NOT) !== 0);
|
|
643
|
+
ctxOperand = operand;
|
|
644
|
+
} else {
|
|
645
|
+
result = applyOperator(opCode, value, 32, operandData, propInfo.typeCode);
|
|
646
|
+
}
|
|
581
647
|
|
|
582
648
|
if (!result) {
|
|
583
649
|
return {
|
|
@@ -590,6 +656,7 @@ function evaluateContextRule(
|
|
|
590
656
|
operandData: bytesToHex(operandData),
|
|
591
657
|
typeCode: propInfo.typeCode,
|
|
592
658
|
resolvedValue: bigintToHex(value),
|
|
659
|
+
...(ctxOperand !== undefined && { resolvedOperand: bigintToHex(ctxOperand) }),
|
|
593
660
|
};
|
|
594
661
|
}
|
|
595
662
|
|
package/src/policy-validator.ts
CHANGED
|
@@ -139,7 +139,7 @@ function getDomainLimits(typeCode: number): { min: bigint; max: bigint } {
|
|
|
139
139
|
// Operator classification
|
|
140
140
|
///////////////////////////////////////////////////////////////////////////
|
|
141
141
|
|
|
142
|
-
/** True for EQ, GT, LT, GTE, LTE, BETWEEN, IN, BITMASK_*. */
|
|
142
|
+
/** True for EQ, GT, LT, GTE, LTE, BETWEEN, IN, EQ_CTX, BITMASK_*. */
|
|
143
143
|
function isValueOp(opBase: number): boolean {
|
|
144
144
|
return opBase <= Op.BITMASK_NONE;
|
|
145
145
|
}
|
|
@@ -178,6 +178,14 @@ function getIncompat(opBase: number, typeInfo: TypeInfo): { code: string; messag
|
|
|
178
178
|
if (opBase === Op.IN && typeCode === TypeCode.BOOL) {
|
|
179
179
|
return { code: "IN_ON_BOOL", message: "IN operator used on boolean type" };
|
|
180
180
|
}
|
|
181
|
+
// Context properties are addresses or uint256, so only those target classes can match.
|
|
182
|
+
if (
|
|
183
|
+
opBase === Op.EQ_CTX &&
|
|
184
|
+
typeCode !== TypeCode.ADDRESS &&
|
|
185
|
+
!(typeCode >= TypeCode.UINT_MIN && typeCode <= TypeCode.UINT_MAX)
|
|
186
|
+
) {
|
|
187
|
+
return { code: "CONTEXT_TYPE_MISMATCH", message: "Context reference operator used on incompatible type" };
|
|
188
|
+
}
|
|
181
189
|
return null;
|
|
182
190
|
}
|
|
183
191
|
if (isLengthOp(opBase)) {
|
|
@@ -890,7 +898,35 @@ function validateConstraint(
|
|
|
890
898
|
continue;
|
|
891
899
|
}
|
|
892
900
|
|
|
893
|
-
if (
|
|
901
|
+
if (base === Op.EQ_CTX) {
|
|
902
|
+
// The operand names a context property, not a value: nothing to fold into a domain.
|
|
903
|
+
const ctxOperand = readValue(opHex);
|
|
904
|
+
if (ctxOperand > BigInt(MAX_CONTEXT_PROPERTY_ID)) {
|
|
905
|
+
issues.push(
|
|
906
|
+
ValidationIssue.unknownContextProperty(
|
|
907
|
+
groupIndex,
|
|
908
|
+
constraintIndex,
|
|
909
|
+
bigintToHex(ctxOperand),
|
|
910
|
+
bigintToHex(BigInt(MAX_CONTEXT_PROPERTY_ID)),
|
|
911
|
+
),
|
|
912
|
+
);
|
|
913
|
+
} else {
|
|
914
|
+
// Compatibility has already narrowed the target to an address or unsigned type,
|
|
915
|
+
// so the pairing reduces to whether both sides are addresses.
|
|
916
|
+
const propertyIsAddress = lookupContextProperty(Number(ctxOperand)).typeCode === TypeCode.ADDRESS;
|
|
917
|
+
const targetIsAddress = ctx.typeInfo.typeCode === TypeCode.ADDRESS;
|
|
918
|
+
if (propertyIsAddress !== targetIsAddress) {
|
|
919
|
+
issues.push(
|
|
920
|
+
ValidationIssue.contextTypeMismatch(
|
|
921
|
+
groupIndex,
|
|
922
|
+
constraintIndex,
|
|
923
|
+
bigintToHex(ctxOperand),
|
|
924
|
+
bigintToHex(BigInt(ctx.typeInfo.typeCode)),
|
|
925
|
+
),
|
|
926
|
+
);
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
} else if (isValueOp(base)) {
|
|
894
930
|
// A non-canonical operand can never equal a canonicalized runtime value (PC-1, spec
|
|
895
931
|
// section 4.5), so the rule is unsatisfiable or vacuous; skip analyzing the garbage
|
|
896
932
|
// word. Scoped to the left-aligned types: numeric, address, and bool operands are
|
package/src/signature.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -52,8 +52,8 @@ export type SelectorMismatchViolation = {
|
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
* A
|
|
56
|
-
|
|
55
|
+
* A rule referenced a context property not supplied in the execution context — a context-scoped
|
|
56
|
+
* subject, or an `EQ_CTX` operand on either scope.
|
|
57
57
|
*/
|
|
58
58
|
export type MissingContextViolation = {
|
|
59
59
|
code: "MISSING_CONTEXT";
|
|
@@ -63,7 +63,9 @@ export type MissingContextViolation = {
|
|
|
63
63
|
path: Hex;
|
|
64
64
|
/** Declared type of the missing context property. */
|
|
65
65
|
typeCode: number;
|
|
66
|
+
/** Operator code with the `Op.NOT` bit intact; absent for a context-scoped subject. */
|
|
66
67
|
opCode?: number;
|
|
68
|
+
/** Operator payload; absent for a context-scoped subject. */
|
|
67
69
|
operandData?: Hex;
|
|
68
70
|
};
|
|
69
71
|
|
|
@@ -92,6 +94,11 @@ export type ValueMismatchViolation = {
|
|
|
92
94
|
/** Type code of the failing value's leaf. */
|
|
93
95
|
typeCode: number;
|
|
94
96
|
resolvedValue?: Hex;
|
|
97
|
+
/**
|
|
98
|
+
* Resolved runtime value of a reference operand as a 32-byte word; present when the
|
|
99
|
+
* operator's operand names a reference resolved at enforcement, not a literal.
|
|
100
|
+
*/
|
|
101
|
+
resolvedOperand?: Hex;
|
|
95
102
|
elementIndex?: number;
|
|
96
103
|
};
|
|
97
104
|
|
package/src/validation-issue.ts
CHANGED
|
@@ -72,6 +72,20 @@ export function hintMismatch(groupIndex: number, constraintIndex: number): Issue
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/** Issue for a context reference whose property cannot match the target type. */
|
|
76
|
+
export function contextTypeMismatch(groupIndex: number, constraintIndex: number, contextId: Hex, typeCode: Hex): Issue {
|
|
77
|
+
return {
|
|
78
|
+
severity: "error",
|
|
79
|
+
category: "typeMismatch",
|
|
80
|
+
groupIndex,
|
|
81
|
+
constraintIndex,
|
|
82
|
+
code: "CONTEXT_TYPE_MISMATCH",
|
|
83
|
+
value1: contextId,
|
|
84
|
+
value2: typeCode,
|
|
85
|
+
message: "Context property type does not match the target type",
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
75
89
|
/** Issue for an operand that is not canonically encoded for the declared type. */
|
|
76
90
|
export function nonCanonicalOperand(groupIndex: number, constraintIndex: number, operand: Hex, canonical: Hex): Issue {
|
|
77
91
|
return {
|