@0xsequence/wallet-primitives 0.0.0-20250520201059
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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +7 -0
- package/LICENSE +202 -0
- package/dist/address.d.ts +5 -0
- package/dist/address.d.ts.map +1 -0
- package/dist/address.js +7 -0
- package/dist/address.js.map +1 -0
- package/dist/attestation.d.ts +24 -0
- package/dist/attestation.d.ts.map +1 -0
- package/dist/attestation.js +77 -0
- package/dist/attestation.js.map +1 -0
- package/dist/config.d.ts +85 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +381 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +173 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +31 -0
- package/dist/constants.js.map +1 -0
- package/dist/context.d.ts +9 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +8 -0
- package/dist/context.js.map +1 -0
- package/dist/erc-6492.d.ts +19 -0
- package/dist/erc-6492.d.ts.map +1 -0
- package/dist/erc-6492.js +64 -0
- package/dist/erc-6492.js.map +1 -0
- package/dist/extensions/index.d.ts +9 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +7 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/passkeys.d.ts +31 -0
- package/dist/extensions/passkeys.d.ts.map +1 -0
- package/dist/extensions/passkeys.js +224 -0
- package/dist/extensions/passkeys.js.map +1 -0
- package/dist/extensions/recovery.d.ts +310 -0
- package/dist/extensions/recovery.d.ts.map +1 -0
- package/dist/extensions/recovery.js +444 -0
- package/dist/extensions/recovery.js.map +1 -0
- package/dist/generic-tree.d.ts +14 -0
- package/dist/generic-tree.d.ts.map +1 -0
- package/dist/generic-tree.js +34 -0
- package/dist/generic-tree.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/network.d.ts +15 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +24 -0
- package/dist/network.js.map +1 -0
- package/dist/payload.d.ts +108 -0
- package/dist/payload.d.ts.map +1 -0
- package/dist/payload.js +627 -0
- package/dist/payload.js.map +1 -0
- package/dist/permission.d.ts +73 -0
- package/dist/permission.d.ts.map +1 -0
- package/dist/permission.js +188 -0
- package/dist/permission.js.map +1 -0
- package/dist/session-config.d.ts +113 -0
- package/dist/session-config.d.ts.map +1 -0
- package/dist/session-config.js +554 -0
- package/dist/session-config.js.map +1 -0
- package/dist/session-signature.d.ts +24 -0
- package/dist/session-signature.d.ts.map +1 -0
- package/dist/session-signature.js +141 -0
- package/dist/session-signature.js.map +1 -0
- package/dist/signature.d.ts +108 -0
- package/dist/signature.d.ts.map +1 -0
- package/dist/signature.js +1079 -0
- package/dist/signature.js.map +1 -0
- package/dist/utils.d.ts +45 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +100 -0
- package/dist/utils.js.map +1 -0
- package/eslint.config.mjs +4 -0
- package/package.json +27 -0
- package/src/address.ts +19 -0
- package/src/attestation.ts +114 -0
- package/src/config.ts +521 -0
- package/src/constants.ts +39 -0
- package/src/context.ts +16 -0
- package/src/erc-6492.ts +97 -0
- package/src/extensions/index.ts +14 -0
- package/src/extensions/passkeys.ts +283 -0
- package/src/extensions/recovery.ts +542 -0
- package/src/generic-tree.ts +55 -0
- package/src/index.ts +15 -0
- package/src/network.ts +37 -0
- package/src/payload.ts +825 -0
- package/src/permission.ts +252 -0
- package/src/session-config.ts +681 -0
- package/src/session-signature.ts +197 -0
- package/src/signature.ts +1398 -0
- package/src/utils.ts +114 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Bytes, Hash, Hex } from 'ox';
|
|
2
|
+
import { encode, encodeForJson, fromParsed } from './attestation.js';
|
|
3
|
+
import { MAX_PERMISSIONS_COUNT } from './permission.js';
|
|
4
|
+
import { encodeSessionsTopology, isCompleteSessionsTopology, minimiseSessionsTopology, } from './session-config.js';
|
|
5
|
+
import { minBytesFor, packRSY } from './utils.js';
|
|
6
|
+
import { Payload } from './index.js';
|
|
7
|
+
export function isImplicitSessionCallSignature(callSignature) {
|
|
8
|
+
return 'attestation' in callSignature && 'identitySignature' in callSignature && 'sessionSignature' in callSignature;
|
|
9
|
+
}
|
|
10
|
+
export function isExplicitSessionCallSignature(callSignature) {
|
|
11
|
+
return 'permissionIndex' in callSignature && 'sessionSignature' in callSignature;
|
|
12
|
+
}
|
|
13
|
+
// JSON
|
|
14
|
+
export function sessionCallSignatureToJson(callSignature) {
|
|
15
|
+
return JSON.stringify(encodeSessionCallSignatureForJson(callSignature));
|
|
16
|
+
}
|
|
17
|
+
export function encodeSessionCallSignatureForJson(callSignature) {
|
|
18
|
+
if (isImplicitSessionCallSignature(callSignature)) {
|
|
19
|
+
return {
|
|
20
|
+
attestation: encodeForJson(callSignature.attestation),
|
|
21
|
+
identitySignature: rsyToRsvStr(callSignature.identitySignature),
|
|
22
|
+
sessionSignature: rsyToRsvStr(callSignature.sessionSignature),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
else if (isExplicitSessionCallSignature(callSignature)) {
|
|
26
|
+
return {
|
|
27
|
+
permissionIndex: callSignature.permissionIndex,
|
|
28
|
+
sessionSignature: rsyToRsvStr(callSignature.sessionSignature),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new Error('Invalid call signature');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function sessionCallSignatureFromJson(json) {
|
|
36
|
+
const decoded = JSON.parse(json);
|
|
37
|
+
return sessionCallSignatureFromParsed(decoded);
|
|
38
|
+
}
|
|
39
|
+
export function sessionCallSignatureFromParsed(decoded) {
|
|
40
|
+
if (decoded.attestation) {
|
|
41
|
+
return {
|
|
42
|
+
attestation: fromParsed(decoded.attestation),
|
|
43
|
+
identitySignature: rsyFromRsvStr(decoded.identitySignature),
|
|
44
|
+
sessionSignature: rsyFromRsvStr(decoded.sessionSignature),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
else if (decoded.permissionIndex) {
|
|
48
|
+
return {
|
|
49
|
+
permissionIndex: decoded.permissionIndex,
|
|
50
|
+
sessionSignature: rsyFromRsvStr(decoded.sessionSignature),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
throw new Error('Invalid call signature');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function rsyToRsvStr(sig) {
|
|
58
|
+
return `${sig.r.toString()}:${sig.s.toString()}:${sig.yParity + 27}`;
|
|
59
|
+
}
|
|
60
|
+
function rsyFromRsvStr(sigStr) {
|
|
61
|
+
const parts = sigStr.split(':');
|
|
62
|
+
if (parts.length !== 3) {
|
|
63
|
+
throw new Error('Signature must be in r:s:v format');
|
|
64
|
+
}
|
|
65
|
+
const [rStr, sStr, vStr] = parts;
|
|
66
|
+
if (!rStr || !sStr || !vStr) {
|
|
67
|
+
throw new Error('Invalid signature format');
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
r: Bytes.toBigInt(Bytes.fromHex(rStr, { size: 32 })),
|
|
71
|
+
s: Bytes.toBigInt(Bytes.fromHex(sStr, { size: 32 })),
|
|
72
|
+
yParity: parseInt(vStr, 10) - 27,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Usage
|
|
76
|
+
export function encodeSessionCallSignatures(callSignatures, topology, explicitSigners = [], implicitSigners = []) {
|
|
77
|
+
const parts = [];
|
|
78
|
+
// Validate the topology
|
|
79
|
+
if (!isCompleteSessionsTopology(topology)) {
|
|
80
|
+
// Refuse to encode incomplete topologies
|
|
81
|
+
throw new Error('Incomplete topology');
|
|
82
|
+
}
|
|
83
|
+
// Optimise the configuration tree by rolling unused signers into nodes.
|
|
84
|
+
topology = minimiseSessionsTopology(topology, explicitSigners, implicitSigners);
|
|
85
|
+
// Session topology
|
|
86
|
+
const encodedTopology = encodeSessionsTopology(topology);
|
|
87
|
+
if (minBytesFor(BigInt(encodedTopology.length)) > 3) {
|
|
88
|
+
throw new Error('Session topology is too large');
|
|
89
|
+
}
|
|
90
|
+
parts.push(Bytes.fromNumber(encodedTopology.length, { size: 3 }), encodedTopology);
|
|
91
|
+
// Create unique attestation list and maintain index mapping
|
|
92
|
+
const attestationMap = new Map();
|
|
93
|
+
const encodedAttestations = [];
|
|
94
|
+
// Map each call signature to its attestation index
|
|
95
|
+
callSignatures.filter(isImplicitSessionCallSignature).forEach((callSig) => {
|
|
96
|
+
if (callSig.attestation) {
|
|
97
|
+
const attestationStr = JSON.stringify(callSig.attestation);
|
|
98
|
+
if (!attestationMap.has(attestationStr)) {
|
|
99
|
+
attestationMap.set(attestationStr, encodedAttestations.length);
|
|
100
|
+
encodedAttestations.push(Bytes.concat(encode(callSig.attestation), packRSY(callSig.identitySignature)));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
// Add the attestations to the parts
|
|
105
|
+
if (encodedAttestations.length >= 128) {
|
|
106
|
+
throw new Error('Too many attestations');
|
|
107
|
+
}
|
|
108
|
+
parts.push(Bytes.fromNumber(encodedAttestations.length, { size: 1 }), Bytes.concat(...encodedAttestations));
|
|
109
|
+
// Call signature parts
|
|
110
|
+
for (const callSignature of callSignatures) {
|
|
111
|
+
if (isImplicitSessionCallSignature(callSignature)) {
|
|
112
|
+
// Implicit
|
|
113
|
+
const attestationStr = JSON.stringify(callSignature.attestation);
|
|
114
|
+
const attestationIndex = attestationMap.get(attestationStr);
|
|
115
|
+
if (attestationIndex === undefined) {
|
|
116
|
+
// Unreachable
|
|
117
|
+
throw new Error('Failed to find attestation index');
|
|
118
|
+
}
|
|
119
|
+
const packedFlag = 0x80 | attestationIndex; // Implicit flag (MSB) true + attestation index
|
|
120
|
+
parts.push(Bytes.fromNumber(packedFlag, { size: 1 }), packRSY(callSignature.sessionSignature));
|
|
121
|
+
}
|
|
122
|
+
else if (isExplicitSessionCallSignature(callSignature)) {
|
|
123
|
+
// Explicit
|
|
124
|
+
if (callSignature.permissionIndex > MAX_PERMISSIONS_COUNT) {
|
|
125
|
+
throw new Error('Permission index is too large');
|
|
126
|
+
}
|
|
127
|
+
const packedFlag = callSignature.permissionIndex; // Implicit flag (MSB) false + permission index
|
|
128
|
+
parts.push(Bytes.fromNumber(packedFlag, { size: 1 }), packRSY(callSignature.sessionSignature));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// Invalid call signature
|
|
132
|
+
throw new Error('Invalid call signature');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return Bytes.concat(...parts);
|
|
136
|
+
}
|
|
137
|
+
// Helper
|
|
138
|
+
export function hashCallWithReplayProtection(call, chainId, space, nonce) {
|
|
139
|
+
return Hex.fromBytes(Hash.keccak256(Bytes.concat(Bytes.fromNumber(Number(chainId), { size: 32 }), Bytes.fromNumber(Number(space), { size: 32 }), Bytes.fromNumber(Number(nonce), { size: 32 }), Bytes.fromHex(Payload.hashCall(call)))));
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=session-signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-signature.js","sourceRoot":"","sources":["../src/session-signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Address, Bytes, Hex, Provider } from 'ox';
|
|
2
|
+
import { Config, Leaf, SapientSignerLeaf, SignerLeaf, Topology } from './config.js';
|
|
3
|
+
import { Parented } from './payload.js';
|
|
4
|
+
export declare const FLAG_SIGNATURE_HASH = 0;
|
|
5
|
+
export declare const FLAG_ADDRESS = 1;
|
|
6
|
+
export declare const FLAG_SIGNATURE_ERC1271 = 2;
|
|
7
|
+
export declare const FLAG_NODE = 3;
|
|
8
|
+
export declare const FLAG_BRANCH = 4;
|
|
9
|
+
export declare const FLAG_SUBDIGEST = 5;
|
|
10
|
+
export declare const FLAG_NESTED = 6;
|
|
11
|
+
export declare const FLAG_SIGNATURE_ETH_SIGN = 7;
|
|
12
|
+
export declare const FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST = 8;
|
|
13
|
+
export declare const FLAG_SIGNATURE_SAPIENT = 9;
|
|
14
|
+
export declare const FLAG_SIGNATURE_SAPIENT_COMPACT = 10;
|
|
15
|
+
export type RSY = {
|
|
16
|
+
r: bigint;
|
|
17
|
+
s: bigint;
|
|
18
|
+
yParity: number;
|
|
19
|
+
};
|
|
20
|
+
export type SignatureOfSignerLeafEthSign = {
|
|
21
|
+
type: 'eth_sign';
|
|
22
|
+
} & RSY;
|
|
23
|
+
export type SignatureOfSignerLeafHash = {
|
|
24
|
+
type: 'hash';
|
|
25
|
+
} & RSY;
|
|
26
|
+
export type SignatureOfSignerLeafErc1271 = {
|
|
27
|
+
type: 'erc1271';
|
|
28
|
+
address: `0x${string}`;
|
|
29
|
+
data: Hex.Hex;
|
|
30
|
+
};
|
|
31
|
+
export type SignatureOfSignerLeaf = SignatureOfSignerLeafEthSign | SignatureOfSignerLeafHash | SignatureOfSignerLeafErc1271;
|
|
32
|
+
export type SignatureOfSapientSignerLeaf = {
|
|
33
|
+
address: `0x${string}`;
|
|
34
|
+
data: Hex.Hex;
|
|
35
|
+
type: 'sapient' | 'sapient_compact';
|
|
36
|
+
};
|
|
37
|
+
export type SignedSignerLeaf = SignerLeaf & {
|
|
38
|
+
signed: true;
|
|
39
|
+
signature: SignatureOfSignerLeaf;
|
|
40
|
+
};
|
|
41
|
+
export type SignedSapientSignerLeaf = SapientSignerLeaf & {
|
|
42
|
+
signed: true;
|
|
43
|
+
signature: SignatureOfSapientSignerLeaf;
|
|
44
|
+
};
|
|
45
|
+
export type RawSignerLeaf = {
|
|
46
|
+
type: 'unrecovered-signer';
|
|
47
|
+
weight: bigint;
|
|
48
|
+
signature: SignatureOfSignerLeaf | SignatureOfSapientSignerLeaf;
|
|
49
|
+
};
|
|
50
|
+
export type RawNestedLeaf = {
|
|
51
|
+
type: 'nested';
|
|
52
|
+
tree: RawTopology;
|
|
53
|
+
weight: bigint;
|
|
54
|
+
threshold: bigint;
|
|
55
|
+
};
|
|
56
|
+
export type RawLeaf = Leaf | RawSignerLeaf | RawNestedLeaf;
|
|
57
|
+
export type RawNode = [RawTopology, RawTopology];
|
|
58
|
+
export type RawTopology = RawNode | RawLeaf;
|
|
59
|
+
export type RawConfig = {
|
|
60
|
+
threshold: bigint;
|
|
61
|
+
checkpoint: bigint;
|
|
62
|
+
topology: RawTopology;
|
|
63
|
+
checkpointer?: Address.Address;
|
|
64
|
+
};
|
|
65
|
+
export type RawSignature = {
|
|
66
|
+
noChainId: boolean;
|
|
67
|
+
checkpointerData?: Bytes.Bytes;
|
|
68
|
+
configuration: RawConfig;
|
|
69
|
+
suffix?: RawSignature[];
|
|
70
|
+
erc6492?: {
|
|
71
|
+
to: Address.Address;
|
|
72
|
+
data: Bytes.Bytes;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export declare function isSignatureOfSapientSignerLeaf(signature: any): signature is SignatureOfSapientSignerLeaf;
|
|
76
|
+
export declare function isRawSignature(signature: any): signature is RawSignature;
|
|
77
|
+
export declare function isRawConfig(configuration: any): configuration is RawConfig;
|
|
78
|
+
export declare function isRawSignerLeaf(cand: any): cand is RawSignerLeaf;
|
|
79
|
+
export declare function isSignedSignerLeaf(cand: any): cand is SignedSignerLeaf;
|
|
80
|
+
export declare function isSignedSapientSignerLeaf(cand: any): cand is SignedSapientSignerLeaf;
|
|
81
|
+
export declare function isRawNode(cand: any): cand is RawNode;
|
|
82
|
+
export declare function isRawTopology(cand: any): cand is RawTopology;
|
|
83
|
+
export declare function isRawLeaf(cand: any): cand is RawLeaf;
|
|
84
|
+
export declare function isRawNestedLeaf(cand: any): cand is RawNestedLeaf;
|
|
85
|
+
export declare function decodeSignature(erc6492Signature: Bytes.Bytes): RawSignature;
|
|
86
|
+
export declare function parseBranch(signature: Bytes.Bytes): {
|
|
87
|
+
nodes: RawTopology[];
|
|
88
|
+
leftover: Bytes.Bytes;
|
|
89
|
+
};
|
|
90
|
+
export declare function fillLeaves(topology: Topology, signatureFor: (leaf: SignerLeaf | SapientSignerLeaf) => SignatureOfSignerLeaf | SignatureOfSapientSignerLeaf | undefined): Topology;
|
|
91
|
+
export declare function encodeChainedSignature(signatures: RawSignature[]): Uint8Array;
|
|
92
|
+
export declare function encodeSignature(signature: RawSignature, skipCheckpointerData?: boolean, skipCheckpointerAddress?: boolean): Uint8Array;
|
|
93
|
+
export declare function encodeTopology(topology: Topology | RawTopology, options?: {
|
|
94
|
+
noChainId?: boolean;
|
|
95
|
+
checkpointerData?: Uint8Array;
|
|
96
|
+
}): Uint8Array;
|
|
97
|
+
export declare function rawSignatureToJson(signature: RawSignature): string;
|
|
98
|
+
export declare function rawSignatureFromJson(json: string): RawSignature;
|
|
99
|
+
export declare function recover(signature: RawSignature, wallet: Address.Address, chainId: bigint, payload: Parented, options?: {
|
|
100
|
+
provider?: Provider.Provider | {
|
|
101
|
+
provider: Provider.Provider;
|
|
102
|
+
block: number;
|
|
103
|
+
} | 'assume-valid' | 'assume-invalid';
|
|
104
|
+
}): Promise<{
|
|
105
|
+
configuration: Config;
|
|
106
|
+
weight: bigint;
|
|
107
|
+
}>;
|
|
108
|
+
//# sourceMappingURL=signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"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"}
|