diff --git a/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift b/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift index 301965b6c..6e2c309c0 100644 --- a/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift +++ b/SignalServiceKit/src/Contacts/OWSContactDiscoveryOperation.swift @@ -390,12 +390,10 @@ class CDSBatchOperation: OWSOperation { func parseAndDecrypt(response: Any?, remoteAttestation: RemoteAttestation) throws -> Data { - guard let responseDict = response as? [String: AnyObject] else { + guard let params = ParamParser(responseObject: response) else { throw ContactDiscoveryError.parseError(description: "missing response dict") } - let params = ParamParser(dictionary: responseDict) - let cipherText = try params.requiredBase64EncodedData(key: "data") let initializationVector = try params.requiredBase64EncodedData(key: "iv") let authTag = try params.requiredBase64EncodedData(key: "mac") diff --git a/SignalServiceKit/src/Util/ParamParser.swift b/SignalServiceKit/src/Util/ParamParser.swift index 9fea969f7..9a470ebb6 100644 --- a/SignalServiceKit/src/Util/ParamParser.swift +++ b/SignalServiceKit/src/Util/ParamParser.swift @@ -34,6 +34,14 @@ public class ParamParser { self.dictionary = dictionary } + public convenience init?(responseObject: Any?) { + guard let responseDict = responseObject as? [String: AnyObject] else { + return nil + } + + self.init(dictionary: responseDict) + } + // MARK: Errors public enum ParseError: Error {