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() {
let contents = ImageEditorContents()
let imagePath = writeDummyImage()
let contents = ImageEditorContents(imagePath: imagePath,
imageSizePixels: CGSize(width: 1, height: 1))
XCTAssertEqual(0, contents.itemMap.count)
let item = ImageEditorItem(itemType: .test)

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

@ -4,6 +4,7 @@
import Foundation
import Curve25519Kit
import AxolotlKit
@objc
public enum DeviceNameError: Int, Error {
@ -59,7 +60,11 @@ public class DeviceNames: NSObject {
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,
ciphertext: ciphertext.ciphertext)
let protoData = try protoBuilder.buildSerializedData()
@ -107,26 +112,35 @@ public class DeviceNames: NSObject {
}
@objc
public class func decryptDeviceName(inputString: String,
public class func decryptDeviceName(base64String: 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.
throw DeviceNameError.invalidInput
}
return try decryptDeviceName(inputData: inputData,
return try decryptDeviceName(protoData: protoData,
identityKeyPair: identityKeyPair)
}
@objc
public class func decryptDeviceName(inputData: Data,
public class func decryptDeviceName(base64Data: Data,
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.
throw DeviceNameError.invalidInput
}
return try decryptDeviceName(protoData: protoData,
identityKeyPair: identityKeyPair)
}
@objc
public class func decryptDeviceName(protoData: Data,
identityKeyPair: ECKeyPair) throws -> String {
let proto: SignalIOSProtoDeviceName
do {
proto = try SignalIOSProtoDeviceName.parseData(protoData)
@ -136,10 +150,18 @@ public class DeviceNames: NSObject {
throw DeviceNameError.invalidInput
}
let ephemeralPublic = proto.ephemeralPublic
let ephemeralPublicData = proto.ephemeralPublic
let receivedSyntheticIV = proto.syntheticIv
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 {
owsFailDebug("Invalid ephemeral public.")
throw DeviceNameError.assertionFailure

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

Loading…
Cancel
Save