toss-expo-sdk 0.1.2 → 1.0.2
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 +380 -25
- package/lib/module/ble.js +59 -4
- package/lib/module/ble.js.map +1 -1
- package/lib/module/client/BLETransactionHandler.js +277 -0
- package/lib/module/client/BLETransactionHandler.js.map +1 -0
- package/lib/module/client/NonceAccountManager.js +364 -0
- package/lib/module/client/NonceAccountManager.js.map +1 -0
- package/lib/module/client/TossClient.js +1 -1
- package/lib/module/client/TossClient.js.map +1 -1
- package/lib/module/examples/enhancedFeaturesFlow.js +233 -0
- package/lib/module/examples/enhancedFeaturesFlow.js.map +1 -0
- package/lib/module/examples/offlinePaymentFlow.js +27 -27
- package/lib/module/examples/offlinePaymentFlow.js.map +1 -1
- package/lib/module/hooks/useOfflineBLETransactions.js +314 -0
- package/lib/module/hooks/useOfflineBLETransactions.js.map +1 -0
- package/lib/module/index.js +18 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/intent.js +129 -0
- package/lib/module/intent.js.map +1 -1
- package/lib/module/noise.js +175 -0
- package/lib/module/noise.js.map +1 -1
- package/lib/module/qr.js +2 -2
- package/lib/module/reconciliation.js +155 -0
- package/lib/module/reconciliation.js.map +1 -1
- package/lib/module/services/authService.js +166 -3
- package/lib/module/services/authService.js.map +1 -1
- package/lib/module/storage/secureStorage.js +102 -0
- package/lib/module/storage/secureStorage.js.map +1 -1
- package/lib/module/sync.js +25 -1
- package/lib/module/sync.js.map +1 -1
- package/lib/module/types/nonceAccount.js +2 -0
- package/lib/module/types/nonceAccount.js.map +1 -0
- package/lib/module/types/tossUser.js +16 -1
- package/lib/module/types/tossUser.js.map +1 -1
- package/lib/module/utils/compression.js +210 -0
- package/lib/module/utils/compression.js.map +1 -0
- package/lib/module/wifi.js +311 -0
- package/lib/module/wifi.js.map +1 -0
- package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts +8 -0
- package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts.map +1 -0
- package/lib/typescript/src/ble.d.ts +31 -2
- package/lib/typescript/src/ble.d.ts.map +1 -1
- package/lib/typescript/src/client/BLETransactionHandler.d.ts +98 -0
- package/lib/typescript/src/client/BLETransactionHandler.d.ts.map +1 -0
- package/lib/typescript/src/client/NonceAccountManager.d.ts +82 -0
- package/lib/typescript/src/client/NonceAccountManager.d.ts.map +1 -0
- package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts +45 -0
- package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts +91 -0
- package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +11 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/intent.d.ts +15 -0
- package/lib/typescript/src/intent.d.ts.map +1 -1
- package/lib/typescript/src/noise.d.ts +62 -0
- package/lib/typescript/src/noise.d.ts.map +1 -1
- package/lib/typescript/src/reconciliation.d.ts +6 -0
- package/lib/typescript/src/reconciliation.d.ts.map +1 -1
- package/lib/typescript/src/services/authService.d.ts +26 -1
- package/lib/typescript/src/services/authService.d.ts.map +1 -1
- package/lib/typescript/src/storage/secureStorage.d.ts +16 -0
- package/lib/typescript/src/storage/secureStorage.d.ts.map +1 -1
- package/lib/typescript/src/sync.d.ts +6 -1
- package/lib/typescript/src/sync.d.ts.map +1 -1
- package/lib/typescript/src/types/nonceAccount.d.ts +59 -0
- package/lib/typescript/src/types/nonceAccount.d.ts.map +1 -0
- package/lib/typescript/src/types/tossUser.d.ts +16 -0
- package/lib/typescript/src/types/tossUser.d.ts.map +1 -1
- package/lib/typescript/src/utils/compression.d.ts +52 -0
- package/lib/typescript/src/utils/compression.d.ts.map +1 -0
- package/lib/typescript/src/wifi.d.ts +116 -0
- package/lib/typescript/src/wifi.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/solana-program-simple.test.ts +256 -0
- package/src/ble.ts +105 -4
- package/src/client/BLETransactionHandler.ts +364 -0
- package/src/client/NonceAccountManager.ts +444 -0
- package/src/client/TossClient.ts +1 -1
- package/src/examples/enhancedFeaturesFlow.ts +272 -0
- package/src/examples/offlinePaymentFlow.ts +27 -27
- package/src/hooks/useOfflineBLETransactions.ts +438 -0
- package/src/index.tsx +52 -6
- package/src/intent.ts +166 -0
- package/src/noise.ts +238 -0
- package/src/qr.tsx +2 -2
- package/src/reconciliation.ts +184 -0
- package/src/services/authService.ts +190 -3
- package/src/storage/secureStorage.ts +138 -0
- package/src/sync.ts +40 -0
- package/src/types/nonceAccount.ts +75 -0
- package/src/types/tossUser.ts +35 -2
- package/src/utils/compression.ts +247 -0
- package/src/wifi.ts +401 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { BLETransactionHandler } from "../client/BLETransactionHandler.js";
|
|
5
|
+
import { NonceAccountManager } from "../client/NonceAccountManager.js";
|
|
6
|
+
import { AuthService } from "../services/authService.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* State for BLE transaction transmission
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* State for offline transaction preparation
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* useOfflineTransaction Hook
|
|
18
|
+
* Manages offline transaction creation with nonce accounts
|
|
19
|
+
* Handles biometric protection and secure storage
|
|
20
|
+
*/
|
|
21
|
+
export function useOfflineTransaction(user, connection) {
|
|
22
|
+
const [state, setState] = useState({
|
|
23
|
+
isPreparing: false,
|
|
24
|
+
isReady: false
|
|
25
|
+
});
|
|
26
|
+
const nonceManagerRef = useRef(null);
|
|
27
|
+
|
|
28
|
+
// Initialize nonce manager
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
nonceManagerRef.current = new NonceAccountManager(connection);
|
|
31
|
+
|
|
32
|
+
// Cleanup expired cache periodically
|
|
33
|
+
const interval = setInterval(() => {
|
|
34
|
+
nonceManagerRef.current?.cleanupExpiredCache();
|
|
35
|
+
}, 5 * 60 * 1000); // Every 5 minutes
|
|
36
|
+
|
|
37
|
+
return () => clearInterval(interval);
|
|
38
|
+
}, [connection]);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Create offline transaction with nonce account
|
|
42
|
+
* Requires biometric verification if enabled
|
|
43
|
+
*/
|
|
44
|
+
const createOfflineTransaction = useCallback(async (instructions, metadata) => {
|
|
45
|
+
if (!user.nonceAccount) {
|
|
46
|
+
setState(prev => ({
|
|
47
|
+
...prev,
|
|
48
|
+
error: 'User does not have nonce account configured'
|
|
49
|
+
}));
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
setState(prev => ({
|
|
53
|
+
...prev,
|
|
54
|
+
isPreparing: true,
|
|
55
|
+
error: undefined
|
|
56
|
+
}));
|
|
57
|
+
try {
|
|
58
|
+
// Verify nonce account access (requires biometric if enabled)
|
|
59
|
+
if (user.security.nonceAccountRequiresBiometric) {
|
|
60
|
+
const hasAccess = await AuthService.verifyNonceAccountAccess(user.userId);
|
|
61
|
+
if (!hasAccess) {
|
|
62
|
+
throw new Error('Biometric verification failed');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Get cached nonce account or retrieve from storage
|
|
67
|
+
const nonceManager = nonceManagerRef.current;
|
|
68
|
+
let nonceAccountData = nonceManager.getCachedNonceAccount(user.userId);
|
|
69
|
+
let nonceAccountInfo = null;
|
|
70
|
+
if (nonceAccountData) {
|
|
71
|
+
nonceAccountInfo = nonceAccountData;
|
|
72
|
+
} else {
|
|
73
|
+
const retrievedInfo = await nonceManager.getNonceAccountSecure(user.userId);
|
|
74
|
+
if (retrievedInfo) {
|
|
75
|
+
nonceAccountInfo = nonceManager.getCachedNonceAccount(user.userId);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (!nonceAccountInfo) {
|
|
79
|
+
throw new Error('Failed to retrieve nonce account information');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Validate nonce account
|
|
83
|
+
if (!nonceManager.isNonceAccountValid(nonceAccountInfo.accountInfo)) {
|
|
84
|
+
throw new Error('Nonce account is no longer valid');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Prepare offline transaction
|
|
88
|
+
const transaction = await nonceManager.prepareOfflineTransaction(user, instructions, nonceAccountInfo.accountInfo);
|
|
89
|
+
transaction.metadata = metadata || {};
|
|
90
|
+
setState(prev => ({
|
|
91
|
+
...prev,
|
|
92
|
+
transaction,
|
|
93
|
+
isReady: true,
|
|
94
|
+
isPreparing: false
|
|
95
|
+
}));
|
|
96
|
+
return transaction;
|
|
97
|
+
} catch (error) {
|
|
98
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
99
|
+
setState(prev => ({
|
|
100
|
+
...prev,
|
|
101
|
+
error: errorMessage,
|
|
102
|
+
isPreparing: false,
|
|
103
|
+
isReady: false
|
|
104
|
+
}));
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}, [user]);
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Clear current offline transaction
|
|
111
|
+
*/
|
|
112
|
+
const clearTransaction = useCallback(() => {
|
|
113
|
+
setState({
|
|
114
|
+
isPreparing: false,
|
|
115
|
+
isReady: false
|
|
116
|
+
});
|
|
117
|
+
}, []);
|
|
118
|
+
return {
|
|
119
|
+
...state,
|
|
120
|
+
createOfflineTransaction,
|
|
121
|
+
clearTransaction,
|
|
122
|
+
nonceManager: nonceManagerRef.current
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* useBLETransactionTransmission Hook
|
|
128
|
+
* Handles secure BLE transmission of fragmented transactions
|
|
129
|
+
* with Noise Protocol encryption
|
|
130
|
+
*/
|
|
131
|
+
export function useBLETransactionTransmission(platform = 'android') {
|
|
132
|
+
const [state, setState] = useState({
|
|
133
|
+
isTransmitting: false,
|
|
134
|
+
progress: {
|
|
135
|
+
sentFragments: 0,
|
|
136
|
+
totalFragments: 0
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
const bleHandlerRef = useRef(new BLETransactionHandler(platform));
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Send transaction over BLE with fragmentation
|
|
143
|
+
*/
|
|
144
|
+
const sendTransactionBLE = useCallback(async (device, transaction, sendFn, noiseEncryptFn, isIntent = false) => {
|
|
145
|
+
setState(prev => ({
|
|
146
|
+
...prev,
|
|
147
|
+
isTransmitting: true,
|
|
148
|
+
error: undefined
|
|
149
|
+
}));
|
|
150
|
+
try {
|
|
151
|
+
const bleHandler = bleHandlerRef.current;
|
|
152
|
+
const result = await bleHandler.sendFragmentedTransactionBLE(device, transaction, sendFn, noiseEncryptFn, isIntent);
|
|
153
|
+
if (!result.success) {
|
|
154
|
+
const failedCount = result.failedFragments.length;
|
|
155
|
+
throw new Error(`Failed to send ${failedCount} fragment(s): ${result.failedFragments.join(', ')}`);
|
|
156
|
+
}
|
|
157
|
+
setState(prev => ({
|
|
158
|
+
...prev,
|
|
159
|
+
isTransmitting: false,
|
|
160
|
+
progress: {
|
|
161
|
+
sentFragments: result.sentFragments,
|
|
162
|
+
totalFragments: result.sentFragments + result.failedFragments.length,
|
|
163
|
+
messageId: result.messageId
|
|
164
|
+
},
|
|
165
|
+
lastSent: {
|
|
166
|
+
messageId: result.messageId,
|
|
167
|
+
timestamp: Date.now()
|
|
168
|
+
}
|
|
169
|
+
}));
|
|
170
|
+
return true;
|
|
171
|
+
} catch (error) {
|
|
172
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
173
|
+
setState(prev => ({
|
|
174
|
+
...prev,
|
|
175
|
+
isTransmitting: false,
|
|
176
|
+
error: errorMessage
|
|
177
|
+
}));
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
}, []);
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Receive fragmented transaction
|
|
184
|
+
*/
|
|
185
|
+
const receiveTransactionFragment = useCallback(async (fragment, noiseDecryptFn) => {
|
|
186
|
+
try {
|
|
187
|
+
const bleHandler = bleHandlerRef.current;
|
|
188
|
+
const result = await bleHandler.receiveFragmentedMessage(fragment, noiseDecryptFn);
|
|
189
|
+
setState(prev => ({
|
|
190
|
+
...prev,
|
|
191
|
+
progress: {
|
|
192
|
+
sentFragments: result.progress.received,
|
|
193
|
+
totalFragments: result.progress.total,
|
|
194
|
+
messageId: fragment.messageId
|
|
195
|
+
}
|
|
196
|
+
}));
|
|
197
|
+
return result;
|
|
198
|
+
} catch (error) {
|
|
199
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
200
|
+
setState(prev => ({
|
|
201
|
+
...prev,
|
|
202
|
+
error: errorMessage
|
|
203
|
+
}));
|
|
204
|
+
return {
|
|
205
|
+
complete: false,
|
|
206
|
+
progress: {
|
|
207
|
+
received: 0,
|
|
208
|
+
total: 0
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
}, []);
|
|
213
|
+
const getMTUConfig = useCallback(() => {
|
|
214
|
+
return bleHandlerRef.current.getMTUConfig();
|
|
215
|
+
}, []);
|
|
216
|
+
const setMTUConfig = useCallback(config => {
|
|
217
|
+
bleHandlerRef.current.setMTUConfig(config);
|
|
218
|
+
}, []);
|
|
219
|
+
return {
|
|
220
|
+
...state,
|
|
221
|
+
sendTransactionBLE,
|
|
222
|
+
receiveTransactionFragment,
|
|
223
|
+
getMTUConfig,
|
|
224
|
+
setMTUConfig
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* useNonceAccountManagement Hook
|
|
230
|
+
* Manages nonce account lifecycle: creation, renewal, revocation
|
|
231
|
+
*/
|
|
232
|
+
export function useNonceAccountManagement(user, connection) {
|
|
233
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
234
|
+
const [error, setError] = useState();
|
|
235
|
+
const nonceManagerRef = useRef(new NonceAccountManager(connection));
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Create nonce account with biometric protection
|
|
239
|
+
*/
|
|
240
|
+
const createNonceAccount = useCallback(async userKeypair => {
|
|
241
|
+
setIsLoading(true);
|
|
242
|
+
setError(undefined);
|
|
243
|
+
try {
|
|
244
|
+
const updatedUser = await AuthService.createSecureNonceAccount(user, connection, userKeypair);
|
|
245
|
+
return updatedUser;
|
|
246
|
+
} catch (err) {
|
|
247
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
248
|
+
setError(errorMessage);
|
|
249
|
+
return null;
|
|
250
|
+
} finally {
|
|
251
|
+
setIsLoading(false);
|
|
252
|
+
}
|
|
253
|
+
}, [user, connection]);
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Renew nonce account (refresh from blockchain)
|
|
257
|
+
*/
|
|
258
|
+
const renewNonceAccount = useCallback(async () => {
|
|
259
|
+
if (!user.nonceAccount) {
|
|
260
|
+
setError('No nonce account to renew');
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
setIsLoading(true);
|
|
264
|
+
setError(undefined);
|
|
265
|
+
try {
|
|
266
|
+
const updated = await nonceManagerRef.current.renewNonceAccount(user.userId, user.nonceAccount.address);
|
|
267
|
+
return updated;
|
|
268
|
+
} catch (err) {
|
|
269
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
270
|
+
setError(errorMessage);
|
|
271
|
+
return null;
|
|
272
|
+
} finally {
|
|
273
|
+
setIsLoading(false);
|
|
274
|
+
}
|
|
275
|
+
}, [user.userId, user.nonceAccount]);
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Revoke nonce account
|
|
279
|
+
*/
|
|
280
|
+
const revokeNonceAccount = useCallback(async () => {
|
|
281
|
+
setIsLoading(true);
|
|
282
|
+
setError(undefined);
|
|
283
|
+
try {
|
|
284
|
+
const updatedUser = await AuthService.revokeNonceAccount(user.userId, user);
|
|
285
|
+
return updatedUser;
|
|
286
|
+
} catch (err) {
|
|
287
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
288
|
+
setError(errorMessage);
|
|
289
|
+
return null;
|
|
290
|
+
} finally {
|
|
291
|
+
setIsLoading(false);
|
|
292
|
+
}
|
|
293
|
+
}, [user]);
|
|
294
|
+
const isNonceAccountValid = useCallback(() => {
|
|
295
|
+
if (!user.nonceAccount) {
|
|
296
|
+
return false;
|
|
297
|
+
}
|
|
298
|
+
const cached = nonceManagerRef.current.getCachedNonceAccount(user.userId);
|
|
299
|
+
if (cached) {
|
|
300
|
+
return nonceManagerRef.current.isNonceAccountValid(cached.accountInfo);
|
|
301
|
+
}
|
|
302
|
+
return user.nonceAccount.status === 'active';
|
|
303
|
+
}, [user.userId, user.nonceAccount]);
|
|
304
|
+
return {
|
|
305
|
+
isLoading,
|
|
306
|
+
error,
|
|
307
|
+
createNonceAccount,
|
|
308
|
+
renewNonceAccount,
|
|
309
|
+
revokeNonceAccount,
|
|
310
|
+
isNonceAccountValid,
|
|
311
|
+
hasNonceAccount: !!user.nonceAccount
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=useOfflineBLETransactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","BLETransactionHandler","NonceAccountManager","AuthService","useOfflineTransaction","user","connection","state","setState","isPreparing","isReady","nonceManagerRef","current","interval","setInterval","cleanupExpiredCache","clearInterval","createOfflineTransaction","instructions","metadata","nonceAccount","prev","error","undefined","security","nonceAccountRequiresBiometric","hasAccess","verifyNonceAccountAccess","userId","Error","nonceManager","nonceAccountData","getCachedNonceAccount","nonceAccountInfo","retrievedInfo","getNonceAccountSecure","isNonceAccountValid","accountInfo","transaction","prepareOfflineTransaction","errorMessage","message","String","clearTransaction","useBLETransactionTransmission","platform","isTransmitting","progress","sentFragments","totalFragments","bleHandlerRef","sendTransactionBLE","device","sendFn","noiseEncryptFn","isIntent","bleHandler","result","sendFragmentedTransactionBLE","success","failedCount","failedFragments","length","join","messageId","lastSent","timestamp","Date","now","receiveTransactionFragment","fragment","noiseDecryptFn","receiveFragmentedMessage","received","total","complete","getMTUConfig","setMTUConfig","config","useNonceAccountManagement","isLoading","setIsLoading","setError","createNonceAccount","userKeypair","updatedUser","createSecureNonceAccount","err","renewNonceAccount","updated","address","revokeNonceAccount","cached","status","hasNonceAccount"],"sourceRoot":"../../../src","sources":["hooks/useOfflineBLETransactions.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
// Core types and intents
|
|
4
|
-
export { createIntent, createUserIntent, createSignedIntent } from "./intent.js";
|
|
5
|
-
|
|
4
|
+
export { createIntent, createUserIntent, createSignedIntent, createOfflineIntent } from "./intent.js";
|
|
5
|
+
|
|
6
|
+
// Nonce Account Management (for offline transactions)
|
|
7
|
+
export { NonceAccountManager } from "./client/NonceAccountManager.js";
|
|
8
|
+
// BLE Transaction Handling (fragmentation & Noise encryption)
|
|
9
|
+
export { BLETransactionHandler } from "./client/BLETransactionHandler.js";
|
|
10
|
+
// Custom Hooks for Offline BLE Transactions
|
|
11
|
+
export { useOfflineTransaction, useBLETransactionTransmission, useNonceAccountManagement } from "./hooks/useOfflineBLETransactions.js";
|
|
6
12
|
// Intent management
|
|
7
13
|
export { verifyIntentSignature, isIntentExpired, updateIntentStatus, validateIntent, processIntentsForSync, filterExpiredIntents } from "./intentManager.js";
|
|
8
14
|
|
|
9
15
|
// Storage
|
|
10
16
|
export { storePendingIntent, getPendingIntents, clearPendingIntents } from "./storage.js";
|
|
11
17
|
|
|
12
|
-
// Transport methods
|
|
13
|
-
export { startTossScan, requestBLEPermissions } from "./ble.js";
|
|
18
|
+
// Transport methods (enhanced with fragmentation)
|
|
19
|
+
export { startTossScan, requestBLEPermissions, sendOfflineTransactionFragmented, receiveOfflineTransactionFragment, getBLEMTUConfig, setBLEMTUConfig } from "./ble.js";
|
|
14
20
|
export { initNFC, readNFCUser, writeUserToNFC, writeIntentToNFC } from "./nfc.js";
|
|
15
21
|
export { QRScanner } from "./qr.js";
|
|
16
22
|
|
|
@@ -18,10 +24,8 @@ export { QRScanner } from "./qr.js";
|
|
|
18
24
|
export { TossClient } from "./client/TossClient.js";
|
|
19
25
|
export { WalletProvider, useWallet } from "./contexts/WalletContext.js";
|
|
20
26
|
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
export const createClient = TossClient.createClient;
|
|
24
|
-
|
|
27
|
+
// Authentication Service (enhanced with nonce accounts)
|
|
28
|
+
export { AuthService } from "./services/authService.js";
|
|
25
29
|
// Sync and settlement
|
|
26
30
|
export { syncToChain, checkSyncStatus } from "./sync.js";
|
|
27
31
|
|
|
@@ -30,4 +34,10 @@ export { reconcilePendingIntents, settleIntent, validateIntentOnchain, buildTran
|
|
|
30
34
|
|
|
31
35
|
// Device discovery and intent exchange
|
|
32
36
|
export { DeviceDiscoveryService, IntentExchangeProtocol, IntentRoutingService, MultiDeviceConflictResolver, deviceDiscovery, intentExchange, intentRouting } from "./discovery.js";
|
|
37
|
+
|
|
38
|
+
// Compression utilities
|
|
39
|
+
export { compressMetadata, decompressMetadata, compressIntentMetadata, decompressIntentMetadata, estimateCompressionSavings } from "./utils/compression.js";
|
|
40
|
+
|
|
41
|
+
// WiFi Direct transport
|
|
42
|
+
export { WiFiDirectTransport, SmartTransportSelector } from "./wifi.js";
|
|
33
43
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createIntent","createUserIntent","createSignedIntent","verifyIntentSignature","isIntentExpired","updateIntentStatus","validateIntent","processIntentsForSync","filterExpiredIntents","storePendingIntent","getPendingIntents","clearPendingIntents","startTossScan","requestBLEPermissions","initNFC","readNFCUser","writeUserToNFC","writeIntentToNFC","QRScanner","TossClient","WalletProvider","useWallet","
|
|
1
|
+
{"version":3,"names":["createIntent","createUserIntent","createSignedIntent","createOfflineIntent","NonceAccountManager","BLETransactionHandler","useOfflineTransaction","useBLETransactionTransmission","useNonceAccountManagement","verifyIntentSignature","isIntentExpired","updateIntentStatus","validateIntent","processIntentsForSync","filterExpiredIntents","storePendingIntent","getPendingIntents","clearPendingIntents","startTossScan","requestBLEPermissions","sendOfflineTransactionFragmented","receiveOfflineTransactionFragment","getBLEMTUConfig","setBLEMTUConfig","initNFC","readNFCUser","writeUserToNFC","writeIntentToNFC","QRScanner","TossClient","WalletProvider","useWallet","AuthService","syncToChain","checkSyncStatus","reconcilePendingIntents","settleIntent","validateIntentOnchain","buildTransactionFromIntent","submitTransactionToChain","detectConflicts","getReconciliationState","DeviceDiscoveryService","IntentExchangeProtocol","IntentRoutingService","MultiDeviceConflictResolver","deviceDiscovery","intentExchange","intentRouting","compressMetadata","decompressMetadata","compressIntentMetadata","decompressIntentMetadata","estimateCompressionSavings","WiFiDirectTransport","SmartTransportSelector"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA,SACEA,YAAY,EACZC,gBAAgB,EAChBC,kBAAkB,EAClBC,mBAAmB,QAGd,aAAU;;AAEjB;AACA,SAASC,mBAAmB,QAAQ,iCAA8B;AAQlE;AACA,SAASC,qBAAqB,QAAQ,mCAAgC;AAOtE;AACA,SACEC,qBAAqB,EACrBC,6BAA6B,EAC7BC,yBAAyB,QACpB,sCAAmC;AAM1C;AACA,SACEC,qBAAqB,EACrBC,eAAe,EACfC,kBAAkB,EAClBC,cAAc,EACdC,qBAAqB,EACrBC,oBAAoB,QACf,oBAAiB;;AAExB;AACA,SACEC,kBAAkB,EAClBC,iBAAiB,EACjBC,mBAAmB,QACd,cAAW;;AAElB;AACA,SACEC,aAAa,EACbC,qBAAqB,EACrBC,gCAAgC,EAChCC,iCAAiC,EACjCC,eAAe,EACfC,eAAe,QACV,UAAO;AACd,SAASC,OAAO,EAAEC,WAAW,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,UAAO;AAC9E,SAASC,SAAS,QAAQ,SAAM;;AAEhC;AACA,SAASC,UAAU,QAAyB,wBAAqB;AAEjE,SAASC,cAAc,EAAEC,SAAS,QAAQ,6BAA0B;;AAEpE;AACA,SAASC,WAAW,QAAQ,2BAAwB;AACpD;AACA,SAASC,WAAW,EAAEC,eAAe,QAAyB,WAAQ;;AAEtE;AACA,SACEC,uBAAuB,EACvBC,YAAY,EACZC,qBAAqB,EACrBC,0BAA0B,EAC1BC,wBAAwB,EACxBC,eAAe,EACfC,sBAAsB,QAGjB,qBAAkB;;AAEzB;AACA,SACEC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,eAAe,EACfC,cAAc,EACdC,aAAa,QAIR,gBAAa;;AAEpB;AACA,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,sBAAsB,EACtBC,wBAAwB,EACxBC,0BAA0B,QACrB,wBAAqB;;AAE5B;AACA,SAASC,mBAAmB,EAAEC,sBAAsB,QAAQ,WAAQ","ignoreList":[]}
|
package/lib/module/intent.js
CHANGED
|
@@ -14,6 +14,7 @@ import { encryptForArciumInternal } from "./internal/arciumHelper.js";
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Core type for an offline intent following TOSS specification
|
|
17
|
+
* Enhanced with durable nonce account support
|
|
17
18
|
*/
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -84,8 +85,28 @@ export const nonceManager = new NonceManager();
|
|
|
84
85
|
/**
|
|
85
86
|
* Creates a signed intent between two TOSS users (User-centric API)
|
|
86
87
|
* Recommended for application developers - validates user wallets
|
|
88
|
+
*
|
|
89
|
+
* GAP #8 FIX: Requires biometric authentication for sensitive transactions
|
|
87
90
|
*/
|
|
88
91
|
export async function createUserIntent(senderUser, senderKeypair, recipientUser, amount, connection, options = {}) {
|
|
92
|
+
// GAP #8 FIX: Require biometric verification if enabled
|
|
93
|
+
if (senderUser.security?.biometricEnabled) {
|
|
94
|
+
try {
|
|
95
|
+
const LocalAuthentication = await import('expo-local-authentication');
|
|
96
|
+
const compatible = await LocalAuthentication.default.hasHardwareAsync();
|
|
97
|
+
if (compatible) {
|
|
98
|
+
const authenticated = await LocalAuthentication.default.authenticateAsync({
|
|
99
|
+
disableDeviceFallback: false
|
|
100
|
+
});
|
|
101
|
+
if (!authenticated.success) {
|
|
102
|
+
throw new Error('Biometric authentication failed');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.warn('Biometric verification not available, proceeding without', error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
89
110
|
// Verify sender's keypair matches their wallet
|
|
90
111
|
if (senderKeypair.publicKey.toBase58() !== senderUser.wallet.publicKey.toBase58()) {
|
|
91
112
|
throw new Error('Sender keypair does not match user wallet');
|
|
@@ -289,4 +310,112 @@ export function updateIntentStatus(intent, status, error) {
|
|
|
289
310
|
updatedAt: Math.floor(Date.now() / 1000)
|
|
290
311
|
};
|
|
291
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Creates an offline intent with durable nonce account support
|
|
315
|
+
* Enables replay-protected offline transactions using nonce accounts
|
|
316
|
+
* Requires biometric authentication for enhanced security
|
|
317
|
+
*/
|
|
318
|
+
export async function createOfflineIntent(senderUser, senderKeypair, recipientUser, amount, nonceAccountInfo,
|
|
319
|
+
// NonceAccountInfo from NonceAccountManager
|
|
320
|
+
connection, options = {}) {
|
|
321
|
+
// Verify sender has nonce account enabled
|
|
322
|
+
if (!senderUser.nonceAccount || !senderUser.tossFeatures.offlineTransactionsEnabled) {
|
|
323
|
+
throw new Error('Offline transactions not enabled for this user');
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// Verify sender's keypair matches their wallet
|
|
327
|
+
if (senderKeypair.publicKey.toBase58() !== senderUser.wallet.publicKey.toBase58()) {
|
|
328
|
+
throw new Error('Sender keypair does not match user wallet');
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Verify both users can transact
|
|
332
|
+
if (!senderUser.tossFeatures.canSend) {
|
|
333
|
+
throw new Error('Sender account is not enabled for sending');
|
|
334
|
+
}
|
|
335
|
+
if (!recipientUser.tossFeatures.canReceive) {
|
|
336
|
+
throw new Error('Recipient account is not enabled for receiving');
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Verify transaction amount is within limits
|
|
340
|
+
if (amount > senderUser.tossFeatures.maxTransactionAmount) {
|
|
341
|
+
throw new Error(`Transaction amount exceeds limit of ${senderUser.tossFeatures.maxTransactionAmount} lamports`);
|
|
342
|
+
}
|
|
343
|
+
const now = Math.floor(Date.now() / 1000);
|
|
344
|
+
const defaultExpiry = 24 * 60 * 60; // 24 hours default
|
|
345
|
+
|
|
346
|
+
// Get latest blockhash for nonce account
|
|
347
|
+
const {
|
|
348
|
+
blockhash
|
|
349
|
+
} = await connection.getLatestBlockhash();
|
|
350
|
+
|
|
351
|
+
// Prepare user contexts
|
|
352
|
+
const senderCtx = {
|
|
353
|
+
userId: senderUser.userId,
|
|
354
|
+
username: senderUser.username,
|
|
355
|
+
wallet: {
|
|
356
|
+
publicKey: senderUser.wallet.publicKey,
|
|
357
|
+
isVerified: senderUser.wallet.isVerified,
|
|
358
|
+
createdAt: senderUser.wallet.createdAt
|
|
359
|
+
},
|
|
360
|
+
status: senderUser.status,
|
|
361
|
+
deviceId: senderUser.device.id,
|
|
362
|
+
sessionId: uuidv4()
|
|
363
|
+
};
|
|
364
|
+
const recipientCtx = {
|
|
365
|
+
userId: recipientUser.userId,
|
|
366
|
+
username: recipientUser.username,
|
|
367
|
+
wallet: {
|
|
368
|
+
publicKey: recipientUser.wallet.publicKey,
|
|
369
|
+
isVerified: recipientUser.wallet.isVerified,
|
|
370
|
+
createdAt: recipientUser.wallet.createdAt
|
|
371
|
+
},
|
|
372
|
+
status: recipientUser.status,
|
|
373
|
+
deviceId: recipientUser.device.id,
|
|
374
|
+
sessionId: uuidv4()
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
// Create base intent with nonce account support
|
|
378
|
+
const baseIntent = {
|
|
379
|
+
id: uuidv4(),
|
|
380
|
+
from: senderKeypair.publicKey.toBase58(),
|
|
381
|
+
to: recipientUser.wallet.publicKey.toBase58(),
|
|
382
|
+
fromUser: senderCtx,
|
|
383
|
+
toUser: recipientCtx,
|
|
384
|
+
amount,
|
|
385
|
+
nonce: nonceAccountInfo.currentNonce,
|
|
386
|
+
expiry: now + (options.expiresIn || defaultExpiry),
|
|
387
|
+
blockhash,
|
|
388
|
+
feePayer: senderKeypair.publicKey.toBase58(),
|
|
389
|
+
status: 'pending',
|
|
390
|
+
createdAt: now,
|
|
391
|
+
updatedAt: now,
|
|
392
|
+
// Nonce account support
|
|
393
|
+
nonceAccountAddress: nonceAccountInfo.address,
|
|
394
|
+
nonceAccountAuth: nonceAccountInfo.authorizedSigner,
|
|
395
|
+
requiresBiometric: senderUser.security.nonceAccountRequiresBiometric,
|
|
396
|
+
// Backward compatibility
|
|
397
|
+
nonceAccount: nonceAccountInfo.address,
|
|
398
|
+
nonceAuth: nonceAccountInfo.authorizedSigner
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
// Sign the intent
|
|
402
|
+
const signature = sign(Buffer.from(JSON.stringify(baseIntent)), senderKeypair.secretKey);
|
|
403
|
+
const intent = {
|
|
404
|
+
...baseIntent,
|
|
405
|
+
signature: bs58.encode(signature)
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
// If private transaction, encrypt the intent data
|
|
409
|
+
if (options.privateTransaction) {
|
|
410
|
+
if (!options.mxeProgramId) {
|
|
411
|
+
throw new Error('MXE Program ID is required for private transactions');
|
|
412
|
+
}
|
|
413
|
+
if (!options.provider) {
|
|
414
|
+
throw new Error('Provider is required for private transactions');
|
|
415
|
+
}
|
|
416
|
+
const plaintextValues = [BigInt(amount)];
|
|
417
|
+
intent.encrypted = await encryptForArciumInternal(options.mxeProgramId, plaintextValues, options.provider);
|
|
418
|
+
}
|
|
419
|
+
return intent;
|
|
420
|
+
}
|
|
292
421
|
//# sourceMappingURL=intent.js.map
|
package/lib/module/intent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PublicKey","bs58","v4","uuidv4","sign","nacl","encryptForArciumInternal","NonceManager","nonceStore","Map","NONCE_EXPIRY","getNextNonce","publicKey","connection","key","toBase58","now","Date","cleanupNonces","accountInfo","getAccountInfo","chainNonce","extractNonceFromAccountInfo","stored","get","nonce","lastUsed","nextNonce","Math","max","set","error","console","warn","data","length","readUInt32LE","value","entries","delete","nonceManager","createUserIntent","senderUser","senderKeypair","recipientUser","amount","options","wallet","Error","tossFeatures","canSend","canReceive","maxTransactionAmount","senderCtx","userId","username","isVerified","createdAt","status","deviceId","device","id","sessionId","recipientCtx","intent","createSignedIntent","fromUser","toUser","sender","recipient","floor","defaultExpiry","blockhash","Promise","all","getLatestBlockhash","undefined","resolve","baseIntent","from","to","expiry","expiresIn","feePayer","nonceAuth","updatedAt","nonceAccount","signature","Buffer","JSON","stringify","secretKey","encode","verifyIntent","isIntentExpired","decode","message","toBytes","publicKeyUint8","Uint8Array","signatureUint8","verified","detached","verify","currentNonce","createIntent","privateTransaction","mxeProgramId","provider","plaintextValues","BigInt","encrypted","updateIntentStatus"],"sourceRoot":"../../src","sources":["intent.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PublicKey","bs58","v4","uuidv4","sign","nacl","encryptForArciumInternal","NonceManager","nonceStore","Map","NONCE_EXPIRY","getNextNonce","publicKey","connection","key","toBase58","now","Date","cleanupNonces","accountInfo","getAccountInfo","chainNonce","extractNonceFromAccountInfo","stored","get","nonce","lastUsed","nextNonce","Math","max","set","error","console","warn","data","length","readUInt32LE","value","entries","delete","nonceManager","createUserIntent","senderUser","senderKeypair","recipientUser","amount","options","security","biometricEnabled","LocalAuthentication","compatible","default","hasHardwareAsync","authenticated","authenticateAsync","disableDeviceFallback","success","Error","wallet","tossFeatures","canSend","canReceive","maxTransactionAmount","senderCtx","userId","username","isVerified","createdAt","status","deviceId","device","id","sessionId","recipientCtx","intent","createSignedIntent","fromUser","toUser","sender","recipient","floor","defaultExpiry","blockhash","Promise","all","getLatestBlockhash","undefined","resolve","baseIntent","from","to","expiry","expiresIn","feePayer","nonceAuth","updatedAt","nonceAccount","signature","Buffer","JSON","stringify","secretKey","encode","verifyIntent","isIntentExpired","decode","message","toBytes","publicKeyUint8","Uint8Array","signatureUint8","verified","detached","verify","currentNonce","createIntent","privateTransaction","mxeProgramId","provider","plaintextValues","BigInt","encrypted","updateIntentStatus","createOfflineIntent","nonceAccountInfo","offlineTransactionsEnabled","nonceAccountAddress","address","nonceAccountAuth","authorizedSigner","requiresBiometric","nonceAccountRequiresBiometric"],"sourceRoot":"../../src","sources":["intent.ts"],"mappings":"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","ignoreList":[]}
|