UNPKG

@whiskeysockets/baileys

Version:
1,119 lines (1,040 loc) 78.5 kB
/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ "use strict"; var $protobuf = require("protobufjs/minimal"); // Common aliases var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); $root.groupproto = (function() { /** * Namespace groupproto. * @exports groupproto * @namespace */ var groupproto = {}; groupproto.SenderKeyMessage = (function() { /** * Properties of a SenderKeyMessage. * @memberof groupproto * @interface ISenderKeyMessage * @property {number|null} [id] SenderKeyMessage id * @property {number|null} [iteration] SenderKeyMessage iteration * @property {Uint8Array|null} [ciphertext] SenderKeyMessage ciphertext */ /** * Constructs a new SenderKeyMessage. * @memberof groupproto * @classdesc Represents a SenderKeyMessage. * @implements ISenderKeyMessage * @constructor * @param {groupproto.ISenderKeyMessage=} [properties] Properties to set */ function SenderKeyMessage(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * SenderKeyMessage id. * @member {number} id * @memberof groupproto.SenderKeyMessage * @instance */ SenderKeyMessage.prototype.id = 0; /** * SenderKeyMessage iteration. * @member {number} iteration * @memberof groupproto.SenderKeyMessage * @instance */ SenderKeyMessage.prototype.iteration = 0; /** * SenderKeyMessage ciphertext. * @member {Uint8Array} ciphertext * @memberof groupproto.SenderKeyMessage * @instance */ SenderKeyMessage.prototype.ciphertext = $util.newBuffer([]); /** * Creates a new SenderKeyMessage instance using the specified properties. * @function create * @memberof groupproto.SenderKeyMessage * @static * @param {groupproto.ISenderKeyMessage=} [properties] Properties to set * @returns {groupproto.SenderKeyMessage} SenderKeyMessage instance */ SenderKeyMessage.create = function create(properties) { return new SenderKeyMessage(properties); }; /** * Encodes the specified SenderKeyMessage message. Does not implicitly {@link groupproto.SenderKeyMessage.verify|verify} messages. * @function encode * @memberof groupproto.SenderKeyMessage * @static * @param {groupproto.ISenderKeyMessage} message SenderKeyMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderKeyMessage.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration); if (message.ciphertext != null && Object.hasOwnProperty.call(message, "ciphertext")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.ciphertext); return writer; }; /** * Encodes the specified SenderKeyMessage message, length delimited. Does not implicitly {@link groupproto.SenderKeyMessage.verify|verify} messages. * @function encodeDelimited * @memberof groupproto.SenderKeyMessage * @static * @param {groupproto.ISenderKeyMessage} message SenderKeyMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderKeyMessage.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a SenderKeyMessage message from the specified reader or buffer. * @function decode * @memberof groupproto.SenderKeyMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {groupproto.SenderKeyMessage} SenderKeyMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderKeyMessage.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderKeyMessage(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.id = reader.uint32(); break; case 2: message.iteration = reader.uint32(); break; case 3: message.ciphertext = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a SenderKeyMessage message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof groupproto.SenderKeyMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {groupproto.SenderKeyMessage} SenderKeyMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderKeyMessage.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a SenderKeyMessage message. * @function verify * @memberof groupproto.SenderKeyMessage * @static * @param {Object.<string,*>} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ SenderKeyMessage.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.id != null && message.hasOwnProperty("id")) if (!$util.isInteger(message.id)) return "id: integer expected"; if (message.iteration != null && message.hasOwnProperty("iteration")) if (!$util.isInteger(message.iteration)) return "iteration: integer expected"; if (message.ciphertext != null && message.hasOwnProperty("ciphertext")) if (!(message.ciphertext && typeof message.ciphertext.length === "number" || $util.isString(message.ciphertext))) return "ciphertext: buffer expected"; return null; }; /** * Creates a SenderKeyMessage message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof groupproto.SenderKeyMessage * @static * @param {Object.<string,*>} object Plain object * @returns {groupproto.SenderKeyMessage} SenderKeyMessage */ SenderKeyMessage.fromObject = function fromObject(object) { if (object instanceof $root.groupproto.SenderKeyMessage) return object; var message = new $root.groupproto.SenderKeyMessage(); if (object.id != null) message.id = object.id >>> 0; if (object.iteration != null) message.iteration = object.iteration >>> 0; if (object.ciphertext != null) if (typeof object.ciphertext === "string") $util.base64.decode(object.ciphertext, message.ciphertext = $util.newBuffer($util.base64.length(object.ciphertext)), 0); else if (object.ciphertext.length) message.ciphertext = object.ciphertext; return message; }; /** * Creates a plain object from a SenderKeyMessage message. Also converts values to other types if specified. * @function toObject * @memberof groupproto.SenderKeyMessage * @static * @param {groupproto.SenderKeyMessage} message SenderKeyMessage * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.<string,*>} Plain object */ SenderKeyMessage.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.id = 0; object.iteration = 0; if (options.bytes === String) object.ciphertext = ""; else { object.ciphertext = []; if (options.bytes !== Array) object.ciphertext = $util.newBuffer(object.ciphertext); } } if (message.id != null && message.hasOwnProperty("id")) object.id = message.id; if (message.iteration != null && message.hasOwnProperty("iteration")) object.iteration = message.iteration; if (message.ciphertext != null && message.hasOwnProperty("ciphertext")) 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; return object; }; /** * Converts this SenderKeyMessage to JSON. * @function toJSON * @memberof groupproto.SenderKeyMessage * @instance * @returns {Object.<string,*>} JSON object */ SenderKeyMessage.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return SenderKeyMessage; })(); groupproto.SenderKeyDistributionMessage = (function() { /** * Properties of a SenderKeyDistributionMessage. * @memberof groupproto * @interface ISenderKeyDistributionMessage * @property {number|null} [id] SenderKeyDistributionMessage id * @property {number|null} [iteration] SenderKeyDistributionMessage iteration * @property {Uint8Array|null} [chainKey] SenderKeyDistributionMessage chainKey * @property {Uint8Array|null} [signingKey] SenderKeyDistributionMessage signingKey */ /** * Constructs a new SenderKeyDistributionMessage. * @memberof groupproto * @classdesc Represents a SenderKeyDistributionMessage. * @implements ISenderKeyDistributionMessage * @constructor * @param {groupproto.ISenderKeyDistributionMessage=} [properties] Properties to set */ function SenderKeyDistributionMessage(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * SenderKeyDistributionMessage id. * @member {number} id * @memberof groupproto.SenderKeyDistributionMessage * @instance */ SenderKeyDistributionMessage.prototype.id = 0; /** * SenderKeyDistributionMessage iteration. * @member {number} iteration * @memberof groupproto.SenderKeyDistributionMessage * @instance */ SenderKeyDistributionMessage.prototype.iteration = 0; /** * SenderKeyDistributionMessage chainKey. * @member {Uint8Array} chainKey * @memberof groupproto.SenderKeyDistributionMessage * @instance */ SenderKeyDistributionMessage.prototype.chainKey = $util.newBuffer([]); /** * SenderKeyDistributionMessage signingKey. * @member {Uint8Array} signingKey * @memberof groupproto.SenderKeyDistributionMessage * @instance */ SenderKeyDistributionMessage.prototype.signingKey = $util.newBuffer([]); /** * Creates a new SenderKeyDistributionMessage instance using the specified properties. * @function create * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {groupproto.ISenderKeyDistributionMessage=} [properties] Properties to set * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage instance */ SenderKeyDistributionMessage.create = function create(properties) { return new SenderKeyDistributionMessage(properties); }; /** * Encodes the specified SenderKeyDistributionMessage message. Does not implicitly {@link groupproto.SenderKeyDistributionMessage.verify|verify} messages. * @function encode * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {groupproto.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderKeyDistributionMessage.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration); if (message.chainKey != null && Object.hasOwnProperty.call(message, "chainKey")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.chainKey); if (message.signingKey != null && Object.hasOwnProperty.call(message, "signingKey")) writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.signingKey); return writer; }; /** * Encodes the specified SenderKeyDistributionMessage message, length delimited. Does not implicitly {@link groupproto.SenderKeyDistributionMessage.verify|verify} messages. * @function encodeDelimited * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {groupproto.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderKeyDistributionMessage.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer. * @function decode * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderKeyDistributionMessage.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderKeyDistributionMessage(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.id = reader.uint32(); break; case 2: message.iteration = reader.uint32(); break; case 3: message.chainKey = reader.bytes(); break; case 4: message.signingKey = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderKeyDistributionMessage.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a SenderKeyDistributionMessage message. * @function verify * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {Object.<string,*>} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ SenderKeyDistributionMessage.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.id != null && message.hasOwnProperty("id")) if (!$util.isInteger(message.id)) return "id: integer expected"; if (message.iteration != null && message.hasOwnProperty("iteration")) if (!$util.isInteger(message.iteration)) return "iteration: integer expected"; if (message.chainKey != null && message.hasOwnProperty("chainKey")) if (!(message.chainKey && typeof message.chainKey.length === "number" || $util.isString(message.chainKey))) return "chainKey: buffer expected"; if (message.signingKey != null && message.hasOwnProperty("signingKey")) if (!(message.signingKey && typeof message.signingKey.length === "number" || $util.isString(message.signingKey))) return "signingKey: buffer expected"; return null; }; /** * Creates a SenderKeyDistributionMessage message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {Object.<string,*>} object Plain object * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage */ SenderKeyDistributionMessage.fromObject = function fromObject(object) { if (object instanceof $root.groupproto.SenderKeyDistributionMessage) return object; var message = new $root.groupproto.SenderKeyDistributionMessage(); if (object.id != null) message.id = object.id >>> 0; if (object.iteration != null) message.iteration = object.iteration >>> 0; if (object.chainKey != null) if (typeof object.chainKey === "string") $util.base64.decode(object.chainKey, message.chainKey = $util.newBuffer($util.base64.length(object.chainKey)), 0); else if (object.chainKey.length) message.chainKey = object.chainKey; if (object.signingKey != null) if (typeof object.signingKey === "string") $util.base64.decode(object.signingKey, message.signingKey = $util.newBuffer($util.base64.length(object.signingKey)), 0); else if (object.signingKey.length) message.signingKey = object.signingKey; return message; }; /** * Creates a plain object from a SenderKeyDistributionMessage message. Also converts values to other types if specified. * @function toObject * @memberof groupproto.SenderKeyDistributionMessage * @static * @param {groupproto.SenderKeyDistributionMessage} message SenderKeyDistributionMessage * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.<string,*>} Plain object */ SenderKeyDistributionMessage.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.id = 0; object.iteration = 0; if (options.bytes === String) object.chainKey = ""; else { object.chainKey = []; if (options.bytes !== Array) object.chainKey = $util.newBuffer(object.chainKey); } if (options.bytes === String) object.signingKey = ""; else { object.signingKey = []; if (options.bytes !== Array) object.signingKey = $util.newBuffer(object.signingKey); } } if (message.id != null && message.hasOwnProperty("id")) object.id = message.id; if (message.iteration != null && message.hasOwnProperty("iteration")) object.iteration = message.iteration; if (message.chainKey != null && message.hasOwnProperty("chainKey")) object.chainKey = options.bytes === String ? $util.base64.encode(message.chainKey, 0, message.chainKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.chainKey) : message.chainKey; if (message.signingKey != null && message.hasOwnProperty("signingKey")) object.signingKey = options.bytes === String ? $util.base64.encode(message.signingKey, 0, message.signingKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.signingKey) : message.signingKey; return object; }; /** * Converts this SenderKeyDistributionMessage to JSON. * @function toJSON * @memberof groupproto.SenderKeyDistributionMessage * @instance * @returns {Object.<string,*>} JSON object */ SenderKeyDistributionMessage.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return SenderKeyDistributionMessage; })(); groupproto.SenderChainKey = (function() { /** * Properties of a SenderChainKey. * @memberof groupproto * @interface ISenderChainKey * @property {number|null} [iteration] SenderChainKey iteration * @property {Uint8Array|null} [seed] SenderChainKey seed */ /** * Constructs a new SenderChainKey. * @memberof groupproto * @classdesc Represents a SenderChainKey. * @implements ISenderChainKey * @constructor * @param {groupproto.ISenderChainKey=} [properties] Properties to set */ function SenderChainKey(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * SenderChainKey iteration. * @member {number} iteration * @memberof groupproto.SenderChainKey * @instance */ SenderChainKey.prototype.iteration = 0; /** * SenderChainKey seed. * @member {Uint8Array} seed * @memberof groupproto.SenderChainKey * @instance */ SenderChainKey.prototype.seed = $util.newBuffer([]); /** * Creates a new SenderChainKey instance using the specified properties. * @function create * @memberof groupproto.SenderChainKey * @static * @param {groupproto.ISenderChainKey=} [properties] Properties to set * @returns {groupproto.SenderChainKey} SenderChainKey instance */ SenderChainKey.create = function create(properties) { return new SenderChainKey(properties); }; /** * Encodes the specified SenderChainKey message. Does not implicitly {@link groupproto.SenderChainKey.verify|verify} messages. * @function encode * @memberof groupproto.SenderChainKey * @static * @param {groupproto.ISenderChainKey} message SenderChainKey message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderChainKey.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); if (message.seed != null && Object.hasOwnProperty.call(message, "seed")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed); return writer; }; /** * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link groupproto.SenderChainKey.verify|verify} messages. * @function encodeDelimited * @memberof groupproto.SenderChainKey * @static * @param {groupproto.ISenderChainKey} message SenderChainKey message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderChainKey.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a SenderChainKey message from the specified reader or buffer. * @function decode * @memberof groupproto.SenderChainKey * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {groupproto.SenderChainKey} SenderChainKey * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderChainKey.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderChainKey(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.iteration = reader.uint32(); break; case 2: message.seed = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a SenderChainKey message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof groupproto.SenderChainKey * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {groupproto.SenderChainKey} SenderChainKey * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderChainKey.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a SenderChainKey message. * @function verify * @memberof groupproto.SenderChainKey * @static * @param {Object.<string,*>} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ SenderChainKey.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.iteration != null && message.hasOwnProperty("iteration")) if (!$util.isInteger(message.iteration)) return "iteration: integer expected"; if (message.seed != null && message.hasOwnProperty("seed")) if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed))) return "seed: buffer expected"; return null; }; /** * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof groupproto.SenderChainKey * @static * @param {Object.<string,*>} object Plain object * @returns {groupproto.SenderChainKey} SenderChainKey */ SenderChainKey.fromObject = function fromObject(object) { if (object instanceof $root.groupproto.SenderChainKey) return object; var message = new $root.groupproto.SenderChainKey(); if (object.iteration != null) message.iteration = object.iteration >>> 0; if (object.seed != null) if (typeof object.seed === "string") $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0); else if (object.seed.length) message.seed = object.seed; return message; }; /** * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified. * @function toObject * @memberof groupproto.SenderChainKey * @static * @param {groupproto.SenderChainKey} message SenderChainKey * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.<string,*>} Plain object */ SenderChainKey.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.iteration = 0; if (options.bytes === String) object.seed = ""; else { object.seed = []; if (options.bytes !== Array) object.seed = $util.newBuffer(object.seed); } } if (message.iteration != null && message.hasOwnProperty("iteration")) object.iteration = message.iteration; if (message.seed != null && message.hasOwnProperty("seed")) object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed; return object; }; /** * Converts this SenderChainKey to JSON. * @function toJSON * @memberof groupproto.SenderChainKey * @instance * @returns {Object.<string,*>} JSON object */ SenderChainKey.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return SenderChainKey; })(); groupproto.SenderMessageKey = (function() { /** * Properties of a SenderMessageKey. * @memberof groupproto * @interface ISenderMessageKey * @property {number|null} [iteration] SenderMessageKey iteration * @property {Uint8Array|null} [seed] SenderMessageKey seed */ /** * Constructs a new SenderMessageKey. * @memberof groupproto * @classdesc Represents a SenderMessageKey. * @implements ISenderMessageKey * @constructor * @param {groupproto.ISenderMessageKey=} [properties] Properties to set */ function SenderMessageKey(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * SenderMessageKey iteration. * @member {number} iteration * @memberof groupproto.SenderMessageKey * @instance */ SenderMessageKey.prototype.iteration = 0; /** * SenderMessageKey seed. * @member {Uint8Array} seed * @memberof groupproto.SenderMessageKey * @instance */ SenderMessageKey.prototype.seed = $util.newBuffer([]); /** * Creates a new SenderMessageKey instance using the specified properties. * @function create * @memberof groupproto.SenderMessageKey * @static * @param {groupproto.ISenderMessageKey=} [properties] Properties to set * @returns {groupproto.SenderMessageKey} SenderMessageKey instance */ SenderMessageKey.create = function create(properties) { return new SenderMessageKey(properties); }; /** * Encodes the specified SenderMessageKey message. Does not implicitly {@link groupproto.SenderMessageKey.verify|verify} messages. * @function encode * @memberof groupproto.SenderMessageKey * @static * @param {groupproto.ISenderMessageKey} message SenderMessageKey message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderMessageKey.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); if (message.seed != null && Object.hasOwnProperty.call(message, "seed")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed); return writer; }; /** * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link groupproto.SenderMessageKey.verify|verify} messages. * @function encodeDelimited * @memberof groupproto.SenderMessageKey * @static * @param {groupproto.ISenderMessageKey} message SenderMessageKey message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderMessageKey.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a SenderMessageKey message from the specified reader or buffer. * @function decode * @memberof groupproto.SenderMessageKey * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {groupproto.SenderMessageKey} SenderMessageKey * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderMessageKey.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderMessageKey(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.iteration = reader.uint32(); break; case 2: message.seed = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof groupproto.SenderMessageKey * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {groupproto.SenderMessageKey} SenderMessageKey * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderMessageKey.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a SenderMessageKey message. * @function verify * @memberof groupproto.SenderMessageKey * @static * @param {Object.<string,*>} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ SenderMessageKey.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.iteration != null && message.hasOwnProperty("iteration")) if (!$util.isInteger(message.iteration)) return "iteration: integer expected"; if (message.seed != null && message.hasOwnProperty("seed")) if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed))) return "seed: buffer expected"; return null; }; /** * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof groupproto.SenderMessageKey * @static * @param {Object.<string,*>} object Plain object * @returns {groupproto.SenderMessageKey} SenderMessageKey */ SenderMessageKey.fromObject = function fromObject(object) { if (object instanceof $root.groupproto.SenderMessageKey) return object; var message = new $root.groupproto.SenderMessageKey(); if (object.iteration != null) message.iteration = object.iteration >>> 0; if (object.seed != null) if (typeof object.seed === "string") $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0); else if (object.seed.length) message.seed = object.seed; return message; }; /** * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified. * @function toObject * @memberof groupproto.SenderMessageKey * @static * @param {groupproto.SenderMessageKey} message SenderMessageKey * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.<string,*>} Plain object */ SenderMessageKey.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.iteration = 0; if (options.bytes === String) object.seed = ""; else { object.seed = []; if (options.bytes !== Array) object.seed = $util.newBuffer(object.seed); } } if (message.iteration != null && message.hasOwnProperty("iteration")) object.iteration = message.iteration; if (message.seed != null && message.hasOwnProperty("seed")) object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed; return object; }; /** * Converts this SenderMessageKey to JSON. * @function toJSON * @memberof groupproto.SenderMessageKey * @instance * @returns {Object.<string,*>} JSON object */ SenderMessageKey.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return SenderMessageKey; })(); groupproto.SenderSigningKey = (function() { /** * Properties of a SenderSigningKey. * @memberof groupproto * @interface ISenderSigningKey * @property {Uint8Array|null} ["public"] SenderSigningKey public * @property {Uint8Array|null} ["private"] SenderSigningKey private */ /** * Constructs a new SenderSigningKey. * @memberof groupproto * @classdesc Represents a SenderSigningKey. * @implements ISenderSigningKey * @constructor * @param {groupproto.ISenderSigningKey=} [properties] Properties to set */ function SenderSigningKey(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * SenderSigningKey public. * @member {Uint8Array} public * @memberof groupproto.SenderSigningKey * @instance */ SenderSigningKey.prototype["public"] = $util.newBuffer([]); /** * SenderSigningKey private. * @member {Uint8Array} private * @memberof groupproto.SenderSigningKey * @instance */ SenderSigningKey.prototype["private"] = $util.newBuffer([]); /** * Creates a new SenderSigningKey instance using the specified properties. * @function create * @memberof groupproto.SenderSigningKey * @static * @param {groupproto.ISenderSigningKey=} [properties] Properties to set * @returns {groupproto.SenderSigningKey} SenderSigningKey instance */ SenderSigningKey.create = function create(properties) { return new SenderSigningKey(properties); }; /** * Encodes the specified SenderSigningKey message. Does not implicitly {@link groupproto.SenderSigningKey.verify|verify} messages. * @function encode * @memberof groupproto.SenderSigningKey * @static * @param {groupproto.ISenderSigningKey} message SenderSigningKey message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderSigningKey.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message["public"] != null && Object.hasOwnProperty.call(message, "public")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message["public"]); if (message["private"] != null && Object.hasOwnProperty.call(message, "private")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message["private"]); return writer; }; /** * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link groupproto.SenderSigningKey.verify|verify} messages. * @function encodeDelimited * @memberof groupproto.SenderSigningKey * @static * @param {groupproto.ISenderSigningKey} message SenderSigningKey message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SenderSigningKey.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a SenderSigningKey message from the specified reader or buffer. * @function decode * @memberof groupproto.SenderSigningKey * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {groupproto.SenderSigningKey} SenderSigningKey * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderSigningKey.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderSigningKey(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message["public"] = reader.bytes(); break; case 2: message["private"] = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof groupproto.SenderSigningKey * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {groupproto.SenderSigningKey} SenderSigningKey * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SenderSigningKey.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a SenderSigningKey message. * @function verify * @memberof groupproto.SenderSigningKey * @static * @param {Object.<string,*>} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ SenderSigningKey.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message["public"] != null && message.hasOwnProperty("public")) if (!(message["public"] && typeof message["public"].length === "number" || $util.isString(message["public"]))) return "public: buffer expected"; if (message["private"] != null && messag