mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
Swift
54 lines
1.8 KiB
Swift
//
|
|
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
// See:
|
|
// https://github.com/signalapp/libsignal-metadata-java/blob/cac0dde9de416a192e64a8940503982820870090/java/src/main/java/org/signal/libsignal/metadata/certificate/SenderCertificate.java
|
|
@objc public class SMKSenderCertificate: NSObject {
|
|
|
|
@objc public let senderDeviceId: UInt32
|
|
@objc public let senderRecipientId: String
|
|
|
|
@objc public init(senderDeviceId: UInt32, senderRecipientId: String) {
|
|
self.senderDeviceId = senderDeviceId
|
|
self.senderRecipientId = senderRecipientId
|
|
}
|
|
|
|
@objc public class func parse(data: Data) throws -> SMKSenderCertificate {
|
|
let proto = try SMKProtoSenderCertificate.parseData(data)
|
|
return try parse(proto: proto)
|
|
}
|
|
|
|
@objc public class func parse(proto: SMKProtoSenderCertificate) throws -> SMKSenderCertificate {
|
|
|
|
let sender = proto.sender
|
|
let senderDevice = proto.senderDevice
|
|
|
|
return SMKSenderCertificate(senderDeviceId: senderDevice, senderRecipientId: sender)
|
|
}
|
|
|
|
@objc public func toProto() throws -> SMKProtoSenderCertificate {
|
|
let builder =
|
|
SMKProtoSenderCertificate.builder(sender: senderRecipientId, senderDevice: senderDeviceId)
|
|
return try builder.build()
|
|
}
|
|
|
|
@objc public func serialized() throws -> Data {
|
|
return try toProto().serializedData()
|
|
}
|
|
|
|
open override func isEqual(_ other: Any?) -> Bool {
|
|
if let other = other as? SMKSenderCertificate {
|
|
return (senderDeviceId == other.senderDeviceId && senderRecipientId == other.senderRecipientId)
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
public override var hash: Int {
|
|
return senderDeviceId.hashValue ^ senderRecipientId.hashValue
|
|
}
|
|
}
|