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