Fix issues from integration testing.

pull/1/head
Matthew Chen 7 years ago
parent cd194af31a
commit 1d905119ac

@ -26,7 +26,10 @@ class ImageEditorTest: SignalBaseTest {
} }
func testImageEditorContents() { func testImageEditorContents() {
let contents = ImageEditorContents() let imagePath = writeDummyImage()
let contents = ImageEditorContents(imagePath: imagePath,
imageSizePixels: CGSize(width: 1, height: 1))
XCTAssertEqual(0, contents.itemMap.count) XCTAssertEqual(0, contents.itemMap.count)
let item = ImageEditorItem(itemType: .test) let item = ImageEditorItem(itemType: .test)

@ -288,7 +288,7 @@ NSString *const kOWSPrimaryStorage_MayHaveLinkedDevices = @"kTSStorageManager_Ma
if (identityKeyPair) { if (identityKeyPair) {
NSError *error; NSError *error;
NSString *_Nullable decryptedName = NSString *_Nullable decryptedName =
[DeviceNames decryptDeviceNameWithInputString:self.name identityKeyPair:identityKeyPair error:&error]; [DeviceNames decryptDeviceNameWithBase64String:self.name identityKeyPair:identityKeyPair error:&error];
if (error) { if (error) {
// Not necessarily an error; might be a legacy device name. // Not necessarily an error; might be a legacy device name.
OWSLogError(@"Could not decrypt device name: %@", error); OWSLogError(@"Could not decrypt device name: %@", error);

@ -4,6 +4,7 @@
import Foundation import Foundation
import Curve25519Kit import Curve25519Kit
import AxolotlKit
@objc @objc
public enum DeviceNameError: Int, Error { public enum DeviceNameError: Int, Error {
@ -59,7 +60,11 @@ public class DeviceNames: NSObject {
throw DeviceNameError.assertionFailure throw DeviceNameError.assertionFailure
} }
let protoBuilder = SignalIOSProtoDeviceName.builder(ephemeralPublic: ephemeralKeyPair.publicKey, guard let keyData = (ephemeralKeyPair.publicKey as NSData).prependKeyType() else {
owsFailDebug("Could not prepend key type.")
throw DeviceNameError.assertionFailure
}
let protoBuilder = SignalIOSProtoDeviceName.builder(ephemeralPublic: keyData as Data,
syntheticIv: syntheticIV, syntheticIv: syntheticIV,
ciphertext: ciphertext.ciphertext) ciphertext: ciphertext.ciphertext)
let protoData = try protoBuilder.buildSerializedData() let protoData = try protoBuilder.buildSerializedData()
@ -107,26 +112,35 @@ public class DeviceNames: NSObject {
} }
@objc @objc
public class func decryptDeviceName(inputString: String, public class func decryptDeviceName(base64String: String,
identityKeyPair: ECKeyPair) throws -> String { identityKeyPair: ECKeyPair) throws -> String {
guard let inputData = Data(base64Encoded: inputString) else {
guard let protoData = Data(base64Encoded: base64String) else {
// Not necessarily an error; might be a legacy device name. // Not necessarily an error; might be a legacy device name.
throw DeviceNameError.invalidInput throw DeviceNameError.invalidInput
} }
return try decryptDeviceName(inputData: inputData, return try decryptDeviceName(protoData: protoData,
identityKeyPair: identityKeyPair) identityKeyPair: identityKeyPair)
} }
@objc @objc
public class func decryptDeviceName(inputData: Data, public class func decryptDeviceName(base64Data: Data,
identityKeyPair: ECKeyPair) throws -> String { identityKeyPair: ECKeyPair) throws -> String {
guard let protoData = Data(base64Encoded: inputData) else { guard let protoData = Data(base64Encoded: base64Data) else {
// Not necessarily an error; might be a legacy device name. // Not necessarily an error; might be a legacy device name.
throw DeviceNameError.invalidInput throw DeviceNameError.invalidInput
} }
return try decryptDeviceName(protoData: protoData,
identityKeyPair: identityKeyPair)
}
@objc
public class func decryptDeviceName(protoData: Data,
identityKeyPair: ECKeyPair) throws -> String {
let proto: SignalIOSProtoDeviceName let proto: SignalIOSProtoDeviceName
do { do {
proto = try SignalIOSProtoDeviceName.parseData(protoData) proto = try SignalIOSProtoDeviceName.parseData(protoData)
@ -136,10 +150,18 @@ public class DeviceNames: NSObject {
throw DeviceNameError.invalidInput throw DeviceNameError.invalidInput
} }
let ephemeralPublic = proto.ephemeralPublic let ephemeralPublicData = proto.ephemeralPublic
let receivedSyntheticIV = proto.syntheticIv let receivedSyntheticIV = proto.syntheticIv
let ciphertext = proto.ciphertext let ciphertext = proto.ciphertext
let ephemeralPublic: Data
do {
ephemeralPublic = try (ephemeralPublicData as NSData).removeKeyType() as Data
} catch {
owsFailDebug("failed to remove key type")
throw DeviceNameError.invalidInput
}
guard ephemeralPublic.count > 0 else { guard ephemeralPublic.count > 0 else {
owsFailDebug("Invalid ephemeral public.") owsFailDebug("Invalid ephemeral public.")
throw DeviceNameError.assertionFailure throw DeviceNameError.assertionFailure

@ -31,7 +31,7 @@ class DeviceNamesTest: SSKBaseTestSwift {
} }
do { do {
_ = try DeviceNames.decryptDeviceName(inputData: plaintextData, _ = try DeviceNames.decryptDeviceName(base64Data: plaintextData,
identityKeyPair: identityKeyPair) identityKeyPair: identityKeyPair)
XCTFail("Unexpectedly did not throw error.") XCTFail("Unexpectedly did not throw error.")
} catch DeviceNameError.invalidInput { } catch DeviceNameError.invalidInput {
@ -53,7 +53,7 @@ class DeviceNamesTest: SSKBaseTestSwift {
let base64Data = plaintextData.base64EncodedData() let base64Data = plaintextData.base64EncodedData()
do { do {
_ = try DeviceNames.decryptDeviceName(inputData: base64Data, _ = try DeviceNames.decryptDeviceName(base64Data: base64Data,
identityKeyPair: identityKeyPair) identityKeyPair: identityKeyPair)
XCTFail("Unexpectedly did not throw error.") XCTFail("Unexpectedly did not throw error.")
} catch DeviceNameError.invalidInput { } catch DeviceNameError.invalidInput {
@ -79,7 +79,7 @@ class DeviceNamesTest: SSKBaseTestSwift {
let decrypted: String let decrypted: String
do { do {
decrypted = try DeviceNames.decryptDeviceName(inputData: encrypted, decrypted = try DeviceNames.decryptDeviceName(base64Data: encrypted,
identityKeyPair: identityKeyPair) identityKeyPair: identityKeyPair)
} catch { } catch {
XCTFail("Failed with error: \(error)") XCTFail("Failed with error: \(error)")

Loading…
Cancel
Save