Composable access keys
Sender key requires a derived access key that's composed of each recipients access key xor-ed.
This commit is contained in:
parent
5c822fb4d0
commit
d1a3d73c5f
@ -240,6 +240,7 @@ fileprivate extension SMKMessageType {
|
||||
udMessageContent,
|
||||
for: recipients,
|
||||
identityStore: identityStore,
|
||||
sessionStore: sessionStore,
|
||||
context: protocolContext ?? NullContext())
|
||||
|
||||
return Data(multiRecipientMessage)
|
||||
|
||||
@ -42,6 +42,19 @@ public class SMKUDAccessKey: NSObject {
|
||||
self.keyData = Randomness.generateRandomBytes(Int32(SMKUDAccessKey.kUDAccessKeyLength))
|
||||
}
|
||||
|
||||
private init(keyData: Data) {
|
||||
self.keyData = keyData
|
||||
}
|
||||
|
||||
/// Used to compose multiple Unidentified-Access-Keys for the multiRecipient endpoint
|
||||
public static func ^(lhs: SMKUDAccessKey, rhs: SMKUDAccessKey) -> SMKUDAccessKey {
|
||||
owsAssert(lhs.keyData.count == SMKUDAccessKey.kUDAccessKeyLength)
|
||||
owsAssert(rhs.keyData.count == SMKUDAccessKey.kUDAccessKeyLength)
|
||||
|
||||
let xoredBytes = zip(lhs.keyData, rhs.keyData).map(^)
|
||||
return .init(keyData: Data(xoredBytes))
|
||||
}
|
||||
|
||||
// MARK:
|
||||
|
||||
override public func isEqual(_ object: Any?) -> Bool {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user