@prototypevip/baileys 0.1.1 → 0.1.3

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 (39) hide show
  1. package/lib/Defaults/index.js +3 -3
  2. package/lib/Signal/Group/group_cipher.js +1 -1
  3. package/lib/Signal/Group/keyhelper.js +1 -1
  4. package/lib/Signal/Group/sender-chain-key.js +1 -1
  5. package/lib/Signal/Group/sender-key-message.js +1 -1
  6. package/lib/Signal/Group/sender-message-key.js +1 -1
  7. package/lib/Signal/libsignal-wasm/LICENSE +621 -0
  8. package/lib/Signal/libsignal-wasm/NOTICE.md +11 -0
  9. package/lib/Signal/libsignal-wasm/README.md +64 -0
  10. package/lib/Signal/libsignal-wasm/index.d.ts +55 -0
  11. package/lib/Signal/libsignal-wasm/index.js +14 -0
  12. package/lib/Signal/libsignal-wasm/protos/WhisperTextProtocol.proto +28 -0
  13. package/lib/Signal/libsignal-wasm/src/WhisperTextProtocol.js +931 -0
  14. package/lib/Signal/libsignal-wasm/src/base_key_type.js +7 -0
  15. package/lib/Signal/libsignal-wasm/src/chain_type.js +6 -0
  16. package/lib/Signal/libsignal-wasm/src/crypto.d.ts +19 -0
  17. package/lib/Signal/libsignal-wasm/src/crypto.js +77 -0
  18. package/lib/Signal/libsignal-wasm/src/curve.d.ts +22 -0
  19. package/lib/Signal/libsignal-wasm/src/curve.js +69 -0
  20. package/lib/Signal/libsignal-wasm/src/errors.js +33 -0
  21. package/lib/Signal/libsignal-wasm/src/keyhelper.js +45 -0
  22. package/lib/Signal/libsignal-wasm/src/numeric_fingerprint.js +72 -0
  23. package/lib/Signal/libsignal-wasm/src/protobufs.js +5 -0
  24. package/lib/Signal/libsignal-wasm/src/protocol_address.js +40 -0
  25. package/lib/Signal/libsignal-wasm/src/queue_job.js +68 -0
  26. package/lib/Signal/libsignal-wasm/src/session_builder.js +162 -0
  27. package/lib/Signal/libsignal-wasm/src/session_cipher.js +336 -0
  28. package/lib/Signal/libsignal-wasm/src/session_record.js +316 -0
  29. package/lib/Signal/libsignal.js +2 -2
  30. package/lib/Socket/index.js +33 -1
  31. package/lib/Socket/messages-send.js +61 -7
  32. package/lib/Store/prototype-store.js +34 -22
  33. package/lib/Utils/crypto.js +1 -1
  34. package/lib/Utils/generics.js +4 -27
  35. package/lib/Utils/index.js +2 -0
  36. package/lib/Utils/integrity-guard.js +281 -0
  37. package/lib/Utils/interactive-message-handler.js +28 -8
  38. package/lib/Utils/socket-guard.js +154 -0
  39. package/package.json +1 -2
@@ -0,0 +1,931 @@
1
+ /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
2
+ import $protobuf from "protobufjs/minimal.js";
3
+
4
+ // Common aliases
5
+ const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
6
+
7
+ // Exported root namespace
8
+ const $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});
9
+
10
+ export const textsecure = $root.textsecure = (() => {
11
+
12
+ /**
13
+ * Namespace textsecure.
14
+ * @exports textsecure
15
+ * @namespace
16
+ */
17
+ const textsecure = {};
18
+
19
+ textsecure.WhisperMessage = (function() {
20
+
21
+ /**
22
+ * Properties of a WhisperMessage.
23
+ * @memberof textsecure
24
+ * @interface IWhisperMessage
25
+ * @property {Uint8Array|null} [ephemeralKey] WhisperMessage ephemeralKey
26
+ * @property {number|null} [counter] WhisperMessage counter
27
+ * @property {number|null} [previousCounter] WhisperMessage previousCounter
28
+ * @property {Uint8Array|null} [ciphertext] WhisperMessage ciphertext
29
+ */
30
+
31
+ /**
32
+ * Constructs a new WhisperMessage.
33
+ * @memberof textsecure
34
+ * @classdesc Represents a WhisperMessage.
35
+ * @implements IWhisperMessage
36
+ * @constructor
37
+ * @param {textsecure.IWhisperMessage=} [properties] Properties to set
38
+ */
39
+ function WhisperMessage(properties) {
40
+ if (properties)
41
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
42
+ if (properties[keys[i]] != null)
43
+ this[keys[i]] = properties[keys[i]];
44
+ }
45
+
46
+ /**
47
+ * WhisperMessage ephemeralKey.
48
+ * @member {Uint8Array} ephemeralKey
49
+ * @memberof textsecure.WhisperMessage
50
+ * @instance
51
+ */
52
+ WhisperMessage.prototype.ephemeralKey = $util.newBuffer([]);
53
+
54
+ /**
55
+ * WhisperMessage counter.
56
+ * @member {number} counter
57
+ * @memberof textsecure.WhisperMessage
58
+ * @instance
59
+ */
60
+ WhisperMessage.prototype.counter = 0;
61
+
62
+ /**
63
+ * WhisperMessage previousCounter.
64
+ * @member {number} previousCounter
65
+ * @memberof textsecure.WhisperMessage
66
+ * @instance
67
+ */
68
+ WhisperMessage.prototype.previousCounter = 0;
69
+
70
+ /**
71
+ * WhisperMessage ciphertext.
72
+ * @member {Uint8Array} ciphertext
73
+ * @memberof textsecure.WhisperMessage
74
+ * @instance
75
+ */
76
+ WhisperMessage.prototype.ciphertext = $util.newBuffer([]);
77
+
78
+ /**
79
+ * Creates a new WhisperMessage instance using the specified properties.
80
+ * @function create
81
+ * @memberof textsecure.WhisperMessage
82
+ * @static
83
+ * @param {textsecure.IWhisperMessage=} [properties] Properties to set
84
+ * @returns {textsecure.WhisperMessage} WhisperMessage instance
85
+ */
86
+ WhisperMessage.create = function create(properties) {
87
+ return new WhisperMessage(properties);
88
+ };
89
+
90
+ /**
91
+ * Encodes the specified WhisperMessage message. Does not implicitly {@link textsecure.WhisperMessage.verify|verify} messages.
92
+ * @function encode
93
+ * @memberof textsecure.WhisperMessage
94
+ * @static
95
+ * @param {textsecure.IWhisperMessage} message WhisperMessage message or plain object to encode
96
+ * @param {$protobuf.Writer} [writer] Writer to encode to
97
+ * @returns {$protobuf.Writer} Writer
98
+ */
99
+ WhisperMessage.encode = function encode(message, writer) {
100
+ if (!writer)
101
+ writer = $Writer.create();
102
+ if (message.ephemeralKey != null && message.hasOwnProperty("ephemeralKey"))
103
+ writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.ephemeralKey);
104
+ if (message.counter != null && message.hasOwnProperty("counter"))
105
+ writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.counter);
106
+ if (message.previousCounter != null && message.hasOwnProperty("previousCounter"))
107
+ writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.previousCounter);
108
+ if (message.ciphertext != null && message.hasOwnProperty("ciphertext"))
109
+ writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.ciphertext);
110
+ return writer;
111
+ };
112
+
113
+ /**
114
+ * Encodes the specified WhisperMessage message, length delimited. Does not implicitly {@link textsecure.WhisperMessage.verify|verify} messages.
115
+ * @function encodeDelimited
116
+ * @memberof textsecure.WhisperMessage
117
+ * @static
118
+ * @param {textsecure.IWhisperMessage} message WhisperMessage message or plain object to encode
119
+ * @param {$protobuf.Writer} [writer] Writer to encode to
120
+ * @returns {$protobuf.Writer} Writer
121
+ */
122
+ WhisperMessage.encodeDelimited = function encodeDelimited(message, writer) {
123
+ return this.encode(message, writer).ldelim();
124
+ };
125
+
126
+ /**
127
+ * Decodes a WhisperMessage message from the specified reader or buffer.
128
+ * @function decode
129
+ * @memberof textsecure.WhisperMessage
130
+ * @static
131
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
132
+ * @param {number} [length] Message length if known beforehand
133
+ * @returns {textsecure.WhisperMessage} WhisperMessage
134
+ * @throws {Error} If the payload is not a reader or valid buffer
135
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
136
+ */
137
+ WhisperMessage.decode = function decode(reader, length) {
138
+ if (!(reader instanceof $Reader))
139
+ reader = $Reader.create(reader);
140
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root.textsecure.WhisperMessage();
141
+ while (reader.pos < end) {
142
+ let tag = reader.uint32();
143
+ switch (tag >>> 3) {
144
+ case 1:
145
+ message.ephemeralKey = reader.bytes();
146
+ break;
147
+ case 2:
148
+ message.counter = reader.uint32();
149
+ break;
150
+ case 3:
151
+ message.previousCounter = reader.uint32();
152
+ break;
153
+ case 4:
154
+ message.ciphertext = reader.bytes();
155
+ break;
156
+ default:
157
+ reader.skipType(tag & 7);
158
+ break;
159
+ }
160
+ }
161
+ return message;
162
+ };
163
+
164
+ /**
165
+ * Decodes a WhisperMessage message from the specified reader or buffer, length delimited.
166
+ * @function decodeDelimited
167
+ * @memberof textsecure.WhisperMessage
168
+ * @static
169
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
170
+ * @returns {textsecure.WhisperMessage} WhisperMessage
171
+ * @throws {Error} If the payload is not a reader or valid buffer
172
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
173
+ */
174
+ WhisperMessage.decodeDelimited = function decodeDelimited(reader) {
175
+ if (!(reader instanceof $Reader))
176
+ reader = new $Reader(reader);
177
+ return this.decode(reader, reader.uint32());
178
+ };
179
+
180
+ /**
181
+ * Verifies a WhisperMessage message.
182
+ * @function verify
183
+ * @memberof textsecure.WhisperMessage
184
+ * @static
185
+ * @param {Object.<string,*>} message Plain object to verify
186
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
187
+ */
188
+ WhisperMessage.verify = function verify(message) {
189
+ if (typeof message !== "object" || message === null)
190
+ return "object expected";
191
+ if (message.ephemeralKey != null && message.hasOwnProperty("ephemeralKey"))
192
+ if (!(message.ephemeralKey && typeof message.ephemeralKey.length === "number" || $util.isString(message.ephemeralKey)))
193
+ return "ephemeralKey: buffer expected";
194
+ if (message.counter != null && message.hasOwnProperty("counter"))
195
+ if (!$util.isInteger(message.counter))
196
+ return "counter: integer expected";
197
+ if (message.previousCounter != null && message.hasOwnProperty("previousCounter"))
198
+ if (!$util.isInteger(message.previousCounter))
199
+ return "previousCounter: integer expected";
200
+ if (message.ciphertext != null && message.hasOwnProperty("ciphertext"))
201
+ if (!(message.ciphertext && typeof message.ciphertext.length === "number" || $util.isString(message.ciphertext)))
202
+ return "ciphertext: buffer expected";
203
+ return null;
204
+ };
205
+
206
+ /**
207
+ * Creates a WhisperMessage message from a plain object. Also converts values to their respective internal types.
208
+ * @function fromObject
209
+ * @memberof textsecure.WhisperMessage
210
+ * @static
211
+ * @param {Object.<string,*>} object Plain object
212
+ * @returns {textsecure.WhisperMessage} WhisperMessage
213
+ */
214
+ WhisperMessage.fromObject = function fromObject(object) {
215
+ if (object instanceof $root.textsecure.WhisperMessage)
216
+ return object;
217
+ let message = new $root.textsecure.WhisperMessage();
218
+ if (object.ephemeralKey != null)
219
+ if (typeof object.ephemeralKey === "string")
220
+ $util.base64.decode(object.ephemeralKey, message.ephemeralKey = $util.newBuffer($util.base64.length(object.ephemeralKey)), 0);
221
+ else if (object.ephemeralKey.length)
222
+ message.ephemeralKey = object.ephemeralKey;
223
+ if (object.counter != null)
224
+ message.counter = object.counter >>> 0;
225
+ if (object.previousCounter != null)
226
+ message.previousCounter = object.previousCounter >>> 0;
227
+ if (object.ciphertext != null)
228
+ if (typeof object.ciphertext === "string")
229
+ $util.base64.decode(object.ciphertext, message.ciphertext = $util.newBuffer($util.base64.length(object.ciphertext)), 0);
230
+ else if (object.ciphertext.length)
231
+ message.ciphertext = object.ciphertext;
232
+ return message;
233
+ };
234
+
235
+ /**
236
+ * Creates a plain object from a WhisperMessage message. Also converts values to other types if specified.
237
+ * @function toObject
238
+ * @memberof textsecure.WhisperMessage
239
+ * @static
240
+ * @param {textsecure.WhisperMessage} message WhisperMessage
241
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
242
+ * @returns {Object.<string,*>} Plain object
243
+ */
244
+ WhisperMessage.toObject = function toObject(message, options) {
245
+ if (!options)
246
+ options = {};
247
+ let object = {};
248
+ if (options.defaults) {
249
+ if (options.bytes === String)
250
+ object.ephemeralKey = "";
251
+ else {
252
+ object.ephemeralKey = [];
253
+ if (options.bytes !== Array)
254
+ object.ephemeralKey = $util.newBuffer(object.ephemeralKey);
255
+ }
256
+ object.counter = 0;
257
+ object.previousCounter = 0;
258
+ if (options.bytes === String)
259
+ object.ciphertext = "";
260
+ else {
261
+ object.ciphertext = [];
262
+ if (options.bytes !== Array)
263
+ object.ciphertext = $util.newBuffer(object.ciphertext);
264
+ }
265
+ }
266
+ if (message.ephemeralKey != null && message.hasOwnProperty("ephemeralKey"))
267
+ object.ephemeralKey = options.bytes === String ? $util.base64.encode(message.ephemeralKey, 0, message.ephemeralKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.ephemeralKey) : message.ephemeralKey;
268
+ if (message.counter != null && message.hasOwnProperty("counter"))
269
+ object.counter = message.counter;
270
+ if (message.previousCounter != null && message.hasOwnProperty("previousCounter"))
271
+ object.previousCounter = message.previousCounter;
272
+ if (message.ciphertext != null && message.hasOwnProperty("ciphertext"))
273
+ object.ciphertext = options.bytes === String ? $util.base64.encode(message.ciphertext, 0, message.ciphertext.length) : options.bytes === Array ? Array.prototype.slice.call(message.ciphertext) : message.ciphertext;
274
+ return object;
275
+ };
276
+
277
+ /**
278
+ * Converts this WhisperMessage to JSON.
279
+ * @function toJSON
280
+ * @memberof textsecure.WhisperMessage
281
+ * @instance
282
+ * @returns {Object.<string,*>} JSON object
283
+ */
284
+ WhisperMessage.prototype.toJSON = function toJSON() {
285
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
286
+ };
287
+
288
+ return WhisperMessage;
289
+ })();
290
+
291
+ textsecure.PreKeyWhisperMessage = (function() {
292
+
293
+ /**
294
+ * Properties of a PreKeyWhisperMessage.
295
+ * @memberof textsecure
296
+ * @interface IPreKeyWhisperMessage
297
+ * @property {number|null} [registrationId] PreKeyWhisperMessage registrationId
298
+ * @property {number|null} [preKeyId] PreKeyWhisperMessage preKeyId
299
+ * @property {number|null} [signedPreKeyId] PreKeyWhisperMessage signedPreKeyId
300
+ * @property {Uint8Array|null} [baseKey] PreKeyWhisperMessage baseKey
301
+ * @property {Uint8Array|null} [identityKey] PreKeyWhisperMessage identityKey
302
+ * @property {Uint8Array|null} [message] PreKeyWhisperMessage message
303
+ */
304
+
305
+ /**
306
+ * Constructs a new PreKeyWhisperMessage.
307
+ * @memberof textsecure
308
+ * @classdesc Represents a PreKeyWhisperMessage.
309
+ * @implements IPreKeyWhisperMessage
310
+ * @constructor
311
+ * @param {textsecure.IPreKeyWhisperMessage=} [properties] Properties to set
312
+ */
313
+ function PreKeyWhisperMessage(properties) {
314
+ if (properties)
315
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
316
+ if (properties[keys[i]] != null)
317
+ this[keys[i]] = properties[keys[i]];
318
+ }
319
+
320
+ /**
321
+ * PreKeyWhisperMessage registrationId.
322
+ * @member {number} registrationId
323
+ * @memberof textsecure.PreKeyWhisperMessage
324
+ * @instance
325
+ */
326
+ PreKeyWhisperMessage.prototype.registrationId = 0;
327
+
328
+ /**
329
+ * PreKeyWhisperMessage preKeyId.
330
+ * @member {number} preKeyId
331
+ * @memberof textsecure.PreKeyWhisperMessage
332
+ * @instance
333
+ */
334
+ PreKeyWhisperMessage.prototype.preKeyId = 0;
335
+
336
+ /**
337
+ * PreKeyWhisperMessage signedPreKeyId.
338
+ * @member {number} signedPreKeyId
339
+ * @memberof textsecure.PreKeyWhisperMessage
340
+ * @instance
341
+ */
342
+ PreKeyWhisperMessage.prototype.signedPreKeyId = 0;
343
+
344
+ /**
345
+ * PreKeyWhisperMessage baseKey.
346
+ * @member {Uint8Array} baseKey
347
+ * @memberof textsecure.PreKeyWhisperMessage
348
+ * @instance
349
+ */
350
+ PreKeyWhisperMessage.prototype.baseKey = $util.newBuffer([]);
351
+
352
+ /**
353
+ * PreKeyWhisperMessage identityKey.
354
+ * @member {Uint8Array} identityKey
355
+ * @memberof textsecure.PreKeyWhisperMessage
356
+ * @instance
357
+ */
358
+ PreKeyWhisperMessage.prototype.identityKey = $util.newBuffer([]);
359
+
360
+ /**
361
+ * PreKeyWhisperMessage message.
362
+ * @member {Uint8Array} message
363
+ * @memberof textsecure.PreKeyWhisperMessage
364
+ * @instance
365
+ */
366
+ PreKeyWhisperMessage.prototype.message = $util.newBuffer([]);
367
+
368
+ /**
369
+ * Creates a new PreKeyWhisperMessage instance using the specified properties.
370
+ * @function create
371
+ * @memberof textsecure.PreKeyWhisperMessage
372
+ * @static
373
+ * @param {textsecure.IPreKeyWhisperMessage=} [properties] Properties to set
374
+ * @returns {textsecure.PreKeyWhisperMessage} PreKeyWhisperMessage instance
375
+ */
376
+ PreKeyWhisperMessage.create = function create(properties) {
377
+ return new PreKeyWhisperMessage(properties);
378
+ };
379
+
380
+ /**
381
+ * Encodes the specified PreKeyWhisperMessage message. Does not implicitly {@link textsecure.PreKeyWhisperMessage.verify|verify} messages.
382
+ * @function encode
383
+ * @memberof textsecure.PreKeyWhisperMessage
384
+ * @static
385
+ * @param {textsecure.IPreKeyWhisperMessage} message PreKeyWhisperMessage message or plain object to encode
386
+ * @param {$protobuf.Writer} [writer] Writer to encode to
387
+ * @returns {$protobuf.Writer} Writer
388
+ */
389
+ PreKeyWhisperMessage.encode = function encode(message, writer) {
390
+ if (!writer)
391
+ writer = $Writer.create();
392
+ if (message.preKeyId != null && message.hasOwnProperty("preKeyId"))
393
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.preKeyId);
394
+ if (message.baseKey != null && message.hasOwnProperty("baseKey"))
395
+ writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.baseKey);
396
+ if (message.identityKey != null && message.hasOwnProperty("identityKey"))
397
+ writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.identityKey);
398
+ if (message.message != null && message.hasOwnProperty("message"))
399
+ writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.message);
400
+ if (message.registrationId != null && message.hasOwnProperty("registrationId"))
401
+ writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.registrationId);
402
+ if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId"))
403
+ writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.signedPreKeyId);
404
+ return writer;
405
+ };
406
+
407
+ /**
408
+ * Encodes the specified PreKeyWhisperMessage message, length delimited. Does not implicitly {@link textsecure.PreKeyWhisperMessage.verify|verify} messages.
409
+ * @function encodeDelimited
410
+ * @memberof textsecure.PreKeyWhisperMessage
411
+ * @static
412
+ * @param {textsecure.IPreKeyWhisperMessage} message PreKeyWhisperMessage message or plain object to encode
413
+ * @param {$protobuf.Writer} [writer] Writer to encode to
414
+ * @returns {$protobuf.Writer} Writer
415
+ */
416
+ PreKeyWhisperMessage.encodeDelimited = function encodeDelimited(message, writer) {
417
+ return this.encode(message, writer).ldelim();
418
+ };
419
+
420
+ /**
421
+ * Decodes a PreKeyWhisperMessage message from the specified reader or buffer.
422
+ * @function decode
423
+ * @memberof textsecure.PreKeyWhisperMessage
424
+ * @static
425
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
426
+ * @param {number} [length] Message length if known beforehand
427
+ * @returns {textsecure.PreKeyWhisperMessage} PreKeyWhisperMessage
428
+ * @throws {Error} If the payload is not a reader or valid buffer
429
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
430
+ */
431
+ PreKeyWhisperMessage.decode = function decode(reader, length) {
432
+ if (!(reader instanceof $Reader))
433
+ reader = $Reader.create(reader);
434
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root.textsecure.PreKeyWhisperMessage();
435
+ while (reader.pos < end) {
436
+ let tag = reader.uint32();
437
+ switch (tag >>> 3) {
438
+ case 5:
439
+ message.registrationId = reader.uint32();
440
+ break;
441
+ case 1:
442
+ message.preKeyId = reader.uint32();
443
+ break;
444
+ case 6:
445
+ message.signedPreKeyId = reader.uint32();
446
+ break;
447
+ case 2:
448
+ message.baseKey = reader.bytes();
449
+ break;
450
+ case 3:
451
+ message.identityKey = reader.bytes();
452
+ break;
453
+ case 4:
454
+ message.message = reader.bytes();
455
+ break;
456
+ default:
457
+ reader.skipType(tag & 7);
458
+ break;
459
+ }
460
+ }
461
+ return message;
462
+ };
463
+
464
+ /**
465
+ * Decodes a PreKeyWhisperMessage message from the specified reader or buffer, length delimited.
466
+ * @function decodeDelimited
467
+ * @memberof textsecure.PreKeyWhisperMessage
468
+ * @static
469
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
470
+ * @returns {textsecure.PreKeyWhisperMessage} PreKeyWhisperMessage
471
+ * @throws {Error} If the payload is not a reader or valid buffer
472
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
473
+ */
474
+ PreKeyWhisperMessage.decodeDelimited = function decodeDelimited(reader) {
475
+ if (!(reader instanceof $Reader))
476
+ reader = new $Reader(reader);
477
+ return this.decode(reader, reader.uint32());
478
+ };
479
+
480
+ /**
481
+ * Verifies a PreKeyWhisperMessage message.
482
+ * @function verify
483
+ * @memberof textsecure.PreKeyWhisperMessage
484
+ * @static
485
+ * @param {Object.<string,*>} message Plain object to verify
486
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
487
+ */
488
+ PreKeyWhisperMessage.verify = function verify(message) {
489
+ if (typeof message !== "object" || message === null)
490
+ return "object expected";
491
+ if (message.registrationId != null && message.hasOwnProperty("registrationId"))
492
+ if (!$util.isInteger(message.registrationId))
493
+ return "registrationId: integer expected";
494
+ if (message.preKeyId != null && message.hasOwnProperty("preKeyId"))
495
+ if (!$util.isInteger(message.preKeyId))
496
+ return "preKeyId: integer expected";
497
+ if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId"))
498
+ if (!$util.isInteger(message.signedPreKeyId))
499
+ return "signedPreKeyId: integer expected";
500
+ if (message.baseKey != null && message.hasOwnProperty("baseKey"))
501
+ if (!(message.baseKey && typeof message.baseKey.length === "number" || $util.isString(message.baseKey)))
502
+ return "baseKey: buffer expected";
503
+ if (message.identityKey != null && message.hasOwnProperty("identityKey"))
504
+ if (!(message.identityKey && typeof message.identityKey.length === "number" || $util.isString(message.identityKey)))
505
+ return "identityKey: buffer expected";
506
+ if (message.message != null && message.hasOwnProperty("message"))
507
+ if (!(message.message && typeof message.message.length === "number" || $util.isString(message.message)))
508
+ return "message: buffer expected";
509
+ return null;
510
+ };
511
+
512
+ /**
513
+ * Creates a PreKeyWhisperMessage message from a plain object. Also converts values to their respective internal types.
514
+ * @function fromObject
515
+ * @memberof textsecure.PreKeyWhisperMessage
516
+ * @static
517
+ * @param {Object.<string,*>} object Plain object
518
+ * @returns {textsecure.PreKeyWhisperMessage} PreKeyWhisperMessage
519
+ */
520
+ PreKeyWhisperMessage.fromObject = function fromObject(object) {
521
+ if (object instanceof $root.textsecure.PreKeyWhisperMessage)
522
+ return object;
523
+ let message = new $root.textsecure.PreKeyWhisperMessage();
524
+ if (object.registrationId != null)
525
+ message.registrationId = object.registrationId >>> 0;
526
+ if (object.preKeyId != null)
527
+ message.preKeyId = object.preKeyId >>> 0;
528
+ if (object.signedPreKeyId != null)
529
+ message.signedPreKeyId = object.signedPreKeyId >>> 0;
530
+ if (object.baseKey != null)
531
+ if (typeof object.baseKey === "string")
532
+ $util.base64.decode(object.baseKey, message.baseKey = $util.newBuffer($util.base64.length(object.baseKey)), 0);
533
+ else if (object.baseKey.length)
534
+ message.baseKey = object.baseKey;
535
+ if (object.identityKey != null)
536
+ if (typeof object.identityKey === "string")
537
+ $util.base64.decode(object.identityKey, message.identityKey = $util.newBuffer($util.base64.length(object.identityKey)), 0);
538
+ else if (object.identityKey.length)
539
+ message.identityKey = object.identityKey;
540
+ if (object.message != null)
541
+ if (typeof object.message === "string")
542
+ $util.base64.decode(object.message, message.message = $util.newBuffer($util.base64.length(object.message)), 0);
543
+ else if (object.message.length)
544
+ message.message = object.message;
545
+ return message;
546
+ };
547
+
548
+ /**
549
+ * Creates a plain object from a PreKeyWhisperMessage message. Also converts values to other types if specified.
550
+ * @function toObject
551
+ * @memberof textsecure.PreKeyWhisperMessage
552
+ * @static
553
+ * @param {textsecure.PreKeyWhisperMessage} message PreKeyWhisperMessage
554
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
555
+ * @returns {Object.<string,*>} Plain object
556
+ */
557
+ PreKeyWhisperMessage.toObject = function toObject(message, options) {
558
+ if (!options)
559
+ options = {};
560
+ let object = {};
561
+ if (options.defaults) {
562
+ object.preKeyId = 0;
563
+ if (options.bytes === String)
564
+ object.baseKey = "";
565
+ else {
566
+ object.baseKey = [];
567
+ if (options.bytes !== Array)
568
+ object.baseKey = $util.newBuffer(object.baseKey);
569
+ }
570
+ if (options.bytes === String)
571
+ object.identityKey = "";
572
+ else {
573
+ object.identityKey = [];
574
+ if (options.bytes !== Array)
575
+ object.identityKey = $util.newBuffer(object.identityKey);
576
+ }
577
+ if (options.bytes === String)
578
+ object.message = "";
579
+ else {
580
+ object.message = [];
581
+ if (options.bytes !== Array)
582
+ object.message = $util.newBuffer(object.message);
583
+ }
584
+ object.registrationId = 0;
585
+ object.signedPreKeyId = 0;
586
+ }
587
+ if (message.preKeyId != null && message.hasOwnProperty("preKeyId"))
588
+ object.preKeyId = message.preKeyId;
589
+ if (message.baseKey != null && message.hasOwnProperty("baseKey"))
590
+ object.baseKey = options.bytes === String ? $util.base64.encode(message.baseKey, 0, message.baseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKey) : message.baseKey;
591
+ if (message.identityKey != null && message.hasOwnProperty("identityKey"))
592
+ object.identityKey = options.bytes === String ? $util.base64.encode(message.identityKey, 0, message.identityKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.identityKey) : message.identityKey;
593
+ if (message.message != null && message.hasOwnProperty("message"))
594
+ object.message = options.bytes === String ? $util.base64.encode(message.message, 0, message.message.length) : options.bytes === Array ? Array.prototype.slice.call(message.message) : message.message;
595
+ if (message.registrationId != null && message.hasOwnProperty("registrationId"))
596
+ object.registrationId = message.registrationId;
597
+ if (message.signedPreKeyId != null && message.hasOwnProperty("signedPreKeyId"))
598
+ object.signedPreKeyId = message.signedPreKeyId;
599
+ return object;
600
+ };
601
+
602
+ /**
603
+ * Converts this PreKeyWhisperMessage to JSON.
604
+ * @function toJSON
605
+ * @memberof textsecure.PreKeyWhisperMessage
606
+ * @instance
607
+ * @returns {Object.<string,*>} JSON object
608
+ */
609
+ PreKeyWhisperMessage.prototype.toJSON = function toJSON() {
610
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
611
+ };
612
+
613
+ return PreKeyWhisperMessage;
614
+ })();
615
+
616
+ textsecure.KeyExchangeMessage = (function() {
617
+
618
+ /**
619
+ * Properties of a KeyExchangeMessage.
620
+ * @memberof textsecure
621
+ * @interface IKeyExchangeMessage
622
+ * @property {number|null} [id] KeyExchangeMessage id
623
+ * @property {Uint8Array|null} [baseKey] KeyExchangeMessage baseKey
624
+ * @property {Uint8Array|null} [ephemeralKey] KeyExchangeMessage ephemeralKey
625
+ * @property {Uint8Array|null} [identityKey] KeyExchangeMessage identityKey
626
+ * @property {Uint8Array|null} [baseKeySignature] KeyExchangeMessage baseKeySignature
627
+ */
628
+
629
+ /**
630
+ * Constructs a new KeyExchangeMessage.
631
+ * @memberof textsecure
632
+ * @classdesc Represents a KeyExchangeMessage.
633
+ * @implements IKeyExchangeMessage
634
+ * @constructor
635
+ * @param {textsecure.IKeyExchangeMessage=} [properties] Properties to set
636
+ */
637
+ function KeyExchangeMessage(properties) {
638
+ if (properties)
639
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
640
+ if (properties[keys[i]] != null)
641
+ this[keys[i]] = properties[keys[i]];
642
+ }
643
+
644
+ /**
645
+ * KeyExchangeMessage id.
646
+ * @member {number} id
647
+ * @memberof textsecure.KeyExchangeMessage
648
+ * @instance
649
+ */
650
+ KeyExchangeMessage.prototype.id = 0;
651
+
652
+ /**
653
+ * KeyExchangeMessage baseKey.
654
+ * @member {Uint8Array} baseKey
655
+ * @memberof textsecure.KeyExchangeMessage
656
+ * @instance
657
+ */
658
+ KeyExchangeMessage.prototype.baseKey = $util.newBuffer([]);
659
+
660
+ /**
661
+ * KeyExchangeMessage ephemeralKey.
662
+ * @member {Uint8Array} ephemeralKey
663
+ * @memberof textsecure.KeyExchangeMessage
664
+ * @instance
665
+ */
666
+ KeyExchangeMessage.prototype.ephemeralKey = $util.newBuffer([]);
667
+
668
+ /**
669
+ * KeyExchangeMessage identityKey.
670
+ * @member {Uint8Array} identityKey
671
+ * @memberof textsecure.KeyExchangeMessage
672
+ * @instance
673
+ */
674
+ KeyExchangeMessage.prototype.identityKey = $util.newBuffer([]);
675
+
676
+ /**
677
+ * KeyExchangeMessage baseKeySignature.
678
+ * @member {Uint8Array} baseKeySignature
679
+ * @memberof textsecure.KeyExchangeMessage
680
+ * @instance
681
+ */
682
+ KeyExchangeMessage.prototype.baseKeySignature = $util.newBuffer([]);
683
+
684
+ /**
685
+ * Creates a new KeyExchangeMessage instance using the specified properties.
686
+ * @function create
687
+ * @memberof textsecure.KeyExchangeMessage
688
+ * @static
689
+ * @param {textsecure.IKeyExchangeMessage=} [properties] Properties to set
690
+ * @returns {textsecure.KeyExchangeMessage} KeyExchangeMessage instance
691
+ */
692
+ KeyExchangeMessage.create = function create(properties) {
693
+ return new KeyExchangeMessage(properties);
694
+ };
695
+
696
+ /**
697
+ * Encodes the specified KeyExchangeMessage message. Does not implicitly {@link textsecure.KeyExchangeMessage.verify|verify} messages.
698
+ * @function encode
699
+ * @memberof textsecure.KeyExchangeMessage
700
+ * @static
701
+ * @param {textsecure.IKeyExchangeMessage} message KeyExchangeMessage message or plain object to encode
702
+ * @param {$protobuf.Writer} [writer] Writer to encode to
703
+ * @returns {$protobuf.Writer} Writer
704
+ */
705
+ KeyExchangeMessage.encode = function encode(message, writer) {
706
+ if (!writer)
707
+ writer = $Writer.create();
708
+ if (message.id != null && message.hasOwnProperty("id"))
709
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id);
710
+ if (message.baseKey != null && message.hasOwnProperty("baseKey"))
711
+ writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.baseKey);
712
+ if (message.ephemeralKey != null && message.hasOwnProperty("ephemeralKey"))
713
+ writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.ephemeralKey);
714
+ if (message.identityKey != null && message.hasOwnProperty("identityKey"))
715
+ writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.identityKey);
716
+ if (message.baseKeySignature != null && message.hasOwnProperty("baseKeySignature"))
717
+ writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.baseKeySignature);
718
+ return writer;
719
+ };
720
+
721
+ /**
722
+ * Encodes the specified KeyExchangeMessage message, length delimited. Does not implicitly {@link textsecure.KeyExchangeMessage.verify|verify} messages.
723
+ * @function encodeDelimited
724
+ * @memberof textsecure.KeyExchangeMessage
725
+ * @static
726
+ * @param {textsecure.IKeyExchangeMessage} message KeyExchangeMessage message or plain object to encode
727
+ * @param {$protobuf.Writer} [writer] Writer to encode to
728
+ * @returns {$protobuf.Writer} Writer
729
+ */
730
+ KeyExchangeMessage.encodeDelimited = function encodeDelimited(message, writer) {
731
+ return this.encode(message, writer).ldelim();
732
+ };
733
+
734
+ /**
735
+ * Decodes a KeyExchangeMessage message from the specified reader or buffer.
736
+ * @function decode
737
+ * @memberof textsecure.KeyExchangeMessage
738
+ * @static
739
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
740
+ * @param {number} [length] Message length if known beforehand
741
+ * @returns {textsecure.KeyExchangeMessage} KeyExchangeMessage
742
+ * @throws {Error} If the payload is not a reader or valid buffer
743
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
744
+ */
745
+ KeyExchangeMessage.decode = function decode(reader, length) {
746
+ if (!(reader instanceof $Reader))
747
+ reader = $Reader.create(reader);
748
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root.textsecure.KeyExchangeMessage();
749
+ while (reader.pos < end) {
750
+ let tag = reader.uint32();
751
+ switch (tag >>> 3) {
752
+ case 1:
753
+ message.id = reader.uint32();
754
+ break;
755
+ case 2:
756
+ message.baseKey = reader.bytes();
757
+ break;
758
+ case 3:
759
+ message.ephemeralKey = reader.bytes();
760
+ break;
761
+ case 4:
762
+ message.identityKey = reader.bytes();
763
+ break;
764
+ case 5:
765
+ message.baseKeySignature = reader.bytes();
766
+ break;
767
+ default:
768
+ reader.skipType(tag & 7);
769
+ break;
770
+ }
771
+ }
772
+ return message;
773
+ };
774
+
775
+ /**
776
+ * Decodes a KeyExchangeMessage message from the specified reader or buffer, length delimited.
777
+ * @function decodeDelimited
778
+ * @memberof textsecure.KeyExchangeMessage
779
+ * @static
780
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
781
+ * @returns {textsecure.KeyExchangeMessage} KeyExchangeMessage
782
+ * @throws {Error} If the payload is not a reader or valid buffer
783
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
784
+ */
785
+ KeyExchangeMessage.decodeDelimited = function decodeDelimited(reader) {
786
+ if (!(reader instanceof $Reader))
787
+ reader = new $Reader(reader);
788
+ return this.decode(reader, reader.uint32());
789
+ };
790
+
791
+ /**
792
+ * Verifies a KeyExchangeMessage message.
793
+ * @function verify
794
+ * @memberof textsecure.KeyExchangeMessage
795
+ * @static
796
+ * @param {Object.<string,*>} message Plain object to verify
797
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
798
+ */
799
+ KeyExchangeMessage.verify = function verify(message) {
800
+ if (typeof message !== "object" || message === null)
801
+ return "object expected";
802
+ if (message.id != null && message.hasOwnProperty("id"))
803
+ if (!$util.isInteger(message.id))
804
+ return "id: integer expected";
805
+ if (message.baseKey != null && message.hasOwnProperty("baseKey"))
806
+ if (!(message.baseKey && typeof message.baseKey.length === "number" || $util.isString(message.baseKey)))
807
+ return "baseKey: buffer expected";
808
+ if (message.ephemeralKey != null && message.hasOwnProperty("ephemeralKey"))
809
+ if (!(message.ephemeralKey && typeof message.ephemeralKey.length === "number" || $util.isString(message.ephemeralKey)))
810
+ return "ephemeralKey: buffer expected";
811
+ if (message.identityKey != null && message.hasOwnProperty("identityKey"))
812
+ if (!(message.identityKey && typeof message.identityKey.length === "number" || $util.isString(message.identityKey)))
813
+ return "identityKey: buffer expected";
814
+ if (message.baseKeySignature != null && message.hasOwnProperty("baseKeySignature"))
815
+ if (!(message.baseKeySignature && typeof message.baseKeySignature.length === "number" || $util.isString(message.baseKeySignature)))
816
+ return "baseKeySignature: buffer expected";
817
+ return null;
818
+ };
819
+
820
+ /**
821
+ * Creates a KeyExchangeMessage message from a plain object. Also converts values to their respective internal types.
822
+ * @function fromObject
823
+ * @memberof textsecure.KeyExchangeMessage
824
+ * @static
825
+ * @param {Object.<string,*>} object Plain object
826
+ * @returns {textsecure.KeyExchangeMessage} KeyExchangeMessage
827
+ */
828
+ KeyExchangeMessage.fromObject = function fromObject(object) {
829
+ if (object instanceof $root.textsecure.KeyExchangeMessage)
830
+ return object;
831
+ let message = new $root.textsecure.KeyExchangeMessage();
832
+ if (object.id != null)
833
+ message.id = object.id >>> 0;
834
+ if (object.baseKey != null)
835
+ if (typeof object.baseKey === "string")
836
+ $util.base64.decode(object.baseKey, message.baseKey = $util.newBuffer($util.base64.length(object.baseKey)), 0);
837
+ else if (object.baseKey.length)
838
+ message.baseKey = object.baseKey;
839
+ if (object.ephemeralKey != null)
840
+ if (typeof object.ephemeralKey === "string")
841
+ $util.base64.decode(object.ephemeralKey, message.ephemeralKey = $util.newBuffer($util.base64.length(object.ephemeralKey)), 0);
842
+ else if (object.ephemeralKey.length)
843
+ message.ephemeralKey = object.ephemeralKey;
844
+ if (object.identityKey != null)
845
+ if (typeof object.identityKey === "string")
846
+ $util.base64.decode(object.identityKey, message.identityKey = $util.newBuffer($util.base64.length(object.identityKey)), 0);
847
+ else if (object.identityKey.length)
848
+ message.identityKey = object.identityKey;
849
+ if (object.baseKeySignature != null)
850
+ if (typeof object.baseKeySignature === "string")
851
+ $util.base64.decode(object.baseKeySignature, message.baseKeySignature = $util.newBuffer($util.base64.length(object.baseKeySignature)), 0);
852
+ else if (object.baseKeySignature.length)
853
+ message.baseKeySignature = object.baseKeySignature;
854
+ return message;
855
+ };
856
+
857
+ /**
858
+ * Creates a plain object from a KeyExchangeMessage message. Also converts values to other types if specified.
859
+ * @function toObject
860
+ * @memberof textsecure.KeyExchangeMessage
861
+ * @static
862
+ * @param {textsecure.KeyExchangeMessage} message KeyExchangeMessage
863
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
864
+ * @returns {Object.<string,*>} Plain object
865
+ */
866
+ KeyExchangeMessage.toObject = function toObject(message, options) {
867
+ if (!options)
868
+ options = {};
869
+ let object = {};
870
+ if (options.defaults) {
871
+ object.id = 0;
872
+ if (options.bytes === String)
873
+ object.baseKey = "";
874
+ else {
875
+ object.baseKey = [];
876
+ if (options.bytes !== Array)
877
+ object.baseKey = $util.newBuffer(object.baseKey);
878
+ }
879
+ if (options.bytes === String)
880
+ object.ephemeralKey = "";
881
+ else {
882
+ object.ephemeralKey = [];
883
+ if (options.bytes !== Array)
884
+ object.ephemeralKey = $util.newBuffer(object.ephemeralKey);
885
+ }
886
+ if (options.bytes === String)
887
+ object.identityKey = "";
888
+ else {
889
+ object.identityKey = [];
890
+ if (options.bytes !== Array)
891
+ object.identityKey = $util.newBuffer(object.identityKey);
892
+ }
893
+ if (options.bytes === String)
894
+ object.baseKeySignature = "";
895
+ else {
896
+ object.baseKeySignature = [];
897
+ if (options.bytes !== Array)
898
+ object.baseKeySignature = $util.newBuffer(object.baseKeySignature);
899
+ }
900
+ }
901
+ if (message.id != null && message.hasOwnProperty("id"))
902
+ object.id = message.id;
903
+ if (message.baseKey != null && message.hasOwnProperty("baseKey"))
904
+ object.baseKey = options.bytes === String ? $util.base64.encode(message.baseKey, 0, message.baseKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKey) : message.baseKey;
905
+ if (message.ephemeralKey != null && message.hasOwnProperty("ephemeralKey"))
906
+ object.ephemeralKey = options.bytes === String ? $util.base64.encode(message.ephemeralKey, 0, message.ephemeralKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.ephemeralKey) : message.ephemeralKey;
907
+ if (message.identityKey != null && message.hasOwnProperty("identityKey"))
908
+ object.identityKey = options.bytes === String ? $util.base64.encode(message.identityKey, 0, message.identityKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.identityKey) : message.identityKey;
909
+ if (message.baseKeySignature != null && message.hasOwnProperty("baseKeySignature"))
910
+ object.baseKeySignature = options.bytes === String ? $util.base64.encode(message.baseKeySignature, 0, message.baseKeySignature.length) : options.bytes === Array ? Array.prototype.slice.call(message.baseKeySignature) : message.baseKeySignature;
911
+ return object;
912
+ };
913
+
914
+ /**
915
+ * Converts this KeyExchangeMessage to JSON.
916
+ * @function toJSON
917
+ * @memberof textsecure.KeyExchangeMessage
918
+ * @instance
919
+ * @returns {Object.<string,*>} JSON object
920
+ */
921
+ KeyExchangeMessage.prototype.toJSON = function toJSON() {
922
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
923
+ };
924
+
925
+ return KeyExchangeMessage;
926
+ })();
927
+
928
+ return textsecure;
929
+ })();
930
+
931
+ export { $root as default };