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