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