Add convenience initializers to proto wrappers.

This commit is contained in:
Matthew Chen 2018-08-08 13:08:47 -04:00
parent 908b50faaa
commit e5eda8b45d
19 changed files with 341 additions and 113 deletions

View File

@ -187,7 +187,7 @@ EXTERNAL SOURCES:
CHECKOUT OPTIONS:
AxolotlKit:
:commit: 1fbdd114afe5ca981324892f22242d3a7a47794d
:commit: 0c9dc8cc0f02fd616fa8e5a4f4184e452de93f1e
:git: https://github.com/signalapp/SignalProtocolKit.git
Curve25519Kit:
:commit: ced146699622ebd3d282bbfce3d492db4456e9aa

2
Pods

@ -1 +1 @@
Subproject commit 73bf1779e0298cbc28c0b93d908bae0aa1f44bbc
Subproject commit d16f91410fa1d9859a910b6f2b6e2369fb6d0377

View File

@ -302,7 +302,6 @@ import Foundation
writer.extend(('''
public enum %s: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
''' % writer.invalid_protobuf_error_name).strip())
writer.newline()
@ -649,6 +648,54 @@ public func serializedData() throws -> Data {
writer.add('@objc public override init() {}')
writer.newline()
# Required-Field Initializer
required_fields = [field for field in self.fields() if field.is_required]
if len(required_fields) > 0:
required_init_params = []
for field in required_fields:
if field.rules == 'repeated':
param_type = '[' + self.base_swift_type_for_field(field) + ']'
else:
param_type = self.base_swift_type_for_field(field)
required_init_params.append('%s: %s' % ( field.name_swift, param_type) )
writer.add('// Initializer for required fields')
writer.add('@objc public init(%s) {' % ', '.join(required_init_params))
writer.push_indent()
writer.add('super.init()')
writer.newline()
for field in required_fields:
accessor_name = field.name_swift
accessor_name = 'set' + accessor_name[0].upper() + accessor_name[1:]
writer.add('%s(%s)' % ( accessor_name, field.name_swift, ) )
writer.pop_indent()
writer.add('}')
writer.newline()
# # All-Field Initializer
# if len(required_fields) < len(self.fields()):
# init_params = []
# for field in self.fields():
# if field.is_required:
# if field.rules == 'repeated':
# param_type = '[' + self.base_swift_type_for_field(field) + ']'
# else:
# param_type = self.base_swift_type_for_field(field)
# else:
# param_type = field.type_swift
# init_params.append('%s: %s' % ( field.name_swift, param_type) )
# writer.add('// Initializer for required fields')
# writer.add('@objc public init(%s) {' % ', '.join(init_params))
# writer.push_indent()
# writer.add('super.init()')
# writer.newline()
# for field in self.fields():
# accessor_name = field.name_swift
# accessor_name = 'set' + accessor_name[0].upper() + accessor_name[1:]
# writer.add('%s(%s)' % ( accessor_name, field.name_swift, ) )
# writer.pop_indent()
# writer.add('}')
# writer.newline()
# Setters
for field in self.fields():
if field.rules == 'repeated':

View File

@ -8,7 +8,6 @@ import Foundation
public enum WebRTCProtoError: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
// MARK: - WebRTCProtoConnected
@ -23,6 +22,13 @@ public enum WebRTCProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -102,6 +108,13 @@ public enum WebRTCProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -181,6 +194,13 @@ public enum WebRTCProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -348,17 +368,17 @@ public enum WebRTCProtoError: Error {
}
fileprivate class func parseProto(_ proto: WebRTCProtos_Data) throws -> WebRTCProtoData {
var connected: WebRTCProtoConnected? = nil
var connected: WebRTCProtoConnected?
if proto.hasConnected {
connected = try WebRTCProtoConnected.parseProto(proto.connected)
}
var hangup: WebRTCProtoHangup? = nil
var hangup: WebRTCProtoHangup?
if proto.hasHangup {
hangup = try WebRTCProtoHangup.parseProto(proto.hangup)
}
var videoStreamingStatus: WebRTCProtoVideoStreamingStatus? = nil
var videoStreamingStatus: WebRTCProtoVideoStreamingStatus?
if proto.hasVideoStreamingStatus {
videoStreamingStatus = try WebRTCProtoVideoStreamingStatus.parseProto(proto.videoStreamingStatus)
}

View File

@ -122,24 +122,29 @@ public class MessageFetcherJob: NSObject {
do {
let params = ParamParser(dictionary: messageDict)
let builder = SSKProtoEnvelope.SSKProtoEnvelopeBuilder()
let typeInt: Int32 = try params.required(key: "type")
guard let type: SSKProtoEnvelope.SSKProtoEnvelopeType = SSKProtoEnvelope.SSKProtoEnvelopeType(rawValue: typeInt) else {
Logger.error("\(self.logTag) `typeInt` was invalid: \(typeInt)")
Logger.error("\(self.logTag) `type` was invalid: \(typeInt)")
throw ParamParser.ParseError.invalidFormat("type")
}
builder.setType(type)
if let timestamp: UInt64 = try params.required(key: "timestamp") {
builder.setTimestamp(timestamp)
guard let source: String = try params.required(key: "source") else {
Logger.error("\(self.logTag) `source` was invalid: \(typeInt)")
throw ParamParser.ParseError.invalidFormat("source")
}
if let source: String = try params.required(key: "source") {
builder.setSource(source)
guard let timestamp: UInt64 = try params.required(key: "timestamp") else {
Logger.error("\(self.logTag) `timestamp` was invalid: \(typeInt)")
throw ParamParser.ParseError.invalidFormat("timestamp")
}
if let sourceDevice: UInt32 = try params.required(key: "sourceDevice") {
builder.setSourceDevice(sourceDevice)
guard let sourceDevice: UInt32 = try params.required(key: "sourceDevice") else {
Logger.error("\(self.logTag) `sourceDevice` was invalid: \(typeInt)")
throw ParamParser.ParseError.invalidFormat("sourceDevice")
}
let builder = SSKProtoEnvelope.SSKProtoEnvelopeBuilder(type: type, source: source, sourceDevice: sourceDevice, timestamp: timestamp)
if let legacyMessage = try params.optionalBase64EncodedData(key: "message") {
builder.setLegacyMessage(legacyMessage)
}

View File

@ -3396,11 +3396,11 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
}
}();
SSKProtoEnvelopeBuilder *envelopeBuilder = [SSKProtoEnvelopeBuilder new];
envelopeBuilder.type = SSKProtoEnvelopeTypeCiphertext;
envelopeBuilder.source = source;
envelopeBuilder.sourceDevice = 1;
envelopeBuilder.timestamp = timestamp;
SSKProtoEnvelopeBuilder *envelopeBuilder =
[[SSKProtoEnvelopeBuilder alloc] initWithType:SSKProtoEnvelopeTypeCiphertext
source:source
sourceDevice:1
timestamp:timestamp];
NSError *error;
SSKProtoEnvelope *_Nullable envelope = [envelopeBuilder buildAndReturnError:&error];
if (error || !envelope) {
@ -3894,9 +3894,9 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
if ([thread isKindOfClass:[TSGroupThread class]]) {
TSGroupThread *groupThread = (TSGroupThread *)thread;
SSKProtoGroupContextBuilder *groupBuilder = [SSKProtoGroupContextBuilder new];
[groupBuilder setType:SSKProtoGroupContextTypeDeliver];
[groupBuilder setId:groupThread.groupModel.groupId];
SSKProtoGroupContextBuilder *groupBuilder =
[[SSKProtoGroupContextBuilder alloc] initWithId:groupThread.groupModel.groupId
type:SSKProtoGroupContextTypeDeliver];
[dataMessageBuilder setGroup:groupBuilder.buildIgnoringErrors];
}
@ -3919,11 +3919,10 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
SSKProtoEnvelopeType envelopeType = SSKProtoEnvelopeTypeCiphertext;
NSData *content = plaintextData;
SSKProtoEnvelopeBuilder *envelopeBuilder = [SSKProtoEnvelopeBuilder new];
envelopeBuilder.type = envelopeType;
envelopeBuilder.source = source;
envelopeBuilder.sourceDevice = sourceDevice;
envelopeBuilder.timestamp = timestamp;
SSKProtoEnvelopeBuilder *envelopeBuilder = [[SSKProtoEnvelopeBuilder alloc] initWithType:envelopeType
source:source
sourceDevice:sourceDevice
timestamp:timestamp];
envelopeBuilder.content = content;
NSError *error;
NSData *_Nullable envelopeData = [envelopeBuilder buildSerializedDataAndReturnError:&error];

View File

@ -409,11 +409,9 @@ private class SignalCallData: NSObject {
return peerConnectionClient.setLocalSessionDescription(sessionDescription).then {
do {
let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder()
offerBuilder.setId(call.signalingId)
offerBuilder.setSessionDescription(sessionDescription.sdp)
let offer = try offerBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: offer)
let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder(id: call.signalingId,
sessionDescription: sessionDescription.sdp)
let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: try offerBuilder.build())
return self.messageSender.sendPromise(message: callMessage)
} catch {
owsFail("Couldn't build proto in \(#function)")
@ -547,11 +545,8 @@ private class SignalCallData: NSObject {
SwiftAssertIsOnMainThread(#function)
do {
let busyBuilder = SSKProtoCallMessageBusy.SSKProtoCallMessageBusyBuilder()
busyBuilder.setId(call.signalingId)
let busyMessage = try busyBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, busyMessage: busyMessage)
let busyBuilder = SSKProtoCallMessageBusy.SSKProtoCallMessageBusyBuilder(id: call.signalingId)
let callMessage = OWSOutgoingCallMessage(thread: call.thread, busyMessage: try busyBuilder.build())
let sendPromise = messageSender.sendPromise(message: callMessage)
sendPromise.retainUntilComplete()
@ -720,11 +715,9 @@ private class SignalCallData: NSObject {
}
do {
let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder()
answerBuilder.setId(newCall.signalingId)
answerBuilder.setSessionDescription(negotiatedSessionDescription.sdp)
let answer = try answerBuilder.build()
let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: answer)
let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder(id: newCall.signalingId,
sessionDescription: negotiatedSessionDescription.sdp)
let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: try answerBuilder.build())
return self.messageSender.sendPromise(message: callAnswerMessage)
} catch {
@ -866,14 +859,11 @@ private class SignalCallData: NSObject {
* include network accessibility information from the perspective of each client. Once compatible ICEUpdates have been
* exchanged, the clients can connect.
*/
let iceUpdateBuilder = SSKProtoCallMessageIceUpdate.SSKProtoCallMessageIceUpdateBuilder()
iceUpdateBuilder.setId(call.signalingId)
iceUpdateBuilder.setSdp(iceCandidate.sdp)
iceUpdateBuilder.setSdpMlineIndex(UInt32(iceCandidate.sdpMLineIndex))
iceUpdateBuilder.setSdpMid(sdpMid)
let iceUpdate = try iceUpdateBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: iceUpdate)
let iceUpdateBuilder = SSKProtoCallMessageIceUpdate.SSKProtoCallMessageIceUpdateBuilder(id: call.signalingId,
sdpMid: sdpMid,
sdpMlineIndex: UInt32(iceCandidate.sdpMLineIndex),
sdp: iceCandidate.sdp)
let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: try iceUpdateBuilder.build())
let sendPromise = self.messageSender.sendPromise(message: callMessage)
sendPromise.retainUntilComplete()
} catch {
@ -1049,12 +1039,9 @@ private class SignalCallData: NSObject {
var messageData: Data
do {
let connectedBuilder = WebRTCProtoConnected.WebRTCProtoConnectedBuilder()
connectedBuilder.setId(call.signalingId)
let connectedProto = try connectedBuilder.build()
let connectedBuilder = WebRTCProtoConnected.WebRTCProtoConnectedBuilder(id: call.signalingId)
let dataBuilder = WebRTCProtoData.WebRTCProtoDataBuilder()
dataBuilder.setConnected(connectedProto)
dataBuilder.setConnected(try connectedBuilder.build())
messageData = try dataBuilder.buildSerializedData()
} catch {
handleFailedCall(failedCall: call, error: CallError.assertionError(description: "\(self.logTag) couldn't build proto in \(#function)"))
@ -1190,12 +1177,9 @@ private class SignalCallData: NSObject {
var messageData: Data
do {
let hangupBuilder = WebRTCProtoHangup.WebRTCProtoHangupBuilder()
hangupBuilder.setId(call.signalingId)
let hangupProto = try hangupBuilder.build()
let hangupBuilder = WebRTCProtoHangup.WebRTCProtoHangupBuilder(id: call.signalingId)
let dataBuilder = WebRTCProtoData.WebRTCProtoDataBuilder()
dataBuilder.setHangup(hangupProto)
dataBuilder.setHangup(try hangupBuilder.build())
messageData = try dataBuilder.buildSerializedData()
} catch {
handleFailedCall(failedCall: call, error: CallError.assertionError(description: "\(self.logTag) couldn't build proto in \(#function)"))
@ -1209,11 +1193,8 @@ private class SignalCallData: NSObject {
// If the call hasn't started yet, we don't have a data channel to communicate the hang up. Use Signal Service Message.
do {
let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder()
hangupBuilder.setId(call.signalingId)
let hangupProto = try hangupBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, hangupMessage: hangupProto)
let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder(id: call.signalingId)
let callMessage = OWSOutgoingCallMessage(thread: call.thread, hangupMessage: try hangupBuilder.build())
let sendPromise = self.messageSender.sendPromise(message: callMessage).then {
Logger.debug("\(self.logTag) successfully sent hangup call message to \(call.thread.contactIdentifier())")
}.catch { error in
@ -1704,13 +1685,10 @@ private class SignalCallData: NSObject {
var messageData: Data
do {
let videoStreamingStatusBuilder = WebRTCProtoVideoStreamingStatus.WebRTCProtoVideoStreamingStatusBuilder()
videoStreamingStatusBuilder.setId(call.signalingId)
let videoStreamingStatusBuilder = WebRTCProtoVideoStreamingStatus.WebRTCProtoVideoStreamingStatusBuilder(id: call.signalingId)
videoStreamingStatusBuilder.setEnabled(shouldHaveLocalVideoTrack)
let videoStreamingStatusProto = try videoStreamingStatusBuilder.build()
let dataBuilder = WebRTCProtoData.WebRTCProtoDataBuilder()
dataBuilder.setVideoStreamingStatus(videoStreamingStatusProto)
dataBuilder.setVideoStreamingStatus(try videoStreamingStatusBuilder.build())
messageData = try dataBuilder.buildSerializedData()
} catch {
Logger.error("\(self.logTag) couldn't build proto in \(#function)")

View File

@ -126,9 +126,7 @@ NS_ASSUME_NONNULL_BEGIN
}
SignalIOSProtoBackupSnapshotBackupEntityBuilder *entityBuilder =
[SignalIOSProtoBackupSnapshotBackupEntityBuilder new];
[entityBuilder setType:entityType];
[entityBuilder setEntityData:data];
[[SignalIOSProtoBackupSnapshotBackupEntityBuilder alloc] initWithType:entityType entityData:data];
NSError *error;
SignalIOSProtoBackupSnapshotBackupEntity *_Nullable entity = [entityBuilder buildAndReturnError:&error];

View File

@ -51,14 +51,14 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable NSData *)buildEncryptedMessageBody
{
ProvisioningProtoProvisionMessageBuilder *messageBuilder = [ProvisioningProtoProvisionMessageBuilder new];
messageBuilder.identityKeyPublic = self.myPublicKey;
messageBuilder.identityKeyPrivate = self.myPrivateKey;
messageBuilder.number = self.accountIdentifier;
messageBuilder.provisioningCode = self.provisioningCode;
messageBuilder.userAgent = @"OWI";
messageBuilder.readReceipts = self.areReadReceiptsEnabled;
messageBuilder.profileKey = self.profileKey;
ProvisioningProtoProvisionMessageBuilder *messageBuilder =
[[ProvisioningProtoProvisionMessageBuilder alloc] initWithIdentityKeyPublic:self.myPublicKey
identityKeyPrivate:self.myPrivateKey
number:self.accountIdentifier
provisioningCode:self.provisioningCode
userAgent:@"OWI"
profileKey:self.profileKey
readReceipts:self.areReadReceiptsEnabled];
NSError *error;
NSData *_Nullable plainTextProvisionMessage = [messageBuilder buildSerializedDataAndReturnError:&error];
@ -74,10 +74,10 @@ NS_ASSUME_NONNULL_BEGIN
return nil;
}
ProvisioningProtoProvisionEnvelopeBuilder *envelopeBuilder = [ProvisioningProtoProvisionEnvelopeBuilder new];
// Note that this is a one-time-use *cipher* public key, not our Signal *identity* public key
envelopeBuilder.publicKey = [cipher.ourPublicKey prependKeyType];
envelopeBuilder.body = encryptedProvisionMessage;
ProvisioningProtoProvisionEnvelopeBuilder *envelopeBuilder =
[[ProvisioningProtoProvisionEnvelopeBuilder alloc] initWithPublicKey:[cipher.ourPublicKey prependKeyType]
body:encryptedProvisionMessage];
NSData *_Nullable envelopeData = [envelopeBuilder buildSerializedDataAndReturnError:&error];
if (!envelopeData || error) {

View File

@ -38,9 +38,8 @@ NS_ASSUME_NONNULL_BEGIN
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
for (OWSLinkedDeviceReadReceipt *readReceipt in self.readReceipts) {
SSKProtoSyncMessageReadBuilder *readProtoBuilder =
[SSKProtoSyncMessageReadBuilder new];
[readProtoBuilder setSender:readReceipt.senderId];
[readProtoBuilder setTimestamp:readReceipt.messageIdTimestamp];
[[SSKProtoSyncMessageReadBuilder alloc] initWithSender:readReceipt.senderId
timestamp:readReceipt.messageIdTimestamp];
NSError *error;
SSKProtoSyncMessageRead *_Nullable readProto = [readProtoBuilder buildAndReturnError:&error];

View File

@ -79,8 +79,8 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable SSKProtoReceiptMessage *)buildReceiptMessage:(NSString *)recipientId
{
SSKProtoReceiptMessageBuilder *builder = [SSKProtoReceiptMessageBuilder new];
[builder setType:SSKProtoReceiptMessageTypeRead];
OWSAssert(self.messageTimestamps.count > 0);
for (NSNumber *messageTimestamp in self.messageTimestamps) {
[builder addTimestamp:[messageTimestamp unsignedLongLongValue]];

View File

@ -59,9 +59,8 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable SSKProtoDataMessageBuilder *)dataMessageBuilder
{
SSKProtoGroupContextBuilder *groupContextBuilder = [SSKProtoGroupContextBuilder new];
[groupContextBuilder setType:SSKProtoGroupContextTypeRequestInfo];
[groupContextBuilder setId:self.groupId];
SSKProtoGroupContextBuilder *groupContextBuilder =
[[SSKProtoGroupContextBuilder alloc] initWithId:self.groupId type:SSKProtoGroupContextTypeRequestInfo];
NSError *error;
SSKProtoGroupContext *_Nullable groupContextProto = [groupContextBuilder buildAndReturnError:&error];

View File

@ -491,10 +491,10 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
}
}
WebSocketProtoWebSocketRequestMessageBuilder *requestBuilder = [WebSocketProtoWebSocketRequestMessageBuilder new];
[requestBuilder setRequestID:socketMessage.requestId];
[requestBuilder setVerb:request.HTTPMethod];
[requestBuilder setPath:requestPath];
WebSocketProtoWebSocketRequestMessageBuilder *requestBuilder =
[[WebSocketProtoWebSocketRequestMessageBuilder alloc] initWithVerb:request.HTTPMethod
path:requestPath
requestID:socketMessage.requestId];
if (jsonData) {
// TODO: Do we need body & headers for requests with no parameters?
[requestBuilder setBody:jsonData];
@ -780,10 +780,8 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
NSError *error;
WebSocketProtoWebSocketResponseMessageBuilder *responseBuilder =
[WebSocketProtoWebSocketResponseMessageBuilder new];
[responseBuilder setStatus:200];
[[WebSocketProtoWebSocketResponseMessageBuilder alloc] initWithRequestID:request.requestID status:200];
[responseBuilder setMessage:@"OK"];
[responseBuilder setRequestID:request.requestID];
WebSocketProtoWebSocketResponseMessage *_Nullable response = [responseBuilder buildAndReturnError:&error];
if (!response || error) {
OWSFail(@"%@ could not build proto: %@", self.logTag, error);

View File

@ -8,7 +8,6 @@ import Foundation
public enum FingerprintProtoError: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
// MARK: - FingerprintProtoLogicalFingerprint
@ -23,6 +22,13 @@ public enum FingerprintProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(identityData: Data) {
super.init()
setIdentityData(identityData)
}
@objc public func setIdentityData(_ valueParam: Data) {
proto.identityData = valueParam
}
@ -102,6 +108,15 @@ public enum FingerprintProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(version: UInt32, localFingerprint: FingerprintProtoLogicalFingerprint, remoteFingerprint: FingerprintProtoLogicalFingerprint) {
super.init()
setVersion(version)
setLocalFingerprint(localFingerprint)
setRemoteFingerprint(remoteFingerprint)
}
@objc public func setVersion(_ valueParam: UInt32) {
proto.version = valueParam
}

View File

@ -8,7 +8,6 @@ import Foundation
public enum ProvisioningProtoError: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
// MARK: - ProvisioningProtoProvisionEnvelope
@ -23,6 +22,14 @@ public enum ProvisioningProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(publicKey: Data, body: Data) {
super.init()
setPublicKey(publicKey)
setBody(body)
}
@objc public func setPublicKey(_ valueParam: Data) {
proto.publicKey = valueParam
}
@ -116,6 +123,19 @@ public enum ProvisioningProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(identityKeyPublic: Data, identityKeyPrivate: Data, number: String, provisioningCode: String, userAgent: String, profileKey: Data, readReceipts: Bool) {
super.init()
setIdentityKeyPublic(identityKeyPublic)
setIdentityKeyPrivate(identityKeyPrivate)
setNumber(number)
setProvisioningCode(provisioningCode)
setUserAgent(userAgent)
setProfileKey(profileKey)
setReadReceipts(readReceipts)
}
@objc public func setIdentityKeyPublic(_ valueParam: Data) {
proto.identityKeyPublic = valueParam
}

View File

@ -8,7 +8,6 @@ import Foundation
public enum SSKProtoError: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
// MARK: - SSKProtoEnvelope
@ -53,6 +52,16 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(type: SSKProtoEnvelopeType, source: String, sourceDevice: UInt32, timestamp: UInt64) {
super.init()
setType(type)
setSource(source)
setSourceDevice(sourceDevice)
setTimestamp(timestamp)
}
@objc public func setType(_ valueParam: SSKProtoEnvelopeType) {
proto.type = SSKProtoEnvelopeTypeUnwrap(valueParam)
}
@ -366,6 +375,14 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64, sessionDescription: String) {
super.init()
setId(id)
setSessionDescription(sessionDescription)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -459,6 +476,14 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64, sessionDescription: String) {
super.init()
setId(id)
setSessionDescription(sessionDescription)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -552,6 +577,16 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64, sdpMid: String, sdpMlineIndex: UInt32, sdp: String) {
super.init()
setId(id)
setSdpMid(sdpMid)
setSdpMlineIndex(sdpMlineIndex)
setSdp(sdp)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -673,6 +708,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -752,6 +794,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -1135,6 +1184,14 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64, author: String) {
super.init()
setId(id)
setAuthor(author)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -2463,6 +2520,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(type: SSKProtoReceiptMessageType) {
super.init()
setType(type)
}
@objc public func setType(_ valueParam: SSKProtoReceiptMessageType) {
proto.type = SSKProtoReceiptMessageTypeUnwrap(valueParam)
}
@ -2580,6 +2644,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(destination: String) {
super.init()
setDestination(destination)
}
@objc public func setDestination(_ valueParam: String) {
proto.destination = valueParam
}
@ -2816,6 +2887,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(blob: SSKProtoAttachmentPointer) {
super.init()
setBlob(blob)
}
@objc public func setBlob(_ valueParam: SSKProtoAttachmentPointer) {
proto.blob = valueParam.proto
}
@ -3097,6 +3175,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(type: SSKProtoSyncMessageRequestType) {
super.init()
setType(type)
}
@objc public func setType(_ valueParam: SSKProtoSyncMessageRequestType) {
proto.type = SSKProtoSyncMessageRequestTypeUnwrap(valueParam)
}
@ -3176,6 +3261,14 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(sender: String, timestamp: UInt64) {
super.init()
setSender(sender)
setTimestamp(timestamp)
}
@objc public func setSender(_ valueParam: String) {
proto.sender = valueParam
}
@ -3579,6 +3672,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: UInt64) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: UInt64) {
proto.id = valueParam
}
@ -3802,6 +3902,14 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: Data, type: SSKProtoGroupContextType) {
super.init()
setId(id)
setType(type)
}
@objc public func setId(_ valueParam: Data) {
proto.id = valueParam
}
@ -4030,6 +4138,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(number: String) {
super.init()
setNumber(number)
}
@objc public func setNumber(_ valueParam: String) {
proto.number = valueParam
}
@ -4297,6 +4412,13 @@ public enum SSKProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(id: Data) {
super.init()
setId(id)
}
@objc public func setId(_ valueParam: Data) {
proto.id = valueParam
}

View File

@ -8,7 +8,6 @@ import Foundation
public enum SignalIOSProtoError: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
// MARK: - SignalIOSProtoBackupSnapshotBackupEntity
@ -53,6 +52,14 @@ public enum SignalIOSProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(type: SignalIOSProtoBackupSnapshotBackupEntityType, entityData: Data) {
super.init()
setType(type)
setEntityData(entityData)
}
@objc public func setType(_ valueParam: SignalIOSProtoBackupSnapshotBackupEntityType) {
proto.type = SignalIOSProtoBackupSnapshotBackupEntityTypeUnwrap(valueParam)
}

View File

@ -8,7 +8,6 @@ import Foundation
public enum WebSocketProtoError: Error {
case invalidProtobuf(description: String)
case unsafeProtobuf(description: String)
}
// MARK: - WebSocketProtoWebSocketRequestMessage
@ -23,6 +22,15 @@ public enum WebSocketProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(verb: String, path: String, requestID: UInt64) {
super.init()
setVerb(verb)
setPath(path)
setRequestID(requestID)
}
@objc public func setVerb(_ valueParam: String) {
proto.verb = valueParam
}
@ -158,6 +166,14 @@ public enum WebSocketProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(requestID: UInt64, status: UInt32) {
super.init()
setRequestID(requestID)
setStatus(status)
}
@objc public func setRequestID(_ valueParam: UInt64) {
proto.requestID = valueParam
}
@ -317,6 +333,13 @@ public enum WebSocketProtoError: Error {
@objc public override init() {}
// Initializer for required fields
@objc public init(type: WebSocketProtoWebSocketMessageType) {
super.init()
setType(type)
}
@objc public func setType(_ valueParam: WebSocketProtoWebSocketMessageType) {
proto.type = WebSocketProtoWebSocketMessageTypeUnwrap(valueParam)
}

View File

@ -276,11 +276,6 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200;
- (nullable UIImage *)image
{
FingerprintProtoLogicalFingerprintsBuilder *logicalFingerprintsBuilder =
[FingerprintProtoLogicalFingerprintsBuilder new];
logicalFingerprintsBuilder.version = OWSFingerprintScannableFormatVersion;
FingerprintProtoLogicalFingerprintBuilder *remoteFingerprintBuilder =
[FingerprintProtoLogicalFingerprintBuilder new];
remoteFingerprintBuilder.identityData = [self scannableData:self.theirFingerprintData];
@ -291,7 +286,6 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200;
OWSFail(@"%@ could not build proto: %@", self.logTag, error);
return nil;
}
logicalFingerprintsBuilder.remoteFingerprint = remoteFingerprint;
FingerprintProtoLogicalFingerprintBuilder *localFingerprintBuilder =
[FingerprintProtoLogicalFingerprintBuilder new];
@ -302,7 +296,11 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200;
OWSFail(@"%@ could not build proto: %@", self.logTag, error);
return nil;
}
logicalFingerprintsBuilder.localFingerprint = localFingerprint;
FingerprintProtoLogicalFingerprintsBuilder *logicalFingerprintsBuilder =
[[FingerprintProtoLogicalFingerprintsBuilder alloc] initWithVersion:OWSFingerprintScannableFormatVersion
localFingerprint:localFingerprint
remoteFingerprint:remoteFingerprint];
// Build ByteMode QR (Latin-1 encodable data)
NSData *_Nullable fingerprintData = [logicalFingerprintsBuilder buildSerializedDataAndReturnError:&error];