diff --git a/Pods b/Pods
index 6fae72d48..693c9ae5f 160000
--- a/Pods
+++ b/Pods
@@ -1 +1 @@
-Subproject commit 6fae72d48c06c35c8219ebfc58116450c473b8f1
+Subproject commit 693c9ae5f51386e0570110a98541952bdfd62963
diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist
index 342d37adb..92e102579 100644
--- a/Signal/Signal-Info.plist
+++ b/Signal/Signal-Info.plist
@@ -5,9 +5,9 @@
BuildDetails
CarthageVersion
- 0.34.0
+ 0.33.0
OSXVersion
- 10.15.3
+ 10.15.1
WebRTCCommit
1445d719bf05280270e9f77576f80f973fd847f8 M73
diff --git a/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift b/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift
index 4cb21c49e..53aae20c7 100644
--- a/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift
+++ b/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift
@@ -1,4 +1,5 @@
import PromiseKit
+import SignalMetadataKit
/// Base class for `LokiFileServerAPI` and `LokiPublicChatAPI`.
public class LokiDotNetAPI : NSObject {
diff --git a/SignalServiceKit/src/Loki/API/LokiFileServerProxy.swift b/SignalServiceKit/src/Loki/API/LokiFileServerProxy.swift
index d3a007f3b..0982cc492 100644
--- a/SignalServiceKit/src/Loki/API/LokiFileServerProxy.swift
+++ b/SignalServiceKit/src/Loki/API/LokiFileServerProxy.swift
@@ -1,4 +1,5 @@
import PromiseKit
+import SignalMetadataKit
internal class LokiFileServerProxy : LokiHTTPClient {
private let server: String
diff --git a/SignalServiceKit/src/Loki/API/LokiSnodeProxy.swift b/SignalServiceKit/src/Loki/API/LokiSnodeProxy.swift
index 3898e36ed..1f55d8ca5 100644
--- a/SignalServiceKit/src/Loki/API/LokiSnodeProxy.swift
+++ b/SignalServiceKit/src/Loki/API/LokiSnodeProxy.swift
@@ -1,4 +1,5 @@
import PromiseKit
+import SignalMetadataKit
internal class LokiSnodeProxy : LokiHTTPClient {
private let target: LokiAPITarget
diff --git a/SignalServiceKit/src/Loki/Crypto/DiffieHellman.swift b/SignalServiceKit/src/Loki/Crypto/DiffieHellman.swift
deleted file mode 100644
index 946f02aea..000000000
--- a/SignalServiceKit/src/Loki/Crypto/DiffieHellman.swift
+++ /dev/null
@@ -1,47 +0,0 @@
-import CryptoSwift
-import Curve25519Kit
-
-@objc public final class DiffieHellman : NSObject {
-
- @objc public class DiffieHellmanError : NSError { // Not called `Error` for Obj-C interoperablity
-
- @objc public static let decryptionFailed = DiffieHellmanError(domain: "DiffieHellmanErrorDomain", code: 1, userInfo: [ NSLocalizedDescriptionKey : "Couldn't decrypt data." ])
- }
-
- public static let ivLength: Int32 = 16;
-
- private override init() { }
-
- public static func encrypt(_ plainTextData: Data, using symmetricKey: Data) throws -> Data {
- let iv = Randomness.generateRandomBytes(ivLength)!
- let ivBytes = [UInt8](iv)
- let symmetricKeyBytes = [UInt8](symmetricKey)
- let messageBytes = [UInt8](plainTextData)
- let blockMode = CBC(iv: ivBytes)
- let aes = try AES(key: symmetricKeyBytes, blockMode: blockMode)
- let cipherText = try aes.encrypt(messageBytes)
- let ivAndCipher = ivBytes + cipherText
- return Data(bytes: ivAndCipher, count: ivAndCipher.count)
- }
-
- public static func encrypt(_ plainTextData: Data, publicKey: Data, privateKey: Data) throws -> Data {
- let symmetricKey = try Curve25519.generateSharedSecret(fromPublicKey: publicKey, privateKey: privateKey)
- return try encrypt(plainTextData, using: symmetricKey)
- }
-
- public static func decrypt(_ encryptedData: Data, using symmetricKey: Data) throws -> Data {
- let symmetricKeyBytes = [UInt8](symmetricKey)
- guard encryptedData.count >= ivLength else { throw DiffieHellmanError.decryptionFailed }
- let ivBytes = [UInt8](encryptedData[.. Data {
- let symmetricKey = try Curve25519.generateSharedSecret(fromPublicKey: publicKey, privateKey: privateKey)
- return try decrypt(encryptedData, using: symmetricKey)
- }
-}
diff --git a/SignalServiceKit/src/Loki/Crypto/FallbackSessionCipher.swift b/SignalServiceKit/src/Loki/Crypto/FallbackSessionCipher.swift
deleted file mode 100644
index bb3f77dff..000000000
--- a/SignalServiceKit/src/Loki/Crypto/FallbackSessionCipher.swift
+++ /dev/null
@@ -1,95 +0,0 @@
-import CryptoSwift
-import Curve25519Kit
-
-private extension String {
-
- // Convert hex string to Data
- fileprivate var hexData: Data {
- var hex = self
- var data = Data()
- while(hex.count > 0) {
- let subIndex = hex.index(hex.startIndex, offsetBy: 2)
- let c = String(hex[.. Data? {
- guard let symmetricKey = symmetricKey else { return nil }
- do {
- return try DiffieHellman.encrypt(message, using: symmetricKey)
- } catch {
- Logger.warn("FallBackSessionCipher: Failed to encrypt message")
- return nil
- }
- }
-
- /// Decrypt a message
- ///
- /// - Parameter message: The message to decrypt
- /// - Returns: The decrypted message or `nil` if it failed
- @objc public func decrypt(message: Data) -> Data? {
- guard let symmetricKey = symmetricKey else { return nil }
- do {
- return try DiffieHellman.decrypt(message, using: symmetricKey)
- } catch {
- Logger.warn("FallBackSessionCipher: Failed to decrypt message")
- return nil
- }
- }
-}
diff --git a/SignalServiceKit/src/Messages/OWSMessageDecrypter.m b/SignalServiceKit/src/Messages/OWSMessageDecrypter.m
index 600ceadd2..6924747e2 100644
--- a/SignalServiceKit/src/Messages/OWSMessageDecrypter.m
+++ b/SignalServiceKit/src/Messages/OWSMessageDecrypter.m
@@ -336,7 +336,8 @@ NSError *EnsureDecryptError(NSError *_Nullable error, NSString *fallbackErrorDes
}
NSString *recipientId = envelope.source;
- FallBackSessionCipher *cipher = [[FallBackSessionCipher alloc] initWithRecipientId:recipientId identityKeyStore:self.identityManager];
+ ECKeyPair *identityKeyPair = self.identityManager.identityKeyPair;
+ FallBackSessionCipher *cipher = [[FallBackSessionCipher alloc] initWithRecipientId:recipientId privateKey:identityKeyPair.privateKey];
NSData *_Nullable plaintextData = [[cipher decryptWithMessage:encryptedData] removePadding];
if (!plaintextData) {
diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m
index de5102393..066d66206 100644
--- a/SignalServiceKit/src/Messages/OWSMessageSender.m
+++ b/SignalServiceKit/src/Messages/OWSMessageSender.m
@@ -1924,7 +1924,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
NSString *recipientId = recipient.recipientId;
TSOutgoingMessage *message = messageSend.message;
- FallBackSessionCipher *cipher = [[FallBackSessionCipher alloc] initWithRecipientId:recipientId identityKeyStore:self.identityManager];
+ ECKeyPair *identityKeyPair = self.identityManager.identityKeyPair;
+ FallBackSessionCipher *cipher = [[FallBackSessionCipher alloc] initWithRecipientId:recipientId privateKey:identityKeyPair.privateKey];
// This will return nil if encryption failed
NSData *_Nullable serializedMessage = [cipher encryptWithMessage:[plainText paddedMessageBody]];