enable send UD message

pull/82/head
Ryan ZHAO 5 years ago
parent 372bfcbb4c
commit 3f43a05df6

@ -7,7 +7,7 @@
<key>CarthageVersion</key> <key>CarthageVersion</key>
<string>0.34.0</string> <string>0.34.0</string>
<key>OSXVersion</key> <key>OSXVersion</key>
<string>10.15.1</string> <string>10.15.2</string>
<key>WebRTCCommit</key> <key>WebRTCCommit</key>
<string>1445d719bf05280270e9f77576f80f973fd847f8 M73</string> <string>1445d719bf05280270e9f77576f80f973fd847f8 M73</string>
</dict> </dict>

@ -620,6 +620,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
failure:(RetryableFailureHandler)failureHandlerParam failure:(RetryableFailureHandler)failureHandlerParam
{ {
AssertIsOnSendingQueue(); AssertIsOnSendingQueue();
OWSAssert(senderCertificate);
void (^successHandler)(void) = ^() { void (^successHandler)(void) = ^() {
dispatch_async([OWSDispatch sendingQueue], ^{ dispatch_async([OWSDispatch sendingQueue], ^{
@ -958,7 +959,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
NSString *contactID = messageSend.recipient.recipientId; NSString *contactID = messageSend.recipient.recipientId;
BOOL isGroupMessage = messageSend.thread.isGroupThread; BOOL isGroupMessage = messageSend.thread.isGroupThread;
BOOL isDeviceLinkMessage = [message isKindOfClass:LKDeviceLinkMessage.class]; BOOL isDeviceLinkMessage = [message isKindOfClass:LKDeviceLinkMessage.class];
if (isGroupMessage || isDeviceLinkMessage) { if (isGroupMessage || isDeviceLinkMessage || messageSend.isUDSend) {
[self sendMessage:messageSend]; [self sendMessage:messageSend];
} else { } else {
BOOL isSilentMessage = message.isSilent || [message isKindOfClass:LKEphemeralMessage.class] || [message isKindOfClass:OWSOutgoingSyncMessage.class]; BOOL isSilentMessage = message.isSilent || [message isKindOfClass:LKEphemeralMessage.class] || [message isKindOfClass:OWSOutgoingSyncMessage.class];

@ -417,7 +417,8 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
// Try to obtain a new sender certificate. // Try to obtain a new sender certificate.
return firstly { return firstly {
requestSenderCertificate() // requestSenderCertificate()
generateSenderCertificate()
}.map { (certificateData: Data, certificate: SMKSenderCertificate) in }.map { (certificateData: Data, certificate: SMKSenderCertificate) in
// Cache the current sender certificate. // Cache the current sender certificate.
@ -427,6 +428,19 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
} }
} }
private func generateSenderCertificate() -> Promise<(certificateData: Data, certificate: SMKSenderCertificate)> {
return Promise<(certificateData: Data, certificate: SMKSenderCertificate)> { seal in
//Loki: Generate a sender certifate locally
let sender = OWSIdentityManager.shared().identityKeyPair()?.hexEncodedPublicKey
let certificate = SMKSenderCertificate(senderDeviceId: OWSDevicePrimaryDeviceId, senderRecipientId: sender!)
let certificateData = try certificate.serialized()
guard self.isValidCertificate(certificate) else {
throw OWSUDError.invalidData(description: "Invalid sender certificate returned by server")
}
seal.fulfill((certificateData: certificateData, certificate: certificate))
}
}
private func requestSenderCertificate() -> Promise<(certificateData: Data, certificate: SMKSenderCertificate)> { private func requestSenderCertificate() -> Promise<(certificateData: Data, certificate: SMKSenderCertificate)> {
return firstly { return firstly {
SignalServiceRestClient().requestUDSenderCertificate() SignalServiceRestClient().requestUDSenderCertificate()

Loading…
Cancel
Save