@zerodev/wallet-core 0.0.3 → 0.0.5
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/getUserWallet.js +1 -1
- package/dist/_cjs/actions/wallet/getUserWallet.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/getUserWallet.js +3 -1
- package/dist/_esm/actions/wallet/getUserWallet.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/getUserWallet.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/getUserWallet.ts +3 -1
- 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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { toViemAccount } from '../adapters/viem.js';
|
|
2
2
|
import { createAuthProxyClient, createClient, zeroDevWalletTransport, } from '../client/index.js';
|
|
3
|
-
import { DEFAULT_ORGANIZATION_ID,
|
|
3
|
+
import { DEFAULT_ORGANIZATION_ID, KMS_SERVER_URL } from '../constants.js';
|
|
4
|
+
import { RestRequestError } from '../errors/request.js';
|
|
4
5
|
import { createNoopPasskeyStamper } from '../stampers/noopPasskeyStamper.js';
|
|
5
6
|
import { createStorageManager, } from '../storage/manager.js';
|
|
6
7
|
import { SessionType } from '../types/session.js';
|
|
@@ -8,6 +9,9 @@ import { buildClientSignature } from '../utils/buildClientSignature.js';
|
|
|
8
9
|
import { encryptOtpAttempt } from '../utils/encryptOtpAttempt.js';
|
|
9
10
|
import { createOrganizationIdResolver } from '../utils/resolveOrganizationId.js';
|
|
10
11
|
import { humanReadableDateTime, parseSession } from '../utils/utils.js';
|
|
12
|
+
// The browser/native key vault is a single physical slot shared by SDK
|
|
13
|
+
// instances, so key transitions must be serialized across projects.
|
|
14
|
+
let keyTransitionTail = Promise.resolve();
|
|
11
15
|
export async function createZeroDevWalletCore(config) {
|
|
12
16
|
const { projectId, sessionStorage, rpId, apiKeyStamper, organizationId } = config;
|
|
13
17
|
const passkeyStamper = config.passkeyStamper ?? createNoopPasskeyStamper();
|
|
@@ -30,12 +34,94 @@ export async function createZeroDevWalletCore(config) {
|
|
|
30
34
|
fetchParentOrgId: async () => (await client.getParentOrgId()).parentOrgId,
|
|
31
35
|
fallback: DEFAULT_ORGANIZATION_ID,
|
|
32
36
|
});
|
|
37
|
+
let preparedOAuthPublicKey;
|
|
38
|
+
const prepareFreshKeyRotation = async () => {
|
|
39
|
+
if (preparedOAuthPublicKey) {
|
|
40
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
41
|
+
preparedOAuthPublicKey = undefined;
|
|
42
|
+
}
|
|
43
|
+
return client.apiKeyStamper.prepareKeyRotation();
|
|
44
|
+
};
|
|
45
|
+
const withKeyTransition = async (transition) => {
|
|
46
|
+
const result = keyTransitionTail.then(transition);
|
|
47
|
+
keyTransitionTail = result.then(() => undefined, () => undefined);
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
const normalizeKey = (key) => key.replace(/^0x/, '').toLowerCase();
|
|
51
|
+
const createReplacementSession = (token, expectedPublicKey, idPrefix, sessionType) => {
|
|
52
|
+
const parsed = parseSession(token);
|
|
53
|
+
if (!parsed.publicKey ||
|
|
54
|
+
normalizeKey(parsed.publicKey) !== normalizeKey(expectedPublicKey)) {
|
|
55
|
+
throw new Error('Session public key does not match the locally prepared signing key');
|
|
56
|
+
}
|
|
57
|
+
const now = Date.now();
|
|
58
|
+
return {
|
|
59
|
+
id: `session_${idPrefix}_${now}`,
|
|
60
|
+
userId: parsed.userId,
|
|
61
|
+
organizationId: parsed.organizationId,
|
|
62
|
+
stamperType: 'apiKey',
|
|
63
|
+
sessionType: sessionType ?? parsed.sessionType ?? SessionType.READ_WRITE,
|
|
64
|
+
token,
|
|
65
|
+
publicKey: expectedPublicKey,
|
|
66
|
+
expiry: parsed.expiry,
|
|
67
|
+
createdAt: now,
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const commitReplacementSession = async (session, targetPublicKey) => {
|
|
71
|
+
await sessionStorageManager.stageSessionTransition(session, targetPublicKey);
|
|
72
|
+
try {
|
|
73
|
+
await client.apiKeyStamper.commitKeyRotation();
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
77
|
+
const activePublicKey = await client.apiKeyStamper.getPublicKey();
|
|
78
|
+
const recovered = await sessionStorageManager.recoverSessionTransition(activePublicKey);
|
|
79
|
+
if (!activePublicKey ||
|
|
80
|
+
normalizeKey(activePublicKey) !== normalizeKey(targetPublicKey) ||
|
|
81
|
+
!recovered) {
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const committed = await sessionStorageManager.commitSessionTransition();
|
|
88
|
+
if (!committed) {
|
|
89
|
+
throw new Error('Session transition journal disappeared before commit');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
const recovered = await sessionStorageManager.recoverSessionTransition(await client.apiKeyStamper.getPublicKey());
|
|
94
|
+
if (!recovered)
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
await withKeyTransition(async () => {
|
|
99
|
+
const activePublicKey = await client.apiKeyStamper.getPublicKey();
|
|
100
|
+
await sessionStorageManager.recoverSessionTransition(activePublicKey);
|
|
101
|
+
const restoredSession = await sessionStorageManager.getActiveSession();
|
|
102
|
+
if (restoredSession) {
|
|
103
|
+
try {
|
|
104
|
+
const restoredPublicKey = parseSession(restoredSession.token).publicKey;
|
|
105
|
+
if (!activePublicKey ||
|
|
106
|
+
!restoredPublicKey ||
|
|
107
|
+
normalizeKey(activePublicKey) !== normalizeKey(restoredPublicKey)) {
|
|
108
|
+
await sessionStorageManager.clearAllSessions();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
await sessionStorageManager.clearAllSessions();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
33
116
|
return {
|
|
34
117
|
client,
|
|
35
118
|
async getPublicKey() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
119
|
+
return withKeyTransition(async () => {
|
|
120
|
+
if (preparedOAuthPublicKey)
|
|
121
|
+
return preparedOAuthPublicKey;
|
|
122
|
+
preparedOAuthPublicKey = await client.apiKeyStamper.prepareKeyRotation();
|
|
123
|
+
return preparedOAuthPublicKey;
|
|
124
|
+
});
|
|
39
125
|
},
|
|
40
126
|
async getSession() {
|
|
41
127
|
return sessionStorageManager.getActiveSession();
|
|
@@ -49,157 +135,156 @@ export async function createZeroDevWalletCore(config) {
|
|
|
49
135
|
return sessionMap;
|
|
50
136
|
},
|
|
51
137
|
async switchSession(sessionId) {
|
|
52
|
-
await sessionStorageManager.
|
|
53
|
-
|
|
54
|
-
|
|
138
|
+
const activeSessionKey = await sessionStorageManager.getActiveSessionKey();
|
|
139
|
+
if (sessionId !== activeSessionKey) {
|
|
140
|
+
throw new Error('Session switching is not supported with a single active key vault');
|
|
141
|
+
}
|
|
142
|
+
return sessionStorageManager.getActiveSession();
|
|
55
143
|
},
|
|
56
144
|
async clearSession(sessionId) {
|
|
145
|
+
if ((await sessionStorageManager.getActiveSessionKey()) === sessionId) {
|
|
146
|
+
throw new Error('Refusing to clear the active session locally; use logout() to revoke its remote key first.');
|
|
147
|
+
}
|
|
57
148
|
await sessionStorageManager.clearSession(sessionId);
|
|
58
149
|
},
|
|
59
150
|
async clearAllSessions() {
|
|
151
|
+
if (await sessionStorageManager.getActiveSession()) {
|
|
152
|
+
throw new Error('Refusing to clear the active session locally; use logout() to revoke its remote key first.');
|
|
153
|
+
}
|
|
60
154
|
await sessionStorageManager.clearAllSessions();
|
|
61
155
|
},
|
|
62
156
|
async refreshSession(sessionId) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
throw new Error('Invalid session type');
|
|
157
|
+
return withKeyTransition(async () => {
|
|
158
|
+
const activeSessionKey = await sessionStorageManager.getActiveSessionKey();
|
|
159
|
+
if (sessionId && sessionId !== activeSessionKey) {
|
|
160
|
+
throw new Error('Refreshing an inactive session is not supported with a single active key vault');
|
|
161
|
+
}
|
|
162
|
+
const activeSession = await sessionStorageManager.getActiveSession();
|
|
163
|
+
if (!activeSession) {
|
|
164
|
+
throw new Error('No active session');
|
|
165
|
+
}
|
|
166
|
+
if (activeSession.stamperType !== 'apiKey') {
|
|
167
|
+
throw new Error('Invalid session type');
|
|
168
|
+
}
|
|
169
|
+
const targetPublicKey = await prepareFreshKeyRotation();
|
|
170
|
+
try {
|
|
171
|
+
const data = await client.loginWithStamp({
|
|
172
|
+
targetPublicKey,
|
|
173
|
+
projectId,
|
|
174
|
+
// Stamp-login is signed against the Turnkey parent org; the backend
|
|
175
|
+
// resolves the sub-org from the stamped credential. Signing the
|
|
176
|
+
// sub-org here makes the relayed payload's org mismatch the
|
|
177
|
+
// signature → Turnkey SIGNATURE_INVALID.
|
|
178
|
+
organizationId: await resolveOrganizationId(),
|
|
179
|
+
stampWith: 'apiKey',
|
|
180
|
+
});
|
|
181
|
+
const session = createReplacementSession(data.session, targetPublicKey, 'indexedDb', SessionType.READ_WRITE);
|
|
182
|
+
await commitReplacementSession(session, targetPublicKey);
|
|
183
|
+
return session;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
});
|
|
98
190
|
},
|
|
99
191
|
// [TODO] refactor to smaller utils/actions
|
|
100
192
|
async auth(params) {
|
|
101
193
|
switch (params.type) {
|
|
102
194
|
case 'oauth': {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
195
|
+
return withKeyTransition(async () => {
|
|
196
|
+
const targetPublicKey = preparedOAuthPublicKey ??
|
|
197
|
+
(await client.apiKeyStamper.prepareKeyRotation());
|
|
198
|
+
preparedOAuthPublicKey = undefined;
|
|
199
|
+
try {
|
|
200
|
+
const popSignature = await client.apiKeyStamper.signPending(params.sessionId);
|
|
201
|
+
const data = await client.authenticateWithOAuth({
|
|
202
|
+
provider: params.provider,
|
|
203
|
+
projectId,
|
|
204
|
+
sessionId: params.sessionId,
|
|
205
|
+
popSignature,
|
|
206
|
+
});
|
|
207
|
+
if (!data.session) {
|
|
208
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
209
|
+
return data;
|
|
210
|
+
}
|
|
211
|
+
const session = createReplacementSession(data.session, targetPublicKey, 'oauth');
|
|
212
|
+
await commitReplacementSession(session, targetPublicKey);
|
|
213
|
+
return data;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
217
|
+
throw error;
|
|
218
|
+
}
|
|
109
219
|
});
|
|
110
|
-
if (data.session) {
|
|
111
|
-
// Parse the JWT to get session data
|
|
112
|
-
const parsedSession = parseSession(data.session);
|
|
113
|
-
const session = {
|
|
114
|
-
id: `session_oauth_${Date.now()}`,
|
|
115
|
-
userId: parsedSession.userId,
|
|
116
|
-
organizationId: parsedSession.organizationId,
|
|
117
|
-
stamperType: 'apiKey',
|
|
118
|
-
sessionType: parsedSession.sessionType || SessionType.READ_WRITE,
|
|
119
|
-
token: data.session,
|
|
120
|
-
expiry: parsedSession.expiry,
|
|
121
|
-
createdAt: Date.now(),
|
|
122
|
-
};
|
|
123
|
-
await sessionStorageManager.storeSession(session, session.id);
|
|
124
|
-
}
|
|
125
|
-
return data;
|
|
126
220
|
}
|
|
127
221
|
case 'passkey': {
|
|
128
222
|
const { type } = params;
|
|
129
223
|
if (type === 'passkey' &&
|
|
130
224
|
'mode' in params &&
|
|
131
225
|
params.mode === 'register') {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
226
|
+
return withKeyTransition(async () => {
|
|
227
|
+
if (await sessionStorageManager.getActiveSession()) {
|
|
228
|
+
throw new Error('Passkey registration requires an unauthenticated wallet; logout before registering a new wallet.');
|
|
229
|
+
}
|
|
230
|
+
const registrationPublicKey = await prepareFreshKeyRotation();
|
|
231
|
+
try {
|
|
232
|
+
const name = `ZeroDevWallet-${humanReadableDateTime()}`;
|
|
233
|
+
const { attestation, encodedChallenge } = await passkeyStamper.register({
|
|
234
|
+
rp: { id: rpId, name: 'ZeroDev Wallet' },
|
|
235
|
+
userName: name,
|
|
236
|
+
});
|
|
237
|
+
const data = await client.registerWithPasskey({
|
|
238
|
+
attestation,
|
|
239
|
+
challenge: encodedChallenge,
|
|
240
|
+
projectId,
|
|
241
|
+
encodedPublicKey: registrationPublicKey,
|
|
242
|
+
});
|
|
243
|
+
// Registration proves the temporary key exists remotely. Make
|
|
244
|
+
// it active so it can authorize the durable replacement key.
|
|
245
|
+
await client.apiKeyStamper.commitKeyRotation();
|
|
246
|
+
const targetPublicKey = await prepareFreshKeyRotation();
|
|
247
|
+
const loginData = await client.loginWithStamp({
|
|
248
|
+
projectId,
|
|
249
|
+
targetPublicKey,
|
|
250
|
+
// Sign against the parent org (see refreshSession note) — the
|
|
251
|
+
// backend derives the sub-org from the stamped credential.
|
|
252
|
+
organizationId: await resolveOrganizationId(),
|
|
253
|
+
});
|
|
254
|
+
const session = createReplacementSession(loginData.session, targetPublicKey, 'indexedDb');
|
|
255
|
+
await commitReplacementSession(session, targetPublicKey);
|
|
256
|
+
return data;
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
260
|
+
throw error;
|
|
261
|
+
}
|
|
147
262
|
});
|
|
148
|
-
const compressedPublicKeyHex = await client.apiKeyStamper.prepareKeyRotation();
|
|
149
|
-
const loginData = await client.loginWithStamp({
|
|
150
|
-
projectId,
|
|
151
|
-
targetPublicKey: compressedPublicKeyHex,
|
|
152
|
-
// Sign against the parent org (see refreshSession note) — the
|
|
153
|
-
// backend derives the sub-org from the stamped credential.
|
|
154
|
-
organizationId: await resolveOrganizationId(),
|
|
155
|
-
});
|
|
156
|
-
await client.apiKeyStamper.commitKeyRotation();
|
|
157
|
-
const parsedSession = parseSession(loginData.session);
|
|
158
|
-
const session = {
|
|
159
|
-
id: `session_indexedDb_${Date.now()}`,
|
|
160
|
-
stamperType: 'apiKey',
|
|
161
|
-
createdAt: Date.now(),
|
|
162
|
-
sessionType: SessionType.READ_WRITE,
|
|
163
|
-
userId: parsedSession.userId,
|
|
164
|
-
organizationId: parsedSession.organizationId,
|
|
165
|
-
expiry: Date.now() +
|
|
166
|
-
Number(DEFAULT_SESSION_EXPIRATION_IN_SECONDS) * 1000,
|
|
167
|
-
token: loginData.session,
|
|
168
|
-
};
|
|
169
|
-
await sessionStorageManager.storeSession(session, session.id);
|
|
170
|
-
return data;
|
|
171
263
|
}
|
|
172
264
|
if (type === 'passkey' &&
|
|
173
265
|
'mode' in params &&
|
|
174
266
|
params.mode === 'login') {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
267
|
+
return withKeyTransition(async () => {
|
|
268
|
+
const targetPublicKey = await prepareFreshKeyRotation();
|
|
269
|
+
try {
|
|
270
|
+
const loginData = await client.loginWithStamp({
|
|
271
|
+
targetPublicKey,
|
|
272
|
+
projectId,
|
|
273
|
+
// Sign against the parent org, not the user's sub-org (see the
|
|
274
|
+
// refreshSession note). The backend derives the sub-org from the
|
|
275
|
+
// stamped passkey credential.
|
|
276
|
+
organizationId: await resolveOrganizationId(),
|
|
277
|
+
stampWith: 'passkey',
|
|
278
|
+
});
|
|
279
|
+
const session = createReplacementSession(loginData.session, targetPublicKey, 'indexedDb');
|
|
280
|
+
await commitReplacementSession(session, targetPublicKey);
|
|
281
|
+
return loginData;
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
285
|
+
throw error;
|
|
286
|
+
}
|
|
188
287
|
});
|
|
189
|
-
const parsedSession = parseSession(loginData.session);
|
|
190
|
-
const session = {
|
|
191
|
-
id: `session_indexedDb_${Date.now()}`,
|
|
192
|
-
stamperType: 'apiKey',
|
|
193
|
-
createdAt: Date.now(),
|
|
194
|
-
sessionType: SessionType.READ_WRITE,
|
|
195
|
-
userId: parsedSession.userId,
|
|
196
|
-
organizationId: parsedSession.organizationId,
|
|
197
|
-
expiry: Date.now() +
|
|
198
|
-
Number(DEFAULT_SESSION_EXPIRATION_IN_SECONDS) * 1000,
|
|
199
|
-
token: loginData.session,
|
|
200
|
-
};
|
|
201
|
-
await sessionStorageManager.storeSession(session, session.id);
|
|
202
|
-
return loginData;
|
|
203
288
|
}
|
|
204
289
|
throw new Error('Passkey authentication requires passkey parameter');
|
|
205
290
|
}
|
|
@@ -242,60 +327,53 @@ export async function createZeroDevWalletCore(config) {
|
|
|
242
327
|
return data;
|
|
243
328
|
}
|
|
244
329
|
if (otpParams.mode === 'verifyOtp') {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
330
|
+
return withKeyTransition(async () => {
|
|
331
|
+
const { otpId, otpCode, otpEncryptionTargetBundle } = otpParams;
|
|
332
|
+
const targetPublicKey = await prepareFreshKeyRotation();
|
|
333
|
+
try {
|
|
334
|
+
// HPKE-seal the OTP attempt to the enclave's per-session target
|
|
335
|
+
// key. The auth proxy never sees the plaintext OTP code.
|
|
336
|
+
const encryptedOtpBundle = await encryptOtpAttempt({
|
|
337
|
+
otpCode,
|
|
338
|
+
publicKey: targetPublicKey,
|
|
339
|
+
encryptionTargetBundle: otpEncryptionTargetBundle,
|
|
340
|
+
});
|
|
341
|
+
if (!cachedAuthProxyConfigId) {
|
|
342
|
+
const { authProxyConfigId } = await client.getAuthProxyConfigId();
|
|
343
|
+
cachedAuthProxyConfigId = authProxyConfigId;
|
|
344
|
+
}
|
|
345
|
+
const authProxyClient = createAuthProxyClient({
|
|
346
|
+
authProxyConfigId: cachedAuthProxyConfigId,
|
|
347
|
+
});
|
|
348
|
+
const { verificationToken } = await authProxyClient.verifyOtp({
|
|
349
|
+
otpId,
|
|
350
|
+
encryptedOtpBundle,
|
|
351
|
+
});
|
|
352
|
+
const clientSignature = await buildClientSignature({
|
|
353
|
+
verificationToken,
|
|
354
|
+
publicKey: targetPublicKey,
|
|
355
|
+
stamper: {
|
|
356
|
+
stamp: (payload) => client.apiKeyStamper.stampPending(payload),
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
const data = await client.loginWithOTP({
|
|
360
|
+
verificationToken,
|
|
361
|
+
clientSignature,
|
|
362
|
+
projectId,
|
|
363
|
+
});
|
|
364
|
+
if (!data.session) {
|
|
365
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
366
|
+
return data;
|
|
367
|
+
}
|
|
368
|
+
const session = createReplacementSession(data.session, targetPublicKey, 'otp');
|
|
369
|
+
await commitReplacementSession(session, targetPublicKey);
|
|
370
|
+
return data;
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
await client.apiKeyStamper.discardKeyRotation();
|
|
374
|
+
throw error;
|
|
375
|
+
}
|
|
266
376
|
});
|
|
267
|
-
const { verificationToken } = await authProxyClient.verifyOtp({
|
|
268
|
-
otpId,
|
|
269
|
-
encryptedOtpBundle,
|
|
270
|
-
});
|
|
271
|
-
// Step 3: Build client signature
|
|
272
|
-
const clientSignature = await buildClientSignature({
|
|
273
|
-
verificationToken,
|
|
274
|
-
publicKey: targetPublicKey,
|
|
275
|
-
stamper: client.apiKeyStamper,
|
|
276
|
-
});
|
|
277
|
-
// Step 4: Login via backend (not Auth Proxy!)
|
|
278
|
-
const data = await client.loginWithOTP({
|
|
279
|
-
verificationToken,
|
|
280
|
-
clientSignature,
|
|
281
|
-
projectId,
|
|
282
|
-
});
|
|
283
|
-
if (data.session) {
|
|
284
|
-
// Parse the JWT to get session data
|
|
285
|
-
const parsedSession = parseSession(data.session);
|
|
286
|
-
const session = {
|
|
287
|
-
id: `session_otp_${Date.now()}`,
|
|
288
|
-
userId: parsedSession.userId,
|
|
289
|
-
organizationId: parsedSession.organizationId,
|
|
290
|
-
stamperType: 'apiKey',
|
|
291
|
-
sessionType: parsedSession.sessionType || SessionType.READ_WRITE,
|
|
292
|
-
token: data.session,
|
|
293
|
-
expiry: parsedSession.expiry,
|
|
294
|
-
createdAt: Date.now(),
|
|
295
|
-
};
|
|
296
|
-
await sessionStorageManager.storeSession(session, session.id);
|
|
297
|
-
}
|
|
298
|
-
return data;
|
|
299
377
|
}
|
|
300
378
|
throw new Error('OTP authentication requires mode parameter');
|
|
301
379
|
}
|
|
@@ -303,10 +381,66 @@ export async function createZeroDevWalletCore(config) {
|
|
|
303
381
|
throw new Error(`Unknown auth type: ${params.type}`);
|
|
304
382
|
}
|
|
305
383
|
},
|
|
306
|
-
async logout() {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
384
|
+
async logout(options) {
|
|
385
|
+
return withKeyTransition(async () => {
|
|
386
|
+
const session = await sessionStorageManager.getActiveSession();
|
|
387
|
+
if (session) {
|
|
388
|
+
const publicKey = await client.apiKeyStamper.getPublicKey();
|
|
389
|
+
if (publicKey) {
|
|
390
|
+
try {
|
|
391
|
+
const authenticators = await client.getAuthenticators({
|
|
392
|
+
subOrganizationId: session.organizationId,
|
|
393
|
+
projectId,
|
|
394
|
+
token: session.token,
|
|
395
|
+
});
|
|
396
|
+
const sessionKey = authenticators.sessionKeys?.find((key) => {
|
|
397
|
+
const candidate = key.ApiKey ?? key.apiKey;
|
|
398
|
+
return (candidate !== undefined &&
|
|
399
|
+
normalizeKey(candidate) === normalizeKey(publicKey));
|
|
400
|
+
});
|
|
401
|
+
const apiKeyId = sessionKey?.TurnkeyId ?? sessionKey?.turnkeyId;
|
|
402
|
+
if (!apiKeyId) {
|
|
403
|
+
throw new Error('Current session key was not found in the authenticated key list; refusing to erase local credentials without confirmed remote revocation.');
|
|
404
|
+
}
|
|
405
|
+
await client.logout({
|
|
406
|
+
projectId,
|
|
407
|
+
organizationId: session.organizationId,
|
|
408
|
+
userId: session.userId,
|
|
409
|
+
apiKeyId,
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
// Only a confirmed rejection (401) or an explicit `force` clears
|
|
414
|
+
// local credentials below. Any other failure (403, 5xx, network)
|
|
415
|
+
// is ambiguous — erasing the only key on an inconclusive signal
|
|
416
|
+
// could lock the user out unrecoverably — so preserve it and
|
|
417
|
+
// return without throwing, so callers (e.g. a logout button)
|
|
418
|
+
// don't crash. Pass `logout({ force: true })` to clear locally
|
|
419
|
+
// regardless when the caller knows the remote is gone.
|
|
420
|
+
const credentialIsRejected = error instanceof RestRequestError && error.status === 401;
|
|
421
|
+
if (!options?.force && !credentialIsRejected)
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
preparedOAuthPublicKey = undefined;
|
|
427
|
+
let cleanupError;
|
|
428
|
+
try {
|
|
429
|
+
await client.apiKeyStamper.clear();
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
cleanupError = error;
|
|
433
|
+
}
|
|
434
|
+
try {
|
|
435
|
+
await sessionStorageManager.clearAllSessions();
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
cleanupError ??= error;
|
|
439
|
+
}
|
|
440
|
+
if (cleanupError)
|
|
441
|
+
throw cleanupError;
|
|
442
|
+
return true;
|
|
443
|
+
});
|
|
310
444
|
},
|
|
311
445
|
async toAccount() {
|
|
312
446
|
const session = await sessionStorageManager.getActiveSession();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroDevWalletCore.js","sourceRoot":"","sources":["../../../src/core/createZeroDevWalletCore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createZeroDevWalletCore.js","sourceRoot":"","sources":["../../../src/core/createZeroDevWalletCore.ts"],"names":[],"mappings":"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"}
|