@bsv/sdk 1.3.27 → 1.3.29

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.
Files changed (32) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/auth/Peer.js +142 -91
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +82 -21
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/clients/AuthFetch.js +6 -2
  7. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  8. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  9. package/dist/esm/src/auth/Peer.js +138 -88
  10. package/dist/esm/src/auth/Peer.js.map +1 -1
  11. package/dist/esm/src/auth/SessionManager.js +88 -22
  12. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  13. package/dist/esm/src/auth/clients/AuthFetch.js +6 -2
  14. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  15. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  16. package/dist/types/src/auth/Peer.d.ts +21 -23
  17. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  18. package/dist/types/src/auth/SessionManager.d.ts +25 -7
  19. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  20. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  21. package/dist/types/src/auth/types.d.ts +1 -0
  22. package/dist/types/src/auth/types.d.ts.map +1 -1
  23. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  24. package/dist/umd/bundle.js +1 -1
  25. package/docs/auth.md +37 -42
  26. package/package.json +1 -1
  27. package/src/auth/Peer.ts +186 -130
  28. package/src/auth/SessionManager.ts +89 -22
  29. package/src/auth/__tests/Peer.test.ts +66 -0
  30. package/src/auth/__tests/SessionManager.test.ts +3 -2
  31. package/src/auth/clients/AuthFetch.ts +6 -2
  32. package/src/auth/types.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.3.27",
3
+ "version": "1.3.29",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -9,6 +9,8 @@ const AUTH_VERSION = '0.1';
9
9
  * Represents a peer capable of performing mutual authentication.
10
10
  * Manages sessions, handles authentication handshakes, certificate requests and responses,
11
11
  * and sending and receiving general messages over a transport layer.
12
+ *
13
+ * This version supports multiple concurrent sessions per peer identityKey.
12
14
  */
13
15
  class Peer {
14
16
  /**
@@ -36,7 +38,8 @@ class Peer {
36
38
  types: {}
37
39
  };
38
40
  this.transport.onData(this.handleIncomingMessage.bind(this)).catch(console.error);
39
- this.sessionManager = sessionManager != null ? sessionManager : new SessionManager_js_1.SessionManager();
41
+ this.sessionManager =
42
+ sessionManager != null ? sessionManager : new SessionManager_js_1.SessionManager();
40
43
  if (autoPersistLastSession === false) {
41
44
  this.autoPersistLastSession = false;
42
45
  }
@@ -48,15 +51,15 @@ class Peer {
48
51
  * Sends a general message to a peer, and initiates a handshake if necessary.
49
52
  *
50
53
  * @param {number[]} message - The message payload to send.
51
- * @param {string} [identityKey] - The identity public key of the peer. If not provided, a handshake will be initiated.
54
+ * @param {string} [identityKey] - The identity public key of the peer. If not provided, uses lastInteractedWithPeer (if any).
55
+ * @param {number} [maxWaitTime] - optional max wait time in ms
52
56
  * @returns {Promise<void>}
53
57
  * @throws Will throw an error if the message fails to send.
54
58
  */
55
59
  async toPeer(message, identityKey, maxWaitTime) {
56
60
  var _a, _b;
57
61
  if (this.autoPersistLastSession &&
58
- this.lastInteractedWithPeer !== undefined &&
59
- this.lastInteractedWithPeer !== null &&
62
+ typeof this.lastInteractedWithPeer === 'string' &&
60
63
  typeof identityKey !== 'string') {
61
64
  identityKey = this.lastInteractedWithPeer;
62
65
  }
@@ -79,6 +82,8 @@ class Peer {
79
82
  payload: message,
80
83
  signature
81
84
  };
85
+ peerSession.lastUpdate = Date.now();
86
+ this.sessionManager.updateSession(peerSession);
82
87
  try {
83
88
  await this.transport.send(generalMessage);
84
89
  }
@@ -94,15 +99,20 @@ class Peer {
94
99
  * an initial handshake or message has been exchanged.
95
100
  *
96
101
  * @param {RequestedCertificateSet} certificatesToRequest - Specifies the certifiers and types of certificates required from the peer.
97
- * @param {string} [identityKey] - The identity public key of the peer. If not provided, the current session identity is used.
102
+ * @param {string} [identityKey] - The identity public key of the peer. If not provided, the current or last session identity is used.
98
103
  * @param {number} [maxWaitTime=10000] - Maximum time in milliseconds to wait for the peer session to be authenticated.
99
104
  * @returns {Promise<void>} Resolves if the certificate request message is successfully sent.
100
105
  * @throws Will throw an error if the peer session is not authenticated or if sending the request fails.
101
106
  */
102
107
  async requestCertificates(certificatesToRequest, identityKey, maxWaitTime = 10000) {
103
108
  var _a, _b;
109
+ if (this.autoPersistLastSession &&
110
+ typeof this.lastInteractedWithPeer === 'string' &&
111
+ typeof identityKey !== 'string') {
112
+ identityKey = this.lastInteractedWithPeer;
113
+ }
104
114
  const peerSession = await this.getAuthenticatedSession(identityKey, maxWaitTime);
105
- // Prepare the general message
115
+ // Prepare the message
106
116
  const requestNonce = mod_js_1.Utils.toBase64((0, mod_js_1.Random)(32));
107
117
  const { signature } = await this.wallet.createSignature({
108
118
  data: mod_js_1.Utils.toArray(JSON.stringify(certificatesToRequest), 'utf8'),
@@ -121,6 +131,9 @@ class Peer {
121
131
  requestedCertificates: certificatesToRequest,
122
132
  signature
123
133
  };
134
+ // Update last-used timestamp
135
+ peerSession.lastUpdate = Date.now();
136
+ this.sessionManager.updateSession(peerSession);
124
137
  try {
125
138
  await this.transport.send(certRequestMessage);
126
139
  }
@@ -132,24 +145,29 @@ class Peer {
132
145
  * Retrieves an authenticated session for a given peer identity. If no session exists
133
146
  * or the session is not authenticated, initiates a handshake to create or authenticate the session.
134
147
  *
135
- * @param {string} [identityKey] - The identity public key of the peer. If provided, it attempts
136
- * to retrieve an existing session associated with this identity.
137
- * @param {number} [maxWaitTime] - The maximum time in milliseconds to wait for the handshake
138
- * to complete if a new session is required. Defaults to a pre-defined timeout if not specified.
148
+ * - If `identityKey` is provided, we look up any existing session for that identity key.
149
+ * - If none is found or not authenticated, we do a new handshake.
150
+ * - If `identityKey` is not provided, but we have a `lastInteractedWithPeer`, we try that key.
151
+ *
152
+ * @param {string} [identityKey] - The identity public key of the peer.
153
+ * @param {number} [maxWaitTime] - The maximum time in milliseconds to wait for the handshake.
139
154
  * @returns {Promise<PeerSession>} - A promise that resolves with an authenticated `PeerSession`.
140
- * @throws {Error} - Throws an error if the transport is not connected or if the handshake fails.
141
155
  */
142
156
  async getAuthenticatedSession(identityKey, maxWaitTime) {
143
157
  if (this.transport === undefined) {
144
158
  throw new Error('Peer transport is not connected!');
145
159
  }
146
- let peerSession = identityKey !== undefined && identityKey !== ''
147
- ? this.sessionManager.getSession(identityKey)
148
- : undefined;
149
- if (peerSession === undefined || !(peerSession === null || peerSession === void 0 ? void 0 : peerSession.isAuthenticated)) {
160
+ let peerSession;
161
+ if (typeof identityKey === 'string') {
162
+ peerSession = this.sessionManager.getSession(identityKey);
163
+ }
164
+ // If that session doesn't exist or isn't authenticated, initiate handshake
165
+ if ((peerSession == null) || !peerSession.isAuthenticated) {
166
+ // This will create a brand-new session
150
167
  const sessionNonce = await this.initiateHandshake(identityKey, maxWaitTime);
151
- peerSession = this.sessionManager.getSession(identityKey !== undefined && identityKey !== '' ? identityKey : sessionNonce);
152
- if (peerSession === undefined || !peerSession.isAuthenticated) {
168
+ // Now retrieve it by the sessionNonce
169
+ peerSession = this.sessionManager.getSession(sessionNonce);
170
+ if ((peerSession == null) || !peerSession.isAuthenticated) {
153
171
  throw new Error('Unable to establish mutual authentication with peer!');
154
172
  }
155
173
  }
@@ -177,7 +195,7 @@ class Peer {
177
195
  /**
178
196
  * Registers a callback to listen for certificates received from peers.
179
197
  *
180
- * @param {(certs: VerifiableCertificate[]) => void} callback - The function to call when certificates are received.
198
+ * @param {(senderPublicKey: string, certs: VerifiableCertificate[]) => void} callback - The function to call when certificates are received.
181
199
  * @returns {number} The ID of the callback listener.
182
200
  */
183
201
  listenForCertificatesReceived(callback) {
@@ -217,14 +235,18 @@ class Peer {
217
235
  *
218
236
  * @private
219
237
  * @param {string} [identityKey] - The identity public key of the peer.
238
+ * @param {number} [maxWaitTime=10000] - how long to wait for handshake
220
239
  * @returns {Promise<string>} A promise that resolves to the session nonce.
221
240
  */
222
241
  async initiateHandshake(identityKey, maxWaitTime = 10000) {
223
242
  const sessionNonce = await (0, index_js_1.createNonce)(this.wallet); // Initial request nonce
243
+ // Create the preliminary session (not yet authenticated)
244
+ const now = Date.now();
224
245
  this.sessionManager.addSession({
225
246
  isAuthenticated: false,
226
247
  sessionNonce,
227
- peerIdentityKey: identityKey
248
+ peerIdentityKey: identityKey,
249
+ lastUpdate: now
228
250
  });
229
251
  const initialRequest = {
230
252
  version: AUTH_VERSION,
@@ -245,10 +267,10 @@ class Peer {
245
267
  */
246
268
  async waitForInitialResponse(sessionNonce, maxWaitTime = 10000) {
247
269
  return await new Promise((resolve, reject) => {
248
- const callbackID = this.listenForInitialResponse(sessionNonce, sessionNonce => {
270
+ const callbackID = this.listenForInitialResponse(sessionNonce, nonce => {
249
271
  clearTimeout(timeoutHandle);
250
272
  this.stopListeningForInitialResponses(callbackID);
251
- resolve(sessionNonce);
273
+ resolve(nonce);
252
274
  });
253
275
  const timeoutHandle = setTimeout(() => {
254
276
  this.stopListeningForInitialResponses(callbackID);
@@ -288,8 +310,8 @@ class Peer {
288
310
  * @returns {Promise<void>}
289
311
  */
290
312
  async handleIncomingMessage(message) {
291
- if (message.version === undefined || message.version === '' || message.version !== AUTH_VERSION) {
292
- console.error(`Invalid message auth version! Received: ${message.version}, expected: ${AUTH_VERSION}`);
313
+ if (typeof message.version !== 'string' || message.version !== AUTH_VERSION) {
314
+ console.error(`Invalid or unsupported message auth version! Received: ${message.version}, expected: ${AUTH_VERSION}`);
293
315
  return;
294
316
  }
295
317
  switch (message.messageType) {
@@ -316,36 +338,41 @@ class Peer {
316
338
  * Processes an initial request message from a peer.
317
339
  *
318
340
  * @param {AuthMessage} message - The incoming initial request message.
319
- * @returns {Promise<void>}
320
341
  */
321
342
  async processInitialRequest(message) {
322
- var _a, _b, _c;
323
- if (message.identityKey === undefined || message.identityKey === '' || message.initialNonce === undefined || message.initialNonce === '') {
324
- throw new Error('Missing required fields in initialResponse message.');
343
+ if (typeof message.identityKey !== 'string' ||
344
+ typeof message.initialNonce !== 'string' ||
345
+ message.initialNonce === '') {
346
+ throw new Error('Missing required fields in initialRequest message.');
325
347
  }
326
- // Create an initial session nonce
348
+ // Create a new sessionNonce for our side
327
349
  const sessionNonce = await (0, index_js_1.createNonce)(this.wallet);
350
+ const now = Date.now();
351
+ // We'll treat this as fully authenticated from *our* perspective (the responding side).
328
352
  this.sessionManager.addSession({
329
353
  isAuthenticated: true,
330
354
  sessionNonce,
331
355
  peerNonce: message.initialNonce,
332
- peerIdentityKey: message.identityKey
356
+ peerIdentityKey: message.identityKey,
357
+ lastUpdate: now
333
358
  });
334
- // Handle initial certificate requests
359
+ // Possibly handle the peer's requested certs
335
360
  let certificatesToInclude;
336
- if (message.requestedCertificates !== undefined && Array.isArray((_a = message.requestedCertificates) === null || _a === void 0 ? void 0 : _a.certifiers) && ((_c = (_b = message.requestedCertificates) === null || _b === void 0 ? void 0 : _b.certifiers) === null || _c === void 0 ? void 0 : _c.length) > 0) {
361
+ if ((message.requestedCertificates != null) &&
362
+ Array.isArray(message.requestedCertificates.certifiers) &&
363
+ message.requestedCertificates.certifiers.length > 0) {
337
364
  if (this.onCertificateRequestReceivedCallbacks.size > 0) {
338
- // The application wants to handle certificate requests
339
- this.onCertificateRequestReceivedCallbacks.forEach(callback => {
340
- callback(message.identityKey, message.requestedCertificates);
365
+ // Let the application handle it
366
+ this.onCertificateRequestReceivedCallbacks.forEach(cb => {
367
+ cb(message.identityKey, message.requestedCertificates);
341
368
  });
342
369
  }
343
370
  else {
344
- // Attempt to find exact matching certificates to return automatically to save round trips
371
+ // Attempt to find automatically
345
372
  certificatesToInclude = await (0, index_js_1.getVerifiableCertificates)(this.wallet, message.requestedCertificates, message.identityKey);
346
373
  }
347
374
  }
348
- // Create the signature for the message
375
+ // Create signature
349
376
  const { signature } = await this.wallet.createSignature({
350
377
  data: mod_js_1.Utils.toArray(message.initialNonce + sessionNonce, 'base64'),
351
378
  protocolID: [2, 'auth message signature'],
@@ -363,10 +390,11 @@ class Peer {
363
390
  requestedCertificates: this.certificatesToRequest,
364
391
  signature
365
392
  };
366
- // For security, only set the last-interacted-with peer here if this is the first peer we've interacted with.
367
- if (this.lastInteractedWithPeer === undefined || this.lastInteractedWithPeer === null) {
393
+ // If we haven't interacted with a peer yet, store this identity as "lastInteracted"
394
+ if (this.lastInteractedWithPeer === undefined) {
368
395
  this.lastInteractedWithPeer = message.identityKey;
369
396
  }
397
+ // Send the response
370
398
  await this.transport.send(initialResponseMessage);
371
399
  }
372
400
  /**
@@ -374,22 +402,23 @@ class Peer {
374
402
  *
375
403
  * @private
376
404
  * @param {AuthMessage} message - The incoming initial response message.
377
- * @returns {Promise<void>}
378
- * @throws Will throw an error if nonce verification or signature verification fails.
405
+ * @throws Will throw an error if nonce or signature verification fails.
379
406
  */
380
407
  async processInitialResponse(message) {
381
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
408
+ var _a, _b, _c, _d, _e, _f, _g;
382
409
  const validNonce = await (0, index_js_1.verifyNonce)(message.yourNonce, this.wallet);
383
410
  if (!validNonce) {
384
411
  throw new Error(`Initial response nonce verification failed from peer: ${message.identityKey}`);
385
412
  }
413
+ // This is the session we previously created by calling initiateHandshake
386
414
  const peerSession = this.sessionManager.getSession(message.yourNonce);
387
- if (peerSession === null || peerSession === undefined) {
415
+ if (peerSession == null) {
388
416
  throw new Error(`Peer session not found for peer: ${message.identityKey}`);
389
417
  }
390
418
  // Validate message signature
419
+ const dataToVerify = mod_js_1.Utils.toArray(((_a = peerSession.sessionNonce) !== null && _a !== void 0 ? _a : '') + ((_b = message.initialNonce) !== null && _b !== void 0 ? _b : ''), 'base64');
391
420
  const { valid } = await this.wallet.verifySignature({
392
- data: mod_js_1.Utils.toArray(((_a = peerSession.sessionNonce) !== null && _a !== void 0 ? _a : '') + ((_b = message.initialNonce) !== null && _b !== void 0 ? _b : ''), 'base64'),
421
+ data: dataToVerify,
393
422
  signature: message.signature,
394
423
  protocolID: [2, 'auth message signature'],
395
424
  keyID: `${(_c = peerSession.sessionNonce) !== null && _c !== void 0 ? _c : ''} ${(_d = message.initialNonce) !== null && _d !== void 0 ? _d : ''}`,
@@ -398,39 +427,39 @@ class Peer {
398
427
  if (!valid) {
399
428
  throw new Error(`Unable to verify initial response signature for peer: ${message.identityKey}`);
400
429
  }
401
- // After signature and nonce verification is complete, the peer is considered authenticated
402
- // Save the peer's identity key and initial nonce
403
- // This allows future requests to be linked to the same session
430
+ // Now mark the session as authenticated
404
431
  peerSession.peerNonce = message.initialNonce;
405
432
  peerSession.peerIdentityKey = message.identityKey;
406
433
  peerSession.isAuthenticated = true;
407
- // Run update to ensure lookup is available by both peerIdentityKey and sessionNonce
434
+ peerSession.lastUpdate = Date.now();
408
435
  this.sessionManager.updateSession(peerSession);
409
- // Process certificates received
410
- if (((_g = (_f = (_e = this.certificatesToRequest) === null || _e === void 0 ? void 0 : _e.certifiers) === null || _f === void 0 ? void 0 : _f.length) !== null && _g !== void 0 ? _g : 0) > 0 &&
411
- (message.certificates !== null && message.certificates !== undefined && message.certificates.length > 0)) {
436
+ // If the handshake had requested certificates, validate them
437
+ if (((_f = (_e = this.certificatesToRequest) === null || _e === void 0 ? void 0 : _e.certifiers) === null || _f === void 0 ? void 0 : _f.length) > 0 &&
438
+ ((_g = message.certificates) === null || _g === void 0 ? void 0 : _g.length) > 0) {
412
439
  await (0, index_js_1.validateCertificates)(this.wallet, message, this.certificatesToRequest);
413
- const messageCertificates = message.certificates;
414
- if (message.certificates !== undefined) {
415
- this.onCertificatesReceivedCallbacks.forEach(callback => callback(message.identityKey, messageCertificates));
416
- }
440
+ // Notify listeners
441
+ this.onCertificatesReceivedCallbacks.forEach(cb => cb(message.identityKey, message.certificates));
417
442
  }
443
+ // Update lastInteractedWithPeer
418
444
  this.lastInteractedWithPeer = message.identityKey;
445
+ // Let the handshake wait-latch know we got our response
419
446
  this.onInitialResponseReceivedCallbacks.forEach(entry => {
420
- if ((entry === null || entry === void 0 ? void 0 : entry.sessionNonce) === peerSession.sessionNonce) {
447
+ if (entry.sessionNonce === peerSession.sessionNonce) {
421
448
  entry.callback(peerSession.sessionNonce);
422
449
  }
423
450
  });
424
- // Check if the peer requested certificates from us
425
- if (message.requestedCertificates !== undefined && Array.isArray((_h = message.requestedCertificates) === null || _h === void 0 ? void 0 : _h.certifiers) && ((_k = (_j = message.requestedCertificates) === null || _j === void 0 ? void 0 : _j.certifiers) === null || _k === void 0 ? void 0 : _k.length) > 0) {
451
+ // The peer might also request certificates from us
452
+ if ((message.requestedCertificates != null) &&
453
+ Array.isArray(message.requestedCertificates.certifiers) &&
454
+ message.requestedCertificates.certifiers.length > 0) {
426
455
  if (this.onCertificateRequestReceivedCallbacks.size > 0) {
427
- // Application wants to handle certificate requests
428
- this.onCertificateRequestReceivedCallbacks.forEach(callback => {
429
- callback(message.identityKey, message.requestedCertificates);
456
+ // Let the application handle it
457
+ this.onCertificateRequestReceivedCallbacks.forEach(cb => {
458
+ cb(message.identityKey, message.requestedCertificates);
430
459
  });
431
460
  }
432
461
  else {
433
- // Attempt to find exact matching certificates to respond automatically and save round trips
462
+ // Attempt auto
434
463
  const verifiableCertificates = await (0, index_js_1.getVerifiableCertificates)(this.wallet, message.requestedCertificates, message.identityKey);
435
464
  await this.sendCertificateResponse(message.identityKey, verifiableCertificates);
436
465
  }
@@ -438,38 +467,45 @@ class Peer {
438
467
  }
439
468
  /**
440
469
  * Processes an incoming certificate request message from a peer.
441
- * Verifies the nonce and signature to ensure the authenticity of the request,
442
- * then initiates a response with any requested certificates that are available.
470
+ * Verifies nonce/signature and then possibly sends a certificateResponse.
443
471
  *
444
472
  * @param {AuthMessage} message - The certificate request message received from the peer.
445
- * @throws {Error} Throws an error if nonce verification fails, or the message signature is invalid.
473
+ * @throws {Error} if nonce or signature is invalid.
446
474
  */
447
475
  async processCertificateRequest(message) {
448
- var _a, _b, _c, _d, _e, _f;
476
+ var _a, _b;
449
477
  const validNonce = await (0, index_js_1.verifyNonce)(message.yourNonce, this.wallet);
450
478
  if (!validNonce) {
451
479
  throw new Error(`Unable to verify nonce for certificate request message from: ${message.identityKey}`);
452
480
  }
453
481
  const peerSession = this.sessionManager.getSession(message.yourNonce);
482
+ if (peerSession == null) {
483
+ throw new Error(`Session not found for nonce: ${message.yourNonce}`);
484
+ }
454
485
  const { valid } = await this.wallet.verifySignature({
455
486
  data: mod_js_1.Utils.toArray(JSON.stringify(message.requestedCertificates), 'utf8'),
456
487
  signature: message.signature,
457
488
  protocolID: [2, 'auth message signature'],
458
- keyID: `${(_a = message.nonce) !== null && _a !== void 0 ? _a : ''} ${(_b = peerSession === null || peerSession === void 0 ? void 0 : peerSession.sessionNonce) !== null && _b !== void 0 ? _b : ''}`,
459
- counterparty: peerSession === null || peerSession === void 0 ? void 0 : peerSession.peerIdentityKey
489
+ keyID: `${(_a = message.nonce) !== null && _a !== void 0 ? _a : ''} ${(_b = peerSession.sessionNonce) !== null && _b !== void 0 ? _b : ''}`,
490
+ counterparty: peerSession.peerIdentityKey
460
491
  });
461
492
  if (!valid) {
462
- throw new Error(`Invalid signature in certificate request message from ${(_c = peerSession === null || peerSession === void 0 ? void 0 : peerSession.peerIdentityKey) !== null && _c !== void 0 ? _c : 'unknown'}`);
493
+ throw new Error(`Invalid signature in certificate request message from ${peerSession.peerIdentityKey}`);
463
494
  }
464
- if (message.requestedCertificates !== undefined && Array.isArray((_d = message.requestedCertificates) === null || _d === void 0 ? void 0 : _d.certifiers) && ((_f = (_e = message.requestedCertificates) === null || _e === void 0 ? void 0 : _e.certifiers) === null || _f === void 0 ? void 0 : _f.length) > 0) {
495
+ // Update usage
496
+ peerSession.lastUpdate = Date.now();
497
+ this.sessionManager.updateSession(peerSession);
498
+ if ((message.requestedCertificates != null) &&
499
+ Array.isArray(message.requestedCertificates.certifiers) &&
500
+ message.requestedCertificates.certifiers.length > 0) {
465
501
  if (this.onCertificateRequestReceivedCallbacks.size > 0) {
466
- // Application wants to handle certificate requests
467
- this.onCertificateRequestReceivedCallbacks.forEach(callback => {
468
- callback(message.identityKey, message.requestedCertificates);
502
+ // Let the application handle it
503
+ this.onCertificateRequestReceivedCallbacks.forEach(cb => {
504
+ cb(message.identityKey, message.requestedCertificates);
469
505
  });
470
506
  }
471
507
  else {
472
- // Attempt to find exact matching certificates to respond automatically and save round trips
508
+ // Attempt auto
473
509
  const verifiableCertificates = await (0, index_js_1.getVerifiableCertificates)(this.wallet, message.requestedCertificates, message.identityKey);
474
510
  await this.sendCertificateResponse(message.identityKey, verifiableCertificates);
475
511
  }
@@ -479,10 +515,8 @@ class Peer {
479
515
  * Sends a certificate response message containing the specified certificates to a peer.
480
516
  *
481
517
  * @param {string} verifierIdentityKey - The identity key of the peer requesting the certificates.
482
- * @param {VerifiableCertificate[]} certificates - The list of certificates to be included in the response.
483
- * @returns {Promise<void>} - A promise that resolves once the certificate response has been sent successfully.
484
- *
485
- * @throws {Error} Throws an error if the peer session could not be authenticated or if message signing fails.
518
+ * @param {VerifiableCertificate[]} certificates - The list of certificates to include in the response.
519
+ * @throws Will throw an error if the transport fails to send the message.
486
520
  */
487
521
  async sendCertificateResponse(verifierIdentityKey, certificates) {
488
522
  var _a, _b;
@@ -505,6 +539,9 @@ class Peer {
505
539
  certificates,
506
540
  signature
507
541
  };
542
+ // Update usage
543
+ peerSession.lastUpdate = Date.now();
544
+ this.sessionManager.updateSession(peerSession);
508
545
  try {
509
546
  await this.transport.send(certificateResponse);
510
547
  }
@@ -518,61 +555,75 @@ class Peer {
518
555
  *
519
556
  * @private
520
557
  * @param {AuthMessage} message - The incoming certificate response message.
521
- * @returns {Promise<void>}
522
558
  * @throws Will throw an error if nonce verification or signature verification fails.
523
559
  */
524
560
  async processCertificateResponse(message) {
525
561
  var _a, _b;
526
562
  const validNonce = await (0, index_js_1.verifyNonce)(message.yourNonce, this.wallet);
527
563
  if (!validNonce) {
528
- throw new Error(`Unable to verify nonce for certificate response from: ${message.identityKey}!`);
564
+ throw new Error(`Unable to verify nonce for certificate response from: ${message.identityKey}`);
529
565
  }
530
566
  const peerSession = this.sessionManager.getSession(message.yourNonce);
567
+ if (peerSession == null) {
568
+ throw new Error(`Session not found for nonce: ${message.yourNonce}`);
569
+ }
531
570
  // Validate message signature
532
571
  const { valid } = await this.wallet.verifySignature({
533
572
  data: mod_js_1.Utils.toArray(JSON.stringify(message.certificates), 'utf8'),
534
573
  signature: message.signature,
535
574
  protocolID: [2, 'auth message signature'],
536
- keyID: `${(_a = message.nonce) !== null && _a !== void 0 ? _a : ''} ${(_b = peerSession === null || peerSession === void 0 ? void 0 : peerSession.sessionNonce) !== null && _b !== void 0 ? _b : ''}`,
575
+ keyID: `${(_a = message.nonce) !== null && _a !== void 0 ? _a : ''} ${(_b = peerSession.sessionNonce) !== null && _b !== void 0 ? _b : ''}`,
537
576
  counterparty: message.identityKey
538
577
  });
539
578
  if (!valid) {
540
579
  throw new Error(`Unable to verify certificate response signature for peer: ${message.identityKey}`);
541
580
  }
542
- // Process and verify any certificates received
581
+ // We also handle optional validation if there's a requestedCertificates field
543
582
  await (0, index_js_1.validateCertificates)(this.wallet, message, message.requestedCertificates);
544
- this.onCertificatesReceivedCallbacks.forEach(callback => {
545
- callback(message.identityKey, message.certificates);
583
+ // Notify any listeners
584
+ this.onCertificatesReceivedCallbacks.forEach(cb => {
585
+ var _a;
586
+ cb(message.identityKey, (_a = message.certificates) !== null && _a !== void 0 ? _a : []);
546
587
  });
588
+ peerSession.lastUpdate = Date.now();
589
+ this.sessionManager.updateSession(peerSession);
547
590
  }
548
591
  /**
549
592
  * Processes a general message from a peer.
550
593
  *
551
594
  * @private
552
595
  * @param {AuthMessage} message - The incoming general message.
553
- * @returns {Promise<void>}
554
- * @throws Will throw an error if nonce verification or signature verification fails.
596
+ * @throws Will throw an error if nonce or signature verification fails.
555
597
  */
556
598
  async processGeneralMessage(message) {
557
- var _a, _b, _c;
599
+ var _a, _b;
558
600
  const validNonce = await (0, index_js_1.verifyNonce)(message.yourNonce, this.wallet);
559
601
  if (!validNonce) {
560
602
  throw new Error(`Unable to verify nonce for general message from: ${message.identityKey}`);
561
603
  }
562
604
  const peerSession = this.sessionManager.getSession(message.yourNonce);
605
+ if (peerSession == null) {
606
+ throw new Error(`Session not found for nonce: ${message.yourNonce}`);
607
+ }
563
608
  const { valid } = await this.wallet.verifySignature({
564
609
  data: message.payload,
565
610
  signature: message.signature,
566
611
  protocolID: [2, 'auth message signature'],
567
- keyID: `${(_a = message.nonce) !== null && _a !== void 0 ? _a : ''} ${(_b = peerSession === null || peerSession === void 0 ? void 0 : peerSession.sessionNonce) !== null && _b !== void 0 ? _b : ''}`,
568
- counterparty: peerSession === null || peerSession === void 0 ? void 0 : peerSession.peerIdentityKey
612
+ keyID: `${(_a = message.nonce) !== null && _a !== void 0 ? _a : ''} ${(_b = peerSession.sessionNonce) !== null && _b !== void 0 ? _b : ''}`,
613
+ counterparty: peerSession.peerIdentityKey
569
614
  });
570
615
  if (!valid) {
571
- throw new Error(`Invalid signature in generalMessage from ${(_c = peerSession === null || peerSession === void 0 ? void 0 : peerSession.peerIdentityKey) !== null && _c !== void 0 ? _c : 'unknown'}`);
616
+ throw new Error(`Invalid signature in generalMessage from ${peerSession.peerIdentityKey}`);
572
617
  }
618
+ // Mark last usage
619
+ peerSession.lastUpdate = Date.now();
620
+ this.sessionManager.updateSession(peerSession);
621
+ // Update lastInteractedWithPeer
573
622
  this.lastInteractedWithPeer = message.identityKey;
574
- this.onGeneralMessageReceivedCallbacks.forEach(callback => {
575
- callback(message.identityKey, message.payload);
623
+ // Dispatch callbacks
624
+ this.onGeneralMessageReceivedCallbacks.forEach(cb => {
625
+ var _a;
626
+ cb(message.identityKey, (_a = message.payload) !== null && _a !== void 0 ? _a : []);
576
627
  });
577
628
  }
578
629
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Peer.js","sourceRoot":"","sources":["../../../../src/auth/Peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Peer.js","sourceRoot":"","sources":["../../../../src/auth/Peer.ts"],"names":[],"mappings":"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"}