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.
		
		
		
		
		
			
		
			
	
	
		
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Swift
		
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Swift
		
	
| 
											5 years ago
										 | import CryptoSwift | ||
| 
											5 years ago
										 | 
 | ||
| 
											5 years ago
										 | public final class ClosedGroupSenderKey : NSObject, NSCoding { // NSObject/NSCoding conformance is needed for YapDatabase compatibility | ||
| 
											5 years ago
										 |     public let chainKey: Data | ||
|  |     public let keyIndex: UInt | ||
|  |     public let publicKey: Data | ||
|  | 
 | ||
|  |     // MARK: Initialization | ||
| 
											5 years ago
										 |     public init(chainKey: Data, keyIndex: UInt, publicKey: Data) { | ||
| 
											5 years ago
										 |         self.chainKey = chainKey | ||
|  |         self.keyIndex = keyIndex | ||
|  |         self.publicKey = publicKey | ||
|  |     } | ||
|  | 
 | ||
|  |     // MARK: Coding | ||
|  |     public init?(coder: NSCoder) { | ||
|  |         guard let chainKey = coder.decodeObject(forKey: "chainKey") as? Data, | ||
|  |             let keyIndex = coder.decodeObject(forKey: "keyIndex") as? UInt, | ||
|  |             let publicKey = coder.decodeObject(forKey: "publicKey") as? Data else { return nil } | ||
|  |         self.chainKey = chainKey | ||
|  |         self.keyIndex = UInt(keyIndex) | ||
|  |         self.publicKey = publicKey | ||
|  |         super.init() | ||
|  |     } | ||
|  | 
 | ||
|  |     public func encode(with coder: NSCoder) { | ||
|  |         coder.encode(chainKey, forKey: "chainKey") | ||
|  |         coder.encode(keyIndex, forKey: "keyIndex") | ||
|  |         coder.encode(publicKey, forKey: "publicKey") | ||
|  |     } | ||
|  | 
 | ||
|  |     // MARK: Equality | ||
|  |     override public func isEqual(_ other: Any?) -> Bool { | ||
|  |         guard let other = other as? ClosedGroupSenderKey else { return false } | ||
|  |         return chainKey == other.chainKey && keyIndex == other.keyIndex && publicKey == other.publicKey | ||
|  |     } | ||
|  | 
 | ||
|  |     // MARK: Hashing | ||
|  |     override public var hash: Int { // Override NSObject.hash and not Hashable.hashValue or Hashable.hash(into:) | ||
|  |         return chainKey.hashValue ^ keyIndex.hashValue ^ publicKey.hashValue | ||
|  |     } | ||
|  | 
 | ||
|  |     // MARK: Description | ||
|  |     override public var description: String { | ||
|  |         return "[ chainKey : \(chainKey), keyIndex : \(keyIndex), publicKey: \(publicKey.toHexString()) ]" | ||
|  |     } | ||
|  | } |