@freesignal/protocol 0.7.8 → 0.7.9

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/node.d.ts CHANGED
@@ -86,7 +86,7 @@ export declare class FreeSignalNode {
86
86
  packBootstrap(): Promise<Datagram>;
87
87
  sendBootstrap(receiverId: string | UserId): Promise<void>;
88
88
  protected decrypt(datagram: EncryptedDatagram | Datagram | Uint8Array): Promise<MessageEventData>;
89
- protected openHandshake(datagram: Datagram | EncryptedDatagram | Uint8Array): Promise<KeySession>;
89
+ protected openHandshake(datagram: Datagram | EncryptedDatagram | Uint8Array): Promise<'syn' | 'ack'>;
90
90
  protected open(datagram: Datagram | EncryptedDatagram | Uint8Array): Promise<void>;
91
91
  }
92
92
  declare class SessionMap implements LocalStorage<string, KeySession> {
package/dist/node.js CHANGED
@@ -234,7 +234,7 @@ class FreeSignalNode {
234
234
  throw new Error("Session not found for sessionTag: " + encrypted.sessionTag);
235
235
  if (!(0, utils_1.compareBytes)(payload, crypto_1.default.ECDH.scalarMult(this.privateIdentityKey.exchangeKey, session.identityKey.exchangeKey)))
236
236
  throw new Error("Error validating handshake data");
237
- return session;
237
+ return 'ack';
238
238
  }
239
239
  //console.debug("Opening Handshake Syn");
240
240
  const data = (0, utils_1.decodeData)(encrypted.payload);
@@ -244,8 +244,7 @@ class FreeSignalNode {
244
244
  yield this.sessions.set(session.sessionTag, session);
245
245
  yield this.users.set(session.userId.toString(), session.sessionTag);
246
246
  yield this.bundles.set(session.userId.toString(), (0, utils_1.decodeData)(associatedData));
247
- yield this.sendHandshake(session);
248
- return session;
247
+ return 'syn';
249
248
  });
250
249
  }
251
250
  open(datagram) {
@@ -253,9 +252,19 @@ class FreeSignalNode {
253
252
  if (datagram instanceof Uint8Array)
254
253
  datagram = types_1.Datagram.from(datagram);
255
254
  switch (datagram.protocol) {
256
- case types_1.Protocols.HANDSHAKE:
257
- this.emitter.emit('handshake', { session: yield this.openHandshake(datagram) });
255
+ case types_1.Protocols.HANDSHAKE: {
256
+ const encrypted = types_1.EncryptedDatagram.from(datagram);
257
+ if (!encrypted.payload)
258
+ throw new Error("Missing payload");
259
+ if ((yield this.openHandshake(datagram)) === 'ack')
260
+ return;
261
+ const session = yield this.sessions.get(encrypted.sessionTag);
262
+ if (!session)
263
+ throw new Error("Session not found for sessionTag: " + encrypted.sessionTag);
264
+ yield this.sendHandshake(session);
265
+ this.emitter.emit('handshake', { session });
258
266
  return;
267
+ }
259
268
  case types_1.Protocols.MESSAGE:
260
269
  //console.debug("Opening Message");
261
270
  this.emitter.emit('message', yield this.decrypt(datagram));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freesignal/protocol",
3
- "version": "0.7.8",
3
+ "version": "0.7.9",
4
4
  "description": "Signal Protocol implementation in javascript",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "author": "Christian Braghette",