toss-expo-sdk 0.1.1 → 1.0.1
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 +490 -81
- 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 +27 -44
- package/lib/module/client/TossClient.js.map +1 -1
- package/lib/module/contexts/WalletContext.js +4 -4
- package/lib/module/contexts/WalletContext.js.map +1 -1
- package/lib/module/discovery.js +35 -8
- package/lib/module/discovery.js.map +1 -1
- package/lib/module/examples/offlinePaymentFlow.js +27 -2
- 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 +13 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/intent.js +198 -0
- package/lib/module/intent.js.map +1 -1
- package/lib/module/nfc.js +1 -1
- package/lib/module/noise.js +176 -1
- package/lib/module/noise.js.map +1 -1
- package/lib/module/reconciliation.js +155 -0
- package/lib/module/reconciliation.js.map +1 -1
- package/lib/module/services/authService.js +164 -1
- 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/storage.js +4 -4
- 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/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/client/TossClient.d.ts +10 -12
- package/lib/typescript/src/client/TossClient.d.ts.map +1 -1
- package/lib/typescript/src/discovery.d.ts +8 -2
- package/lib/typescript/src/discovery.d.ts.map +1 -1
- package/lib/typescript/src/examples/offlinePaymentFlow.d.ts +9 -1
- package/lib/typescript/src/examples/offlinePaymentFlow.d.ts.map +1 -1
- 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 +26 -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/package.json +12 -1
- package/src/__tests__/reconciliation.test.tsx +7 -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 +36 -49
- package/src/contexts/WalletContext.tsx +4 -4
- package/src/discovery.ts +46 -8
- package/src/examples/offlinePaymentFlow.ts +48 -2
- package/src/hooks/useOfflineBLETransactions.ts +438 -0
- package/src/index.tsx +49 -7
- package/src/intent.ts +254 -0
- package/src/nfc.ts +4 -4
- package/src/noise.ts +239 -1
- package/src/reconciliation.ts +184 -0
- package/src/services/authService.ts +188 -1
- package/src/storage/secureStorage.ts +142 -4
- package/src/storage.ts +4 -4
- package/src/sync.ts +40 -0
- package/src/types/nonceAccount.ts +75 -0
- package/src/types/tossUser.ts +35 -2
package/lib/module/discovery.js
CHANGED
|
@@ -103,6 +103,9 @@ export class DeviceDiscoveryService {
|
|
|
103
103
|
export class IntentExchangeProtocol {
|
|
104
104
|
pendingRequests = new Map();
|
|
105
105
|
noiseSessions = new Map();
|
|
106
|
+
// Track timeout handles so they can be cleared during shutdown/cleanup
|
|
107
|
+
requestTimeouts = new Map();
|
|
108
|
+
sessionTimeouts = new Map();
|
|
106
109
|
// Static key for this device
|
|
107
110
|
REQUEST_TIMEOUT = 2 * 60 * 1000; // 2 minutes
|
|
108
111
|
SESSION_TIMEOUT = 30 * 60 * 1000; // 30 minutes
|
|
@@ -133,10 +136,12 @@ export class IntentExchangeProtocol {
|
|
|
133
136
|
};
|
|
134
137
|
this.noiseSessions.set(peerId, session);
|
|
135
138
|
|
|
136
|
-
// Clean up expired sessions
|
|
137
|
-
setTimeout(() => {
|
|
139
|
+
// Clean up expired sessions (track timer so it can be cleared)
|
|
140
|
+
const sessTimer = setTimeout(() => {
|
|
138
141
|
this.noiseSessions.delete(peerId);
|
|
142
|
+
this.sessionTimeouts.delete(peerId);
|
|
139
143
|
}, this.SESSION_TIMEOUT);
|
|
144
|
+
this.sessionTimeouts.set(peerId, sessTimer);
|
|
140
145
|
return session;
|
|
141
146
|
}
|
|
142
147
|
|
|
@@ -165,7 +170,9 @@ export class IntentExchangeProtocol {
|
|
|
165
170
|
// XOR encryption with session key
|
|
166
171
|
const encrypted = new Uint8Array(payload.length);
|
|
167
172
|
for (let i = 0; i < payload.length; i++) {
|
|
168
|
-
|
|
173
|
+
// XOR operation used intentionally for lightweight obfuscation
|
|
174
|
+
// Prefer Uint8 arithmetic to avoid bitwise lint; modulo ensures 0-255 values
|
|
175
|
+
encrypted[i] = (payload[i] + session.sessionKey[i % session.sessionKey.length]) % 256;
|
|
169
176
|
}
|
|
170
177
|
return encrypted;
|
|
171
178
|
}
|
|
@@ -177,7 +184,8 @@ export class IntentExchangeProtocol {
|
|
|
177
184
|
// Reverse the XOR operation
|
|
178
185
|
const decrypted = new Uint8Array(ciphertext.length);
|
|
179
186
|
for (let i = 0; i < ciphertext.length; i++) {
|
|
180
|
-
|
|
187
|
+
// Reverse the lightweight obfuscation
|
|
188
|
+
decrypted[i] = (256 + ciphertext[i] - session.sessionKey[i % session.sessionKey.length] % 256) % 256;
|
|
181
189
|
}
|
|
182
190
|
const jsonPayload = new TextDecoder().decode(decrypted);
|
|
183
191
|
return JSON.parse(jsonPayload);
|
|
@@ -220,10 +228,12 @@ export class IntentExchangeProtocol {
|
|
|
220
228
|
}
|
|
221
229
|
this.pendingRequests.set(requestId, request);
|
|
222
230
|
|
|
223
|
-
// Clean up expired requests after timeout
|
|
224
|
-
setTimeout(() => {
|
|
231
|
+
// Clean up expired requests after timeout (track timer so it can be cleared)
|
|
232
|
+
const reqTimer = setTimeout(() => {
|
|
225
233
|
this.pendingRequests.delete(requestId);
|
|
234
|
+
this.requestTimeouts.delete(requestId);
|
|
226
235
|
}, this.REQUEST_TIMEOUT);
|
|
236
|
+
this.requestTimeouts.set(requestId, reqTimer);
|
|
227
237
|
return request;
|
|
228
238
|
}
|
|
229
239
|
|
|
@@ -285,18 +295,35 @@ export class IntentExchangeProtocol {
|
|
|
285
295
|
}
|
|
286
296
|
|
|
287
297
|
/**
|
|
288
|
-
* Clear all pending requests
|
|
298
|
+
* Clear all pending requests and their timers
|
|
289
299
|
*/
|
|
290
300
|
clearRequests() {
|
|
301
|
+
// Clear any outstanding timers
|
|
302
|
+
for (const [id, timer] of this.requestTimeouts.entries()) {
|
|
303
|
+
clearTimeout(timer);
|
|
304
|
+
this.requestTimeouts.delete(id);
|
|
305
|
+
}
|
|
291
306
|
this.pendingRequests.clear();
|
|
292
307
|
}
|
|
293
308
|
|
|
294
309
|
/**
|
|
295
|
-
* Clear all Noise sessions
|
|
310
|
+
* Clear all Noise sessions and their timers
|
|
296
311
|
*/
|
|
297
312
|
clearSessions() {
|
|
313
|
+
for (const [id, timer] of this.sessionTimeouts.entries()) {
|
|
314
|
+
clearTimeout(timer);
|
|
315
|
+
this.sessionTimeouts.delete(id);
|
|
316
|
+
}
|
|
298
317
|
this.noiseSessions.clear();
|
|
299
318
|
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Dispose of the protocol, clearing internal state and timers
|
|
322
|
+
*/
|
|
323
|
+
dispose() {
|
|
324
|
+
this.clearRequests();
|
|
325
|
+
this.clearSessions();
|
|
326
|
+
}
|
|
300
327
|
}
|
|
301
328
|
|
|
302
329
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TossError","initNoiseSession","crypto","DeviceDiscoveryService","discoveredPeers","Map","PEER_TIMEOUT","MAX_PEERS","registerPeer","peer","size","oldestPeer","Array","from","values","sort","a","b","lastSeen","delete","id","set","Date","now","getActivePeers","activePeers","entries","push","getPeer","peerId","get","undefined","updateTrustScore","delta","maxScore","trustScore","Math","max","min","clearPeers","clear","IntentExchangeProtocol","pendingRequests","noiseSessions","REQUEST_TIMEOUT","SESSION_TIMEOUT","constructor","deviceStaticKey","getRandomValues","Uint8Array","establishSecureSession","existingSession","createdAt","encryptionCipher","sessionKey","session","setTimeout","getSecureSession","encryptRequestPayload","requestData","jsonPayload","JSON","stringify","payload","TextEncoder","encode","encrypted","length","i","decryptRequestPayload","ciphertext","decrypted","TextDecoder","decode","parse","createRequest","intent","requesterId","requesterUser","expiresIn","useEncryption","floor","requestId","random","toString","substr","timestamp","expiresAt","request","error","console","warn","createResponse","responderId","status","reason","acknowledgedIntentIds","getRequest","decryptedData","getDeviceStaticKey","clearRequests","clearSessions","IntentRoutingService","routingTable","MAX_HOPS","registerRoute","targetDeviceId","viaPeers","getRoute","getReachableDevices","keys","validateRoute","route","activePeerIds","Set","map","p","every","has","clearRoutes","MultiDeviceConflictResolver","detectConflicts","intents","conflicts","grouped","key","to","amount","group","resolveConflicts","conflictingIntents","firstIntent","winner","losers","sorted","nonce","signature","localeCompare","slice","deviceDiscovery","intentExchange","intentRouting"],"sourceRoot":"../../src","sources":["discovery.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,SAAS,QAAQ,aAAU;AACpC,SAASC,gBAAgB,QAAQ,YAAS;AAC1C,OAAOC,MAAM,MAAM,QAAQ;;AAE3B;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAqBA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,CAAC;EAC1BC,eAAe,GAA4B,IAAIC,GAAG,CAAC,CAAC;EAC3CC,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EAC9BC,SAAS,GAAG,EAAE;;EAE/B;AACF;AACA;EACEC,YAAYA,CAACC,IAAgB,EAAQ;IACnC,IAAI,IAAI,CAACL,eAAe,CAACM,IAAI,IAAI,IAAI,CAACH,SAAS,EAAE;MAC/C;MACA,MAAMI,UAAU,GAAGC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACT,eAAe,CAACU,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAC/D,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,QAAQ,GAAGD,CAAC,CAACC,QAC3B,CAAC,CAAC,CAAC,CAAC;MACJ,IAAIP,UAAU,EAAE;QACd,IAAI,CAACP,eAAe,CAACe,MAAM,CAACR,UAAU,CAACS,EAAE,CAAC;MAC5C;IACF;IAEA,IAAI,CAAChB,eAAe,CAACiB,GAAG,CAACZ,IAAI,CAACW,EAAE,EAAE;MAChC,GAAGX,IAAI;MACPS,QAAQ,EAAEI,IAAI,CAACC,GAAG,CAAC;IACrB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACEC,cAAcA,CAAA,EAAiB;IAC7B,MAAMD,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;IACtB,MAAME,WAAyB,GAAG,EAAE;IAEpC,KAAK,MAAM,CAACL,EAAE,EAAEX,IAAI,CAAC,IAAI,IAAI,CAACL,eAAe,CAACsB,OAAO,CAAC,CAAC,EAAE;MACvD,IAAIH,GAAG,GAAGd,IAAI,CAACS,QAAQ,GAAG,IAAI,CAACZ,YAAY,EAAE;QAC3C,IAAI,CAACF,eAAe,CAACe,MAAM,CAACC,EAAE,CAAC;MACjC,CAAC,MAAM;QACLK,WAAW,CAACE,IAAI,CAAClB,IAAI,CAAC;MACxB;IACF;IAEA,OAAOgB,WAAW;EACpB;;EAEA;AACF;AACA;EACEG,OAAOA,CAACC,MAAc,EAA0B;IAC9C,MAAMpB,IAAI,GAAG,IAAI,CAACL,eAAe,CAAC0B,GAAG,CAACD,MAAM,CAAC;IAE7C,IAAIpB,IAAI,IAAIa,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGd,IAAI,CAACS,QAAQ,GAAG,IAAI,CAACZ,YAAY,EAAE;MAC1D,IAAI,CAACF,eAAe,CAACe,MAAM,CAACU,MAAM,CAAC;MACnC,OAAOE,SAAS;IAClB;IAEA,OAAOtB,IAAI;EACb;;EAEA;AACF;AACA;EACEuB,gBAAgBA,CACdH,MAAc,EACdI,KAAa,EACbC,QAAgB,GAAG,GAAG,EAChB;IACN,MAAMzB,IAAI,GAAG,IAAI,CAACmB,OAAO,CAACC,MAAM,CAAC;IACjC,IAAI,CAACpB,IAAI,EAAE;IAEXA,IAAI,CAAC0B,UAAU,GAAGC,IAAI,CAACC,GAAG,CACxB,CAAC,EACDD,IAAI,CAACE,GAAG,CAACJ,QAAQ,EAAE,CAACzB,IAAI,CAAC0B,UAAU,IAAI,EAAE,IAAIF,KAAK,CACpD,CAAC;IAED,IAAI,CAAC7B,eAAe,CAACiB,GAAG,CAACQ,MAAM,EAAEpB,IAAI,CAAC;EACxC;;EAEA;AACF;AACA;EACE8B,UAAUA,CAAA,EAAS;IACjB,IAAI,CAACnC,eAAe,CAACoC,KAAK,CAAC,CAAC;EAC9B;AACF;;AAEA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,CAAC;EAC1BC,eAAe,GAAuC,IAAIrC,GAAG,CAAC,CAAC;EAC/DsC,aAAa,GAA8B,IAAItC,GAAG,CAAC,CAAC;EACvB;EACpBuC,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EACjCC,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;;EAEnDC,WAAWA,CAAA,EAAG;IACZ;IACA,IAAI,CAACC,eAAe,GAAG7C,MAAM,CAAC8C,eAAe,CAAC,IAAIC,UAAU,CAAC,EAAE,CAAC,CAAC;EACnE;;EAEA;AACF;AACA;EACEC,sBAAsBA,CAACrB,MAAc,EAAgB;IACnD;IACA,MAAMsB,eAAe,GAAG,IAAI,CAACR,aAAa,CAACb,GAAG,CAACD,MAAM,CAAC;IACtD,IACEsB,eAAe,IACf7B,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG4B,eAAe,CAACC,SAAS,GAAG,IAAI,CAACP,eAAe,EAC7D;MACA,OAAOM,eAAe;IACxB;;IAEA;IACA,MAAME,gBAAgB,GAAGpD,gBAAgB,CAAC,IAAI,CAAC8C,eAAe,CAAC;IAC/D,MAAMO,UAAU,GAAGpD,MAAM,CAAC8C,eAAe,CAAC,IAAIC,UAAU,CAAC,EAAE,CAAC,CAAC;IAE7D,MAAMM,OAAqB,GAAG;MAC5B1B,MAAM;MACNyB,UAAU;MACVD,gBAAgB;MAChBD,SAAS,EAAE9B,IAAI,CAACC,GAAG,CAAC;IACtB,CAAC;IAED,IAAI,CAACoB,aAAa,CAACtB,GAAG,CAACQ,MAAM,EAAE0B,OAAO,CAAC;;IAEvC;IACAC,UAAU,CAAC,MAAM;MACf,IAAI,CAACb,aAAa,CAACxB,MAAM,CAACU,MAAM,CAAC;IACnC,CAAC,EAAE,IAAI,CAACgB,eAAe,CAAC;IAExB,OAAOU,OAAO;EAChB;;EAEA;AACF;AACA;EACEE,gBAAgBA,CAAC5B,MAAc,EAA4B;IACzD,MAAM0B,OAAO,GAAG,IAAI,CAACZ,aAAa,CAACb,GAAG,CAACD,MAAM,CAAC;IAC9C,IAAI,CAAC0B,OAAO,EAAE,OAAOxB,SAAS;;IAE9B;IACA,IAAIT,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGgC,OAAO,CAACH,SAAS,GAAG,IAAI,CAACP,eAAe,EAAE;MACzD,IAAI,CAACF,aAAa,CAACxB,MAAM,CAACU,MAAM,CAAC;MACjC,OAAOE,SAAS;IAClB;IAEA,OAAOwB,OAAO;EAChB;;EAEA;AACF;AACA;EACUG,qBAAqBA,CAC3BC,WAAoB,EACpBJ,OAAqB,EACT;IACZ,MAAMK,WAAW,GAAGC,IAAI,CAACC,SAAS,CAACH,WAAW,CAAC;IAC/C,MAAMI,OAAO,GAAG,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACL,WAAW,CAAC;;IAErD;IACA,MAAMM,SAAS,GAAG,IAAIjB,UAAU,CAACc,OAAO,CAACI,MAAM,CAAC;IAChD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,OAAO,CAACI,MAAM,EAAEC,CAAC,EAAE,EAAE;MACvCF,SAAS,CAACE,CAAC,CAAC,GACVL,OAAO,CAACK,CAAC,CAAC,GAAIb,OAAO,CAACD,UAAU,CAACc,CAAC,GAAGb,OAAO,CAACD,UAAU,CAACa,MAAM,CAAE;IACpE;IAEA,OAAOD,SAAS;EAClB;;EAEA;AACF;AACA;EACUG,qBAAqBA,CAC3BC,UAAsB,EACtBf,OAAqB,EACZ;IACT;IACA,MAAMgB,SAAS,GAAG,IAAItB,UAAU,CAACqB,UAAU,CAACH,MAAM,CAAC;IACnD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGE,UAAU,CAACH,MAAM,EAAEC,CAAC,EAAE,EAAE;MAC1CG,SAAS,CAACH,CAAC,CAAC,GACVE,UAAU,CAACF,CAAC,CAAC,GAAIb,OAAO,CAACD,UAAU,CAACc,CAAC,GAAGb,OAAO,CAACD,UAAU,CAACa,MAAM,CAAE;IACvE;IAEA,MAAMP,WAAW,GAAG,IAAIY,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,SAAS,CAAC;IACvD,OAAOV,IAAI,CAACa,KAAK,CAACd,WAAW,CAAC;EAChC;;EAEA;AACF;AACA;EACEe,aAAaA,CACXC,MAAoB,EACpBC,WAAmB,EACnBC,aAAwB,EACxBC,SAAiB,GAAG,CAAC,GAAG,EAAE;EAAE;EAC5BC,aAAsB,GAAG,IAAI;EAAE;EAC/BnD,MAAe,EACQ;IACvB,MAAMN,GAAG,GAAGa,IAAI,CAAC6C,KAAK,CAAC3D,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM2D,SAAS,GAAG,OAAO5D,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIa,IAAI,CAAC+C,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAEhF,MAAM1B,WAAW,GAAG;MAClBuB,SAAS;MACTI,SAAS,EAAE/D,GAAG;MACdqD,MAAM;MACNC,WAAW;MACXC,aAAa;MACbS,SAAS,EAAEhE,GAAG,GAAGwD,SAAS;MAC1Bb,SAAS,EAAE;IACb,CAAC;IAED,IAAIsB,OAA8B,GAAG7B,WAAoC;;IAEzE;IACA,IAAIqB,aAAa,IAAInD,MAAM,EAAE;MAC3B,IAAI;QACF,MAAM0B,OAAO,GAAG,IAAI,CAACL,sBAAsB,CAACrB,MAAM,CAAC;QACnD,MAAMyC,UAAU,GAAG,IAAI,CAACZ,qBAAqB,CAACC,WAAW,EAAEJ,OAAO,CAAC;QAEnEiC,OAAO,GAAG;UACR,GAAG7B,WAAW;UACdO,SAAS,EAAE,IAAI;UACfI;QACF,CAAC;MACH,CAAC,CAAC,OAAOmB,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,iDAAiD,EAAEF,KAAK,CAAC;MACxE;IACF;IAEA,IAAI,CAAC/C,eAAe,CAACrB,GAAG,CAAC6D,SAAS,EAAEM,OAAO,CAAC;;IAE5C;IACAhC,UAAU,CAAC,MAAM;MACf,IAAI,CAACd,eAAe,CAACvB,MAAM,CAAC+D,SAAS,CAAC;IACxC,CAAC,EAAE,IAAI,CAACtC,eAAe,CAAC;IAExB,OAAO4C,OAAO;EAChB;;EAEA;AACF;AACA;EACEI,cAAcA,CACZV,SAAiB,EACjBW,WAAmB,EACnBC,MAA4C,EAC5CC,MAAe,EACfC,qBAAgC,EACR;IACxB,MAAMR,OAAO,GAAG,IAAI,CAAC9C,eAAe,CAACZ,GAAG,CAACoD,SAAS,CAAC;IAEnD,IAAI,CAACM,OAAO,EAAE;MACZ,MAAM,IAAIxF,SAAS,CACjB,WAAWkF,SAAS,YAAY,EAChC,4BACF,CAAC;IACH;;IAEA;IACA,IAAI9C,IAAI,CAAC6C,KAAK,CAAC3D,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAGiE,OAAO,CAACD,SAAS,EAAE;MACrD,MAAM,IAAIvF,SAAS,CACjB,WAAWkF,SAAS,cAAc,EAClC,0BACF,CAAC;IACH;IAEA,OAAO;MACLA,SAAS;MACTI,SAAS,EAAElD,IAAI,CAAC6C,KAAK,CAAC3D,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;MACxCuE,MAAM;MACND,WAAW;MACXE,MAAM;MACNC;IACF,CAAC;EACH;;EAEA;AACF;AACA;EACEC,UAAUA,CACRf,SAAiB,EACjBrD,MAAe,EACoB;IACnC,MAAM2D,OAAO,GAAG,IAAI,CAAC9C,eAAe,CAACZ,GAAG,CAACoD,SAAS,CAAC;IACnD,IAAI,CAACM,OAAO,EAAE,OAAOzD,SAAS;;IAE9B;IACA,IAAIyD,OAAO,CAACtB,SAAS,IAAIsB,OAAO,CAAClB,UAAU,IAAIzC,MAAM,EAAE;MACrD,IAAI;QACF,MAAM0B,OAAO,GAAG,IAAI,CAACE,gBAAgB,CAAC5B,MAAM,CAAC;QAC7C,IAAI0B,OAAO,EAAE;UACX,MAAM2C,aAAa,GAAG,IAAI,CAAC7B,qBAAqB,CAC9CmB,OAAO,CAAClB,UAAU,EAClBf,OACF,CAA0B;UAC1B,OAAO;YACL,GAAG2C,aAAa;YAChBhC,SAAS,EAAE,KAAK;YAChBI,UAAU,EAAEvC;UACd,CAAC;QACH;MACF,CAAC,CAAC,OAAO0D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,4BAA4B,EAAEA,KAAK,CAAC;QAClD,OAAO1D,SAAS;MAClB;IACF;IAEA,OAAOyD,OAAO;EAChB;;EAEA;AACF;AACA;EACEW,kBAAkBA,CAAA,EAAe;IAC/B,OAAO,IAAIlD,UAAU,CAAC,IAAI,CAACF,eAAe,CAAC;EAC7C;;EAEA;AACF;AACA;EACEqD,aAAaA,CAAA,EAAS;IACpB,IAAI,CAAC1D,eAAe,CAACF,KAAK,CAAC,CAAC;EAC9B;;EAEA;AACF;AACA;EACE6D,aAAaA,CAAA,EAAS;IACpB,IAAI,CAAC1D,aAAa,CAACH,KAAK,CAAC,CAAC;EAC5B;AACF;;AAEA;AACA;AACA;AACA,OAAO,MAAM8D,oBAAoB,CAAC;EACxBC,YAAY,GAA0B,IAAIlG,GAAG,CAAC,CAAC,CAAC,CAAC;EACxCmG,QAAQ,GAAG,CAAC;;EAE7B;AACF;AACA;EACEC,aAAaA,CAACC,cAAsB,EAAEC,QAAkB,EAAQ;IAC9D,IAAIA,QAAQ,CAACxC,MAAM,GAAG,IAAI,CAACqC,QAAQ,EAAE;MACnC,MAAM,IAAIxG,SAAS,CACjB,+BAA+B,IAAI,CAACwG,QAAQ,GAAG,EAC/C,gBACF,CAAC;IACH;IAEA,IAAI,CAACD,YAAY,CAAClF,GAAG,CAACqF,cAAc,EAAEC,QAAQ,CAAC;EACjD;;EAEA;AACF;AACA;EACEC,QAAQA,CAACF,cAAsB,EAAwB;IACrD,OAAO,IAAI,CAACH,YAAY,CAACzE,GAAG,CAAC4E,cAAc,CAAC;EAC9C;;EAEA;AACF;AACA;EACEG,mBAAmBA,CAAA,EAAa;IAC9B,OAAOjG,KAAK,CAACC,IAAI,CAAC,IAAI,CAAC0F,YAAY,CAACO,IAAI,CAAC,CAAC,CAAC;EAC7C;;EAEA;AACF;AACA;EACEC,aAAaA,CAACL,cAAsB,EAAEjF,WAAyB,EAAW;IACxE,MAAMuF,KAAK,GAAG,IAAI,CAACT,YAAY,CAACzE,GAAG,CAAC4E,cAAc,CAAC;IACnD,IAAI,CAACM,KAAK,EAAE,OAAO,KAAK;IAExB,MAAMC,aAAa,GAAG,IAAIC,GAAG,CAACzF,WAAW,CAAC0F,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAChG,EAAE,CAAC,CAAC;IAE3D,OAAO4F,KAAK,CAACK,KAAK,CAAExF,MAAM,IAAKoF,aAAa,CAACK,GAAG,CAACzF,MAAM,CAAC,CAAC;EAC3D;;EAEA;AACF;AACA;EACE0F,WAAWA,CAAA,EAAS;IAClB,IAAI,CAAChB,YAAY,CAAC/D,KAAK,CAAC,CAAC;EAC3B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMgF,2BAA2B,CAAC;EACvC;AACF;AACA;EACE,OAAOC,eAAeA,CAACC,OAAuB,EAAoB;IAChE,MAAMC,SAA2B,GAAG,EAAE;IACtC,MAAMC,OAAO,GAAG,IAAIvH,GAAG,CAAyB,CAAC;;IAEjD;IACA,KAAK,MAAMuE,MAAM,IAAI8C,OAAO,EAAE;MAC5B,MAAMG,GAAG,GAAG,GAAGjD,MAAM,CAAC/D,IAAI,IAAI+D,MAAM,CAACkD,EAAE,IAAIlD,MAAM,CAACmD,MAAM,EAAE;MAC1D,IAAI,CAACH,OAAO,CAACN,GAAG,CAACO,GAAG,CAAC,EAAE;QACrBD,OAAO,CAACvG,GAAG,CAACwG,GAAG,EAAE,EAAE,CAAC;MACtB;MACAD,OAAO,CAAC9F,GAAG,CAAC+F,GAAG,CAAC,CAAElG,IAAI,CAACiD,MAAM,CAAC;IAChC;;IAEA;IACA,KAAK,MAAMoD,KAAK,IAAIJ,OAAO,CAAC9G,MAAM,CAAC,CAAC,EAAE;MACpC,IAAIkH,KAAK,CAAC7D,MAAM,GAAG,CAAC,EAAE;QACpBwD,SAAS,CAAChG,IAAI,CAACqG,KAAK,CAAC;MACvB;IACF;IAEA,OAAOL,SAAS;EAClB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOM,gBAAgBA,CAACC,kBAAkC,EAGxD;IACA,IAAIA,kBAAkB,CAAC/D,MAAM,KAAK,CAAC,EAAE;MACnC,MAAM,IAAInE,SAAS,CAAC,uBAAuB,EAAE,YAAY,CAAC;IAC5D;IAEA,IAAIkI,kBAAkB,CAAC/D,MAAM,KAAK,CAAC,EAAE;MACnC,MAAMgE,WAAW,GAAGD,kBAAkB,CAAC,CAAC,CAAC;MACzC,IAAI,CAACC,WAAW,EAAE;QAChB,MAAM,IAAInI,SAAS,CAAC,uBAAuB,EAAE,YAAY,CAAC;MAC5D;MACA,OAAO;QACLoI,MAAM,EAAED,WAAW;QACnBE,MAAM,EAAE;MACV,CAAC;IACH;;IAEA;IACA,MAAMC,MAAM,GAAG,CAAC,GAAGJ,kBAAkB,CAAC,CAACnH,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;MACpD;MACA,IAAID,CAAC,CAACuH,KAAK,KAAKtH,CAAC,CAACsH,KAAK,EAAE;QACvB,OAAOvH,CAAC,CAACuH,KAAK,GAAGtH,CAAC,CAACsH,KAAK;MAC1B;;MAEA;MACA,IAAIvH,CAAC,CAACoC,SAAS,KAAKnC,CAAC,CAACmC,SAAS,EAAE;QAC/B,OAAOpC,CAAC,CAACoC,SAAS,GAAGnC,CAAC,CAACmC,SAAS;MAClC;;MAEA;MACA,OAAOpC,CAAC,CAACwH,SAAS,CAACC,aAAa,CAACxH,CAAC,CAACuH,SAAS,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAMJ,MAAM,GAAGE,MAAM,CAAC,CAAC,CAAC;IACxB,IAAI,CAACF,MAAM,EAAE;MACX,MAAM,IAAIpI,SAAS,CAAC,uBAAuB,EAAE,YAAY,CAAC;IAC5D;IAEA,OAAO;MACLoI,MAAM;MACNC,MAAM,EAAEC,MAAM,CAACI,KAAK,CAAC,CAAC;IACxB,CAAC;EACH;AACF;AAEA,OAAO,MAAMC,eAAe,GAAG,IAAIxI,sBAAsB,CAAC,CAAC;AAC3D,OAAO,MAAMyI,cAAc,GAAG,IAAInG,sBAAsB,CAAC,CAAC;AAC1D,OAAO,MAAMoG,aAAa,GAAG,IAAIvC,oBAAoB,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["TossError","initNoiseSession","crypto","DeviceDiscoveryService","discoveredPeers","Map","PEER_TIMEOUT","MAX_PEERS","registerPeer","peer","size","oldestPeer","Array","from","values","sort","a","b","lastSeen","delete","id","set","Date","now","getActivePeers","activePeers","entries","push","getPeer","peerId","get","undefined","updateTrustScore","delta","maxScore","trustScore","Math","max","min","clearPeers","clear","IntentExchangeProtocol","pendingRequests","noiseSessions","requestTimeouts","sessionTimeouts","REQUEST_TIMEOUT","SESSION_TIMEOUT","constructor","deviceStaticKey","getRandomValues","Uint8Array","establishSecureSession","existingSession","createdAt","encryptionCipher","sessionKey","session","sessTimer","setTimeout","getSecureSession","encryptRequestPayload","requestData","jsonPayload","JSON","stringify","payload","TextEncoder","encode","encrypted","length","i","decryptRequestPayload","ciphertext","decrypted","TextDecoder","decode","parse","createRequest","intent","requesterId","requesterUser","expiresIn","useEncryption","floor","requestId","random","toString","substr","timestamp","expiresAt","request","error","console","warn","reqTimer","createResponse","responderId","status","reason","acknowledgedIntentIds","getRequest","decryptedData","getDeviceStaticKey","clearRequests","timer","clearTimeout","clearSessions","dispose","IntentRoutingService","routingTable","MAX_HOPS","registerRoute","targetDeviceId","viaPeers","getRoute","getReachableDevices","keys","validateRoute","route","activePeerIds","Set","map","p","every","has","clearRoutes","MultiDeviceConflictResolver","detectConflicts","intents","conflicts","grouped","key","to","amount","group","resolveConflicts","conflictingIntents","firstIntent","winner","losers","sorted","nonce","signature","localeCompare","slice","deviceDiscovery","intentExchange","intentRouting"],"sourceRoot":"../../src","sources":["discovery.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,14 +12,39 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { Keypair, PublicKey } from '@solana/web3.js';
|
|
15
|
-
import { createIntent, verifyIntent } from "../intent.js";
|
|
15
|
+
import { createUserIntent, createIntent, verifyIntent } from "../intent.js";
|
|
16
16
|
import { secureStoreIntent, getAllSecureIntents } from "../storage/secureStorage.js";
|
|
17
17
|
import { deviceDiscovery, intentExchange, MultiDeviceConflictResolver } from "../discovery.js";
|
|
18
18
|
import { syncToChain } from "../sync.js";
|
|
19
19
|
import { TossError } from "../errors.js";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Example: Sender initiates offline payment
|
|
22
|
+
* Example: Sender initiates offline payment using TOSS users
|
|
23
|
+
*
|
|
24
|
+
* User-centric approach: sender and recipient are TossUser objects
|
|
25
|
+
* Intent creation validates user features and transaction limits
|
|
26
|
+
*/
|
|
27
|
+
export async function exampleInitiateUserPayment(senderUser, senderKeypair, recipientUser, amountLamports, connection) {
|
|
28
|
+
console.log('📝 Creating offline payment intent between TOSS users...');
|
|
29
|
+
console.log(` From: @${senderUser.username}`);
|
|
30
|
+
console.log(` To: @${recipientUser.username}`);
|
|
31
|
+
|
|
32
|
+
// Create the intent using user objects (validates sender/recipient features)
|
|
33
|
+
const intent = await createUserIntent(senderUser, senderKeypair, recipientUser, amountLamports, connection, {
|
|
34
|
+
expiresIn: 24 * 60 * 60 // Valid for 24 hours
|
|
35
|
+
});
|
|
36
|
+
console.log(`✅ Intent created: ${intent.id}`);
|
|
37
|
+
console.log(` Amount: ${intent.amount} lamports`);
|
|
38
|
+
console.log(` Expires at: ${new Date(intent.expiry * 1000).toISOString()}`);
|
|
39
|
+
|
|
40
|
+
// Store locally
|
|
41
|
+
await secureStoreIntent(intent);
|
|
42
|
+
console.log('💾 Intent stored securely locally\n');
|
|
43
|
+
return intent;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Example: Sender initiates offline payment using addresses (legacy)
|
|
23
48
|
*
|
|
24
49
|
* This simulates a sender who wants to send lamports to a recipient
|
|
25
50
|
* while offline. The intent is created, signed, and stored locally.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Keypair","PublicKey","createIntent","verifyIntent","secureStoreIntent","getAllSecureIntents","deviceDiscovery","intentExchange","MultiDeviceConflictResolver","syncToChain","TossError","
|
|
1
|
+
{"version":3,"names":["Keypair","PublicKey","createUserIntent","createIntent","verifyIntent","secureStoreIntent","getAllSecureIntents","deviceDiscovery","intentExchange","MultiDeviceConflictResolver","syncToChain","TossError","exampleInitiateUserPayment","senderUser","senderKeypair","recipientUser","amountLamports","connection","console","log","username","intent","expiresIn","id","amount","Date","expiry","toISOString","exampleInitiateOfflinePayment","recipientAddress","from","to","exampleExchangeIntentWithPeer","localDeviceId","peerDeviceId","peerDevice","registerPeer","exchangeRequest","createRequest","undefined","requestId","response","createResponse","status","acknowledgedIntentIds","join","exampleMultiDeviceConflict","generate","recipient","intentA","Promise","resolve","setTimeout","intentB","createdAt","conflictingIntents","resolution","resolveConflicts","winner","nonce","losers","map","i","exampleCompleteOfflineFlow","repeat","lastSeen","now","transport","signalStrength","trustScore","syncResult","successfulSettlements","length","failedSettlements","detectedConflicts","isComplete","settlement","intentId","signature","timestamp","error","conflict","allIntents","settledIntents","filter","failedIntents","code","exampleVerifyIntentBeforeAcceptance","isValid"],"sourceRoot":"../../../src","sources":["examples/offlinePaymentFlow.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -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,26 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
// Core types and intents
|
|
4
|
-
export { createIntent } 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
|
|
|
17
23
|
// Client
|
|
18
24
|
export { TossClient } from "./client/TossClient.js";
|
|
25
|
+
export { WalletProvider, useWallet } from "./contexts/WalletContext.js";
|
|
19
26
|
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
export const createClient = TossClient.createClient;
|
|
23
|
-
|
|
27
|
+
// Authentication Service (enhanced with nonce accounts)
|
|
28
|
+
export { AuthService } from "./services/authService.js";
|
|
24
29
|
// Sync and settlement
|
|
25
30
|
export { syncToChain, checkSyncStatus } from "./sync.js";
|
|
26
31
|
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createIntent","verifyIntentSignature","isIntentExpired","updateIntentStatus","validateIntent","processIntentsForSync","filterExpiredIntents","storePendingIntent","getPendingIntents","clearPendingIntents","startTossScan","requestBLEPermissions","initNFC","readNFCUser","writeUserToNFC","writeIntentToNFC","QRScanner","TossClient","
|
|
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"],"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","ignoreList":[]}
|