@zerodev/wallet-core 0.0.3 → 0.0.4
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/dist/_cjs/actions/auth/getAuthenticators.js.map +1 -1
- package/dist/_cjs/actions/auth/index.js +3 -1
- package/dist/_cjs/actions/auth/index.js.map +1 -1
- package/dist/_cjs/actions/auth/logout.js +23 -0
- package/dist/_cjs/actions/auth/logout.js.map +1 -0
- package/dist/_cjs/actions/index.js +2 -1
- package/dist/_cjs/actions/index.js.map +1 -1
- package/dist/_cjs/actions/wallet/signingUtils.js +23 -3
- package/dist/_cjs/actions/wallet/signingUtils.js.map +1 -1
- package/dist/_cjs/adapters/viem.js +26 -9
- package/dist/_cjs/adapters/viem.js.map +1 -1
- package/dist/_cjs/client/decorators/client.js +1 -0
- package/dist/_cjs/client/decorators/client.js.map +1 -1
- package/dist/_cjs/client/transports/rest.js.map +1 -1
- package/dist/_cjs/core/createZeroDevWalletCore.js +297 -168
- package/dist/_cjs/core/createZeroDevWalletCore.js.map +1 -1
- package/dist/_cjs/index.js +2 -1
- package/dist/_cjs/index.js.map +1 -1
- package/dist/_cjs/index.native.js +2 -1
- package/dist/_cjs/index.native.js.map +1 -1
- package/dist/_cjs/native/stampers/secureStore.js +94 -17
- package/dist/_cjs/native/stampers/secureStore.js.map +1 -1
- package/dist/_cjs/stampers/indexedDbStamper.js +34 -0
- package/dist/_cjs/stampers/indexedDbStamper.js.map +1 -1
- package/dist/_cjs/storage/manager.js +144 -17
- package/dist/_cjs/storage/manager.js.map +1 -1
- package/dist/_cjs/utils/buildClientSignature.js +4 -1
- package/dist/_cjs/utils/buildClientSignature.js.map +1 -1
- package/dist/_cjs/utils/derToRawSignature.js +12 -0
- package/dist/_cjs/utils/derToRawSignature.js.map +1 -1
- package/dist/_cjs/utils/exportPrivateKey.js +1 -1
- package/dist/_cjs/utils/exportPrivateKey.js.map +1 -1
- package/dist/_cjs/utils/utils.js +27 -6
- package/dist/_cjs/utils/utils.js.map +1 -1
- package/dist/_esm/actions/auth/getAuthenticators.js +3 -2
- package/dist/_esm/actions/auth/getAuthenticators.js.map +1 -1
- package/dist/_esm/actions/auth/index.js +1 -0
- package/dist/_esm/actions/auth/index.js.map +1 -1
- package/dist/_esm/actions/auth/logout.js +21 -0
- package/dist/_esm/actions/auth/logout.js.map +1 -0
- package/dist/_esm/actions/index.js +1 -1
- package/dist/_esm/actions/index.js.map +1 -1
- package/dist/_esm/actions/wallet/signingUtils.js +24 -4
- package/dist/_esm/actions/wallet/signingUtils.js.map +1 -1
- package/dist/_esm/adapters/viem.js +27 -10
- package/dist/_esm/adapters/viem.js.map +1 -1
- package/dist/_esm/client/decorators/client.js +2 -1
- package/dist/_esm/client/decorators/client.js.map +1 -1
- package/dist/_esm/client/transports/rest.js.map +1 -1
- package/dist/_esm/core/createZeroDevWalletCore.js +320 -186
- package/dist/_esm/core/createZeroDevWalletCore.js.map +1 -1
- package/dist/_esm/index.js +1 -1
- package/dist/_esm/index.js.map +1 -1
- package/dist/_esm/index.native.js +1 -1
- package/dist/_esm/index.native.js.map +1 -1
- package/dist/_esm/native/stampers/secureStore.js +111 -18
- package/dist/_esm/native/stampers/secureStore.js.map +1 -1
- package/dist/_esm/stampers/indexedDbStamper.js +36 -0
- package/dist/_esm/stampers/indexedDbStamper.js.map +1 -1
- package/dist/_esm/storage/manager.js +150 -22
- package/dist/_esm/storage/manager.js.map +1 -1
- package/dist/_esm/utils/buildClientSignature.js +4 -1
- package/dist/_esm/utils/buildClientSignature.js.map +1 -1
- package/dist/_esm/utils/derToRawSignature.js +12 -0
- package/dist/_esm/utils/derToRawSignature.js.map +1 -1
- package/dist/_esm/utils/exportPrivateKey.js +1 -1
- package/dist/_esm/utils/exportPrivateKey.js.map +1 -1
- package/dist/_esm/utils/utils.js +27 -6
- package/dist/_esm/utils/utils.js.map +1 -1
- package/dist/_types/actions/auth/getAuthenticators.d.ts +19 -2
- package/dist/_types/actions/auth/getAuthenticators.d.ts.map +1 -1
- package/dist/_types/actions/auth/index.d.ts +2 -1
- package/dist/_types/actions/auth/index.d.ts.map +1 -1
- package/dist/_types/actions/auth/logout.d.ts +11 -0
- package/dist/_types/actions/auth/logout.d.ts.map +1 -0
- package/dist/_types/actions/index.d.ts +1 -1
- package/dist/_types/actions/index.d.ts.map +1 -1
- package/dist/_types/actions/wallet/signingUtils.d.ts.map +1 -1
- package/dist/_types/adapters/viem.d.ts.map +1 -1
- package/dist/_types/client/decorators/client.d.ts +3 -1
- package/dist/_types/client/decorators/client.d.ts.map +1 -1
- package/dist/_types/client/transports/rest.d.ts +3 -3
- package/dist/_types/client/transports/rest.d.ts.map +1 -1
- package/dist/_types/core/createZeroDevWalletCore.d.ts +8 -1
- package/dist/_types/core/createZeroDevWalletCore.d.ts.map +1 -1
- package/dist/_types/index.d.ts +2 -2
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/index.native.d.ts +2 -2
- package/dist/_types/index.native.d.ts.map +1 -1
- package/dist/_types/native/stampers/secureStore.d.ts.map +1 -1
- package/dist/_types/stampers/indexedDbStamper.d.ts.map +1 -1
- package/dist/_types/stampers/types.d.ts +6 -0
- package/dist/_types/stampers/types.d.ts.map +1 -1
- package/dist/_types/storage/manager.d.ts +3 -0
- package/dist/_types/storage/manager.d.ts.map +1 -1
- package/dist/_types/types/session.d.ts +2 -0
- package/dist/_types/types/session.d.ts.map +1 -1
- package/dist/_types/utils/buildClientSignature.d.ts +1 -1
- package/dist/_types/utils/buildClientSignature.d.ts.map +1 -1
- package/dist/_types/utils/derToRawSignature.d.ts.map +1 -1
- package/dist/_types/utils/utils.d.ts +1 -1
- package/dist/_types/utils/utils.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/actions/auth/getAuthenticators.ts +20 -2
- package/src/actions/auth/index.ts +6 -0
- package/src/actions/auth/logout.ts +35 -0
- package/src/actions/index.ts +4 -0
- package/src/actions/wallet/signingUtils.ts +43 -4
- package/src/adapters/viem.ts +40 -12
- package/src/client/decorators/client.ts +7 -0
- package/src/client/transports/rest.ts +4 -4
- package/src/core/createZeroDevWalletCore.ts +393 -205
- package/src/index.native.ts +4 -0
- package/src/index.ts +4 -0
- package/src/native/stampers/secureStore.ts +119 -24
- package/src/stampers/indexedDbStamper.ts +47 -0
- package/src/stampers/types.ts +6 -0
- package/src/storage/manager.ts +205 -25
- package/src/types/session.ts +2 -0
- package/src/utils/buildClientSignature.ts +4 -2
- package/src/utils/derToRawSignature.ts +16 -2
- package/src/utils/exportPrivateKey.ts +1 -1
- package/src/utils/utils.ts +30 -9
package/dist/_cjs/utils/utils.js
CHANGED
|
@@ -6,26 +6,44 @@ exports.normalizeTimestamp = normalizeTimestamp;
|
|
|
6
6
|
exports.pointEncode = pointEncode;
|
|
7
7
|
exports.uint8ArrayToHexString = uint8ArrayToHexString;
|
|
8
8
|
exports.generateCompressedPublicKeyFromKeyPair = generateCompressedPublicKeyFromKeyPair;
|
|
9
|
+
const session_js_1 = require("../types/session.js");
|
|
9
10
|
function parseSession(token) {
|
|
10
11
|
if (typeof token !== 'string') {
|
|
11
12
|
return token;
|
|
12
13
|
}
|
|
13
|
-
const
|
|
14
|
-
if (!
|
|
14
|
+
const parts = token.split('.');
|
|
15
|
+
if (parts.length !== 3 || !parts[1]) {
|
|
15
16
|
throw new Error('Invalid JWT: Missing payload');
|
|
16
17
|
}
|
|
17
|
-
const base64 =
|
|
18
|
+
const base64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');
|
|
18
19
|
const decoded = JSON.parse(atob(base64));
|
|
20
|
+
if (!decoded || typeof decoded !== 'object') {
|
|
21
|
+
throw new Error('JWT payload missing required fields');
|
|
22
|
+
}
|
|
19
23
|
const { exp, public_key: publicKey, session_type: sessionType, user_id: userId, organization_id: organizationId, } = decoded;
|
|
20
|
-
if (
|
|
24
|
+
if (typeof exp !== 'number' ||
|
|
25
|
+
!Number.isFinite(exp) ||
|
|
26
|
+
exp <= 0 ||
|
|
27
|
+
typeof publicKey !== 'string' ||
|
|
28
|
+
!publicKey ||
|
|
29
|
+
(sessionType !== session_js_1.SessionType.READ_ONLY &&
|
|
30
|
+
sessionType !== session_js_1.SessionType.READ_WRITE) ||
|
|
31
|
+
typeof userId !== 'string' ||
|
|
32
|
+
!userId ||
|
|
33
|
+
typeof organizationId !== 'string' ||
|
|
34
|
+
!organizationId) {
|
|
21
35
|
throw new Error('JWT payload missing required fields');
|
|
22
36
|
}
|
|
37
|
+
if (normalizeTimestamp(exp) <= Date.now()) {
|
|
38
|
+
throw new Error('JWT session is already expired');
|
|
39
|
+
}
|
|
23
40
|
return {
|
|
24
41
|
sessionType,
|
|
25
42
|
userId,
|
|
26
43
|
organizationId,
|
|
27
44
|
expiry: exp,
|
|
28
|
-
token
|
|
45
|
+
token,
|
|
46
|
+
publicKey,
|
|
29
47
|
};
|
|
30
48
|
}
|
|
31
49
|
function normalizeTimestamp(timestamp) {
|
|
@@ -52,7 +70,10 @@ function pointEncode(raw) {
|
|
|
52
70
|
if (x.length !== 32 || y.length !== 32) {
|
|
53
71
|
throw new Error('Invalid x or y length');
|
|
54
72
|
}
|
|
55
|
-
const
|
|
73
|
+
const lastY = y.at(-1);
|
|
74
|
+
if (lastY === undefined)
|
|
75
|
+
throw new Error('Invalid y coordinate');
|
|
76
|
+
const prefix = (lastY & 1) === 0 ? 0x02 : 0x03;
|
|
56
77
|
const compressed = new Uint8Array(33);
|
|
57
78
|
compressed[0] = prefix;
|
|
58
79
|
compressed.set(x, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":";;;AASA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Fetches all authenticators (oauths, passkeys, emailContacts, apiKeys
|
|
2
|
+
* Fetches all authenticators (oauths, passkeys, emailContacts, apiKeys,
|
|
3
|
+
* sessionKeys) for
|
|
3
4
|
* the authenticated user within the given project/sub-organization.
|
|
4
5
|
*
|
|
5
|
-
* Corresponds to `
|
|
6
|
+
* Corresponds to `GET /api/v1/{projectId}/authenticators`.
|
|
6
7
|
*
|
|
7
8
|
* @param client - The ZeroDev Wallet client
|
|
8
9
|
* @param params - The parameters for the authenticators request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthenticators.js","sourceRoot":"","sources":["../../../../src/actions/auth/getAuthenticators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAuthenticators.js","sourceRoot":"","sources":["../../../../src/actions/auth/getAuthenticators.ts"],"names":[],"mappings":"AAmEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,MAAmC;IAEnC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAEnC,4EAA4E;IAC5E,4EAA4E;IAC5E,qEAAqE;IACrE,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC;QAC1B,IAAI,EAAE,GAAG,SAAS,iBAAiB;QACnC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;SACjC;QACD,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,WAAW;KAC1B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -7,6 +7,7 @@ export { getParentOrgId, } from './getParentOrgId.js';
|
|
|
7
7
|
export { getWhoami, } from './getWhoami.js';
|
|
8
8
|
export { loginWithOTP, } from './loginWithOTP.js';
|
|
9
9
|
export { loginWithStamp, } from './loginWithStamp.js';
|
|
10
|
+
export { logout, } from './logout.js';
|
|
10
11
|
export { registerWithOTP, } from './registerWithOTP.js';
|
|
11
12
|
export { registerWithPasskey, } from './registerWithPasskey.js';
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actions/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAGL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAKL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actions/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAGL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAKL,iBAAiB,GAIlB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEL,oBAAoB,GACrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAGL,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAEL,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,SAAS,GACV,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAGL,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,MAAM,GACP,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAGL,mBAAmB,GACpB,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Revokes the caller's current Turnkey session key. */
|
|
2
|
+
export async function logout(client, params) {
|
|
3
|
+
const body = {
|
|
4
|
+
organizationId: params.organizationId,
|
|
5
|
+
parameters: {
|
|
6
|
+
apiKeyIds: [params.apiKeyId],
|
|
7
|
+
userId: params.userId,
|
|
8
|
+
},
|
|
9
|
+
timestampMs: Date.now().toString(),
|
|
10
|
+
type: 'ACTIVITY_TYPE_DELETE_API_KEYS',
|
|
11
|
+
};
|
|
12
|
+
return await client.request({
|
|
13
|
+
path: `${params.projectId}/auth/logout`,
|
|
14
|
+
method: 'POST',
|
|
15
|
+
body,
|
|
16
|
+
stamp: true,
|
|
17
|
+
stampWith: 'apiKey',
|
|
18
|
+
stampPostion: 'headers',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../../src/actions/auth/logout.ts"],"names":[],"mappings":"AAWA,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAAc,EACd,MAAwB;IAExB,MAAM,IAAI,GAAG;QACX,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,UAAU,EAAE;YACV,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB;QACD,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,+BAA+B;KACtC,CAAA;IAED,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC;QAC1B,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,cAAc;QACvC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,SAAS;KACxB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Auth actions
|
|
2
|
-
export { authenticateWithEmail, authenticateWithOAuth, getAuthenticators, getAuthProxyConfigId, getOAuthLoginUrl, getParentOrgId, getWhoami, loginWithOTP, registerWithOTP, registerWithPasskey, } from './auth/index.js';
|
|
2
|
+
export { authenticateWithEmail, authenticateWithOAuth, getAuthenticators, getAuthProxyConfigId, getOAuthLoginUrl, getParentOrgId, getWhoami, loginWithOTP, logout, registerWithOTP, registerWithPasskey, } from './auth/index.js';
|
|
3
3
|
// Wallet actions
|
|
4
4
|
export { getUserWallet, sign7702Authorization, signMessage, signTransaction, signTypedDataV4, signUserOperation, } from './wallet/index.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAML,qBAAqB,EACrB,qBAAqB,EAUrB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAML,qBAAqB,EACrB,qBAAqB,EAUrB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,SAAS,EAKT,YAAY,EACZ,MAAM,EAQN,eAAe,EACf,mBAAmB,GAEpB,MAAM,iBAAiB,CAAA;AAExB,iBAAiB;AACjB,OAAO,EAGL,aAAa,EAWb,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAA"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { canonicalizeEx } from 'json-canonicalize';
|
|
2
|
-
import { hashMessage, keccak256, toHex } from 'viem';
|
|
2
|
+
import { hashMessage, isAddress, isAddressEqual, keccak256, recoverAddress, toHex, zeroAddress, } from 'viem';
|
|
3
3
|
export function buildTurnkeyPayload(organizationId, address, payloadHash) {
|
|
4
|
+
if (!isAddress(address, { strict: false }) ||
|
|
5
|
+
isAddressEqual(address, zeroAddress)) {
|
|
6
|
+
throw new Error(`Refusing to sign with an invalid or zero address: ${address}`);
|
|
7
|
+
}
|
|
8
|
+
const normalizedPayloadHash = payloadHash.replace(/^0x/, '');
|
|
9
|
+
if (!/^[0-9a-fA-F]{64}$/.test(normalizedPayloadHash)) {
|
|
10
|
+
throw new Error('Refusing to sign a payload that is not a 32-byte hex hash');
|
|
11
|
+
}
|
|
4
12
|
return {
|
|
5
13
|
type: 'ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2',
|
|
6
14
|
timestampMs: Date.now().toString(),
|
|
7
15
|
organizationId,
|
|
8
16
|
parameters: {
|
|
9
17
|
signWith: address,
|
|
10
|
-
payload:
|
|
18
|
+
payload: normalizedPayloadHash,
|
|
11
19
|
encoding: 'PAYLOAD_ENCODING_HEXADECIMAL',
|
|
12
20
|
hashFunction: 'HASH_FUNCTION_NO_OP',
|
|
13
21
|
},
|
|
@@ -30,7 +38,7 @@ export async function sendSigningRequest(client, params) {
|
|
|
30
38
|
// Outer stamp over full body (for KMS middleware)
|
|
31
39
|
const fullBodyString = canonicalizeEx(fullBody);
|
|
32
40
|
const outerStamp = await client.apiKeyStamper.stamp(fullBodyString);
|
|
33
|
-
const
|
|
41
|
+
const response = await client.request({
|
|
34
42
|
path: `${projectId}/${path}`,
|
|
35
43
|
method: 'POST',
|
|
36
44
|
body: fullBody,
|
|
@@ -39,7 +47,19 @@ export async function sendSigningRequest(client, params) {
|
|
|
39
47
|
Authorization: `Bearer ${token}`,
|
|
40
48
|
},
|
|
41
49
|
});
|
|
42
|
-
|
|
50
|
+
const signature = response?.signature;
|
|
51
|
+
if (typeof signature !== 'string' || !signature) {
|
|
52
|
+
throw new Error('Signing response did not contain a valid signature');
|
|
53
|
+
}
|
|
54
|
+
const normalizedSignature = (signature.startsWith('0x') ? signature : `0x${signature}`);
|
|
55
|
+
const recoveredAddress = await recoverAddress({
|
|
56
|
+
hash: `0x${turnkeyPayload.parameters.payload}`,
|
|
57
|
+
signature: normalizedSignature,
|
|
58
|
+
});
|
|
59
|
+
if (!isAddressEqual(recoveredAddress, turnkeyPayload.parameters.signWith)) {
|
|
60
|
+
throw new Error(`Signing response did not recover to expected owner ${turnkeyPayload.parameters.signWith}.`);
|
|
61
|
+
}
|
|
62
|
+
return normalizedSignature;
|
|
43
63
|
}
|
|
44
64
|
/**
|
|
45
65
|
* Compute payload hash for message signing (EIP-191).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signingUtils.js","sourceRoot":"","sources":["../../../../src/actions/wallet/signingUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,
|
|
1
|
+
{"version":3,"file":"signingUtils.js","sourceRoot":"","sources":["../../../../src/actions/wallet/signingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { bytesToHex, concat, getTypesForEIP712Domain, hashTypedData, isAddress, isAddressEqual, numberToHex, parseSignature, serializeTransaction, serializeTypedData, toRlp, zeroAddress, } from 'viem';
|
|
1
|
+
import { bytesToHex, concat, getTypesForEIP712Domain, hashTypedData, isAddress, isAddressEqual, keccak256, numberToHex, parseSignature, recoverAddress, recoverMessageAddress, serializeTransaction, serializeTypedData, toRlp, zeroAddress, } from 'viem';
|
|
2
2
|
import { toAccount } from 'viem/accounts';
|
|
3
3
|
import { hashAuthorization } from 'viem/utils';
|
|
4
4
|
export async function toViemAccount(params) {
|
|
5
5
|
const { client, organizationId, projectId, getToken } = params;
|
|
6
|
+
const token = await getToken();
|
|
6
7
|
const walletResponse = await client.getUserWallet({
|
|
7
8
|
organizationId,
|
|
8
9
|
projectId,
|
|
9
|
-
token
|
|
10
|
+
token,
|
|
10
11
|
});
|
|
11
12
|
const address = walletResponse.walletAddresses[0];
|
|
12
13
|
if (!address ||
|
|
@@ -14,6 +15,12 @@ export async function toViemAccount(params) {
|
|
|
14
15
|
isAddressEqual(address, zeroAddress)) {
|
|
15
16
|
throw new Error(`Cannot build account: wallet address is missing, malformed, or zero for organization ${organizationId} (got ${address ?? 'undefined'}).`);
|
|
16
17
|
}
|
|
18
|
+
const assertOwner = async (recovered) => {
|
|
19
|
+
const recoveredAddress = await recovered;
|
|
20
|
+
if (!isAddressEqual(address, recoveredAddress)) {
|
|
21
|
+
throw new Error(`Signing response did not recover to wallet owner ${address}.`);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
17
24
|
// Modified from: https://github.com/tkhq/sdk/blob/4e439bf2973ea13b51d981d7c24a4841d4e5fd5f/packages/viem/src/index.ts#L419-L461
|
|
18
25
|
const signTransactionInternal = async (transaction, serializer) => {
|
|
19
26
|
// Note: for Type 3 transactions, we are specifically handling parsing for payloads containing only the transaction payload body, without any wrappers around blobs, commitments, or proofs.
|
|
@@ -30,14 +37,15 @@ export async function toViemAccount(params) {
|
|
|
30
37
|
address,
|
|
31
38
|
unsignedTransaction: nonHexPrefixedSerializedTx,
|
|
32
39
|
});
|
|
40
|
+
await assertOwner(recoverAddress({ hash: keccak256(serializedTx), signature }));
|
|
33
41
|
const { r, s, v, yParity } = parseSignature(signature);
|
|
34
|
-
return
|
|
42
|
+
return serializer(transaction, { r, s, v, yParity });
|
|
35
43
|
};
|
|
36
44
|
return toAccount({
|
|
37
45
|
address,
|
|
38
46
|
async signMessage({ message }) {
|
|
39
47
|
if (typeof message === 'string') {
|
|
40
|
-
|
|
48
|
+
const signature = await client.signMessage({
|
|
41
49
|
organizationId,
|
|
42
50
|
projectId,
|
|
43
51
|
token: await getToken(),
|
|
@@ -45,12 +53,14 @@ export async function toViemAccount(params) {
|
|
|
45
53
|
message,
|
|
46
54
|
encoding: 'utf8',
|
|
47
55
|
});
|
|
56
|
+
await assertOwner(recoverMessageAddress({ message, signature }));
|
|
57
|
+
return signature;
|
|
48
58
|
}
|
|
49
59
|
// Raw message (Hex or ByteArray)
|
|
50
60
|
const raw = typeof message.raw === 'string'
|
|
51
61
|
? message.raw.replace(/^0x/, '')
|
|
52
62
|
: bytesToHex(message.raw).slice(2);
|
|
53
|
-
|
|
63
|
+
const signature = await client.signMessage({
|
|
54
64
|
organizationId,
|
|
55
65
|
projectId,
|
|
56
66
|
token: await getToken(),
|
|
@@ -58,6 +68,11 @@ export async function toViemAccount(params) {
|
|
|
58
68
|
message: raw,
|
|
59
69
|
encoding: 'hex',
|
|
60
70
|
});
|
|
71
|
+
await assertOwner(recoverMessageAddress({
|
|
72
|
+
message: { raw: `0x${raw}` },
|
|
73
|
+
signature,
|
|
74
|
+
}));
|
|
75
|
+
return signature;
|
|
61
76
|
},
|
|
62
77
|
signTransaction: async (transaction, options) => {
|
|
63
78
|
const serializer = options?.serializer ??
|
|
@@ -74,15 +89,18 @@ export async function toViemAccount(params) {
|
|
|
74
89
|
}),
|
|
75
90
|
},
|
|
76
91
|
});
|
|
77
|
-
|
|
92
|
+
const typedDataHash = hashTypedData(typedData);
|
|
93
|
+
const signature = await client.signTypedDataV4({
|
|
78
94
|
organizationId,
|
|
79
95
|
projectId,
|
|
80
96
|
token: await getToken(),
|
|
81
97
|
address,
|
|
82
98
|
unsignedTypedDataV4: serializedTypedData,
|
|
83
99
|
encoding: 'utf8',
|
|
84
|
-
typedDataHash:
|
|
100
|
+
typedDataHash: typedDataHash.slice(2),
|
|
85
101
|
});
|
|
102
|
+
await assertOwner(recoverAddress({ hash: typedDataHash, signature }));
|
|
103
|
+
return signature;
|
|
86
104
|
},
|
|
87
105
|
async signAuthorization(parameters) {
|
|
88
106
|
const { chainId, nonce } = parameters;
|
|
@@ -112,13 +130,12 @@ export async function toViemAccount(params) {
|
|
|
112
130
|
unsignedTransaction,
|
|
113
131
|
hashedAuthorization: hashedAuthorization.slice(2),
|
|
114
132
|
});
|
|
115
|
-
|
|
133
|
+
await assertOwner(recoverAddress({ hash: hashedAuthorization, signature }));
|
|
116
134
|
return {
|
|
117
135
|
address: authAddress,
|
|
118
136
|
chainId,
|
|
119
137
|
nonce,
|
|
120
|
-
...
|
|
121
|
-
yParity: parsedSignature.v === BigInt(27) ? 0 : 1,
|
|
138
|
+
...parseSignature(signature),
|
|
122
139
|
};
|
|
123
140
|
},
|
|
124
141
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viem.js","sourceRoot":"","sources":["../../../src/adapters/viem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,uBAAuB,EAEvB,aAAa,EACb,SAAS,EACT,cAAc,
|
|
1
|
+
{"version":3,"file":"viem.js","sourceRoot":"","sources":["../../../src/adapters/viem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { loginWithStamp, } from '../../actions/auth/loginWithStamp.js';
|
|
2
|
-
import { authenticateWithEmail, authenticateWithOAuth, getAuthenticators, getAuthProxyConfigId, getOAuthLoginUrl, getParentOrgId, getUserWallet, getWhoami, loginWithOTP, registerWithOTP, registerWithPasskey, sign7702Authorization, signMessage, signTransaction, signTypedDataV4, signUserOperation, } from '../../actions/index.js';
|
|
2
|
+
import { authenticateWithEmail, authenticateWithOAuth, getAuthenticators, getAuthProxyConfigId, getOAuthLoginUrl, getParentOrgId, getUserWallet, getWhoami, loginWithOTP, logout, registerWithOTP, registerWithPasskey, sign7702Authorization, signMessage, signTransaction, signTypedDataV4, signUserOperation, } from '../../actions/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Decorator function that adds ZeroDev Wallet client actions to a client
|
|
5
5
|
*
|
|
@@ -29,6 +29,7 @@ export function zeroDevWalletActions(client) {
|
|
|
29
29
|
authenticateWithOAuth: (params) => authenticateWithOAuth(client, params),
|
|
30
30
|
getWhoami: (params) => getWhoami(client, params),
|
|
31
31
|
getAuthenticators: (params) => getAuthenticators(client, params),
|
|
32
|
+
logout: (params) => logout(client, params),
|
|
32
33
|
// Wallet actions
|
|
33
34
|
getUserWallet: (params) => getUserWallet(client, params),
|
|
34
35
|
signMessage: (params) => signMessage(client, params),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/decorators/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,GACf,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAKL,qBAAqB,EACrB,qBAAqB,EAWrB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/decorators/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,GACf,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAKL,qBAAqB,EACrB,qBAAqB,EAWrB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,SAAS,EAKT,YAAY,EACZ,MAAM,EAKN,eAAe,EACf,mBAAmB,EAWnB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AA+H/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO;QACL,eAAe;QACf,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;QACxE,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;QACxE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;QAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;QAChE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAE1C,iBAAiB;QACjB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QACxD,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACpD,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;QAC5D,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;QAC5D,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;QAChE,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;QACxE,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;QACpE,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;QAC1D,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;QAC5D,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;QACtD,oBAAoB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACxD,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;KAC/D,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/client/transports/rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AA6C5E,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,GAAwB;IACxD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,MAAM,CAAA;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAA;IAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,WAAW,CAAA;IAEpC,MAAM,OAAO,GAAkB,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;QACrC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAA;QAE7D,IAAI,CAAC;YACH,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAA;YAC3B,IAAI,cAAc,GAA2B;gBAC3C,GAAG,CAAE,GAAG,CAAC,YAAY,EAAE,OAAkC,IAAI,EAAE,CAAC;gBAChE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvB,cAAc,EAAE,kBAAkB;aACnC,CAAA;YAED,+BAA+B;YAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/client/transports/rest.ts"],"names":[],"mappings":"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"}
|