From 0e5d4f2b3c30be42874097fd191bd394946fb1c5 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 25 Sep 2018 16:53:29 -0400 Subject: [PATCH] Respond to CR. --- SignalMetadataKit/src/ECPublicKey.swift | 2 +- .../src/SMKSecretSessionCipher.swift | 6 +++--- .../src/SMKUnidentifiedSenderMessage.swift | 2 +- SignalMetadataKitTests/src/SMKObjCTest.m | 19 ++++++++++--------- .../src/SMKSecretSessionCipherTest.swift | 15 ++++++++++----- .../src/SMKSenderCertificateTest.swift | 5 ++++- .../src/SMKServerCertificateTest.swift | 4 +++- protobuf/README.md | 5 +++-- 8 files changed, 35 insertions(+), 23 deletions(-) diff --git a/SignalMetadataKit/src/ECPublicKey.swift b/SignalMetadataKit/src/ECPublicKey.swift index e0705df..7419e80 100644 --- a/SignalMetadataKit/src/ECPublicKey.swift +++ b/SignalMetadataKit/src/ECPublicKey.swift @@ -22,7 +22,7 @@ import Foundation // https://github.com/signalapp/libsignal-protocol-java/blob/master/java/src/main/java/org/whispersystems/libsignal/ecc/Curve.java#L30 public init(serializedKeyData: Data) throws { - let parser = DataParser(data: serializedKeyData) + let parser = OWSDataParser(data: serializedKeyData) let typeByte = try parser.nextByte(name: "type byte") guard typeByte == ECPublicKey.keyTypeDJB else { diff --git a/SignalMetadataKit/src/SMKSecretSessionCipher.swift b/SignalMetadataKit/src/SMKSecretSessionCipher.swift index 2bf76c5..3e247cf 100644 --- a/SignalMetadataKit/src/SMKSecretSessionCipher.swift +++ b/SignalMetadataKit/src/SMKSecretSessionCipher.swift @@ -333,7 +333,7 @@ private class SMKStaticKeys: NSObject { throw SMKError.assertionError(description: "\(logTag) derived ephemeral has unexpected length: \(ephemeralDerived.count).") } - let ephemeralDerivedParser = DataParser(data: ephemeralDerived) + let ephemeralDerivedParser = OWSDataParser(data: ephemeralDerived) let chainKey = try ephemeralDerivedParser.nextData(length: 32, name: "chain key") let cipherKey = try ephemeralDerivedParser.nextData(length: 32, name: "cipher key") let macKey = try ephemeralDerivedParser.nextData(length: 32, name: "mac key") @@ -374,7 +374,7 @@ private class SMKStaticKeys: NSObject { } // byte[][] staticDerivedParts = ByteUtil.split(staticDerived, 32, 32, 32); - let staticDerivedParser = DataParser(data: staticDerived) + let staticDerivedParser = OWSDataParser(data: staticDerived) _ = try staticDerivedParser.nextData(length: 32) let cipherKey = try staticDerivedParser.nextData(length: 32) let macKey = try staticDerivedParser.nextData(length: 32) @@ -480,7 +480,7 @@ private class SMKStaticKeys: NSObject { } // byte[][] ciphertextParts = ByteUtil.split(ciphertext, ciphertext.count - 10, 10); - let cipherTextWithMacParser = DataParser(data: cipherTextWithMac) + let cipherTextWithMacParser = OWSDataParser(data: cipherTextWithMac) let cipherTextLength = UInt(cipherTextWithMac.count) - kSMKSecretSessionCipherMacLength let cipherText = try cipherTextWithMacParser.nextData(length: cipherTextLength, name: "cipher text") let theirMac = try cipherTextWithMacParser.nextData(length: kSMKSecretSessionCipherMacLength, name: "their mac") diff --git a/SignalMetadataKit/src/SMKUnidentifiedSenderMessage.swift b/SignalMetadataKit/src/SMKUnidentifiedSenderMessage.swift index e966348..5592d2e 100644 --- a/SignalMetadataKit/src/SMKUnidentifiedSenderMessage.swift +++ b/SignalMetadataKit/src/SMKUnidentifiedSenderMessage.swift @@ -37,7 +37,7 @@ import Foundation // public UnidentifiedSenderMessage(byte[] serialized) // throws InvalidMetadataMessageException, InvalidMetadataVersionException - let parser = DataParser(data: dataAndPrefix) + let parser = OWSDataParser(data: dataAndPrefix) // this.version = ByteUtil.highBitsToInt(serialized[0]); let versionByte = try parser.nextByte(name: "version byte") diff --git a/SignalMetadataKitTests/src/SMKObjCTest.m b/SignalMetadataKitTests/src/SMKObjCTest.m index eab1db0..f40df22 100644 --- a/SignalMetadataKitTests/src/SMKObjCTest.m +++ b/SignalMetadataKitTests/src/SMKObjCTest.m @@ -6,14 +6,15 @@ NS_ASSUME_NONNULL_BEGIN -@interface SMKObjCTest : XCTestCase - -@end - -#pragma mark - - -@implementation SMKObjCTest - -@end +// Cocoapods-generated test targets (like this one) +// fail to link if: +// +// * They only contain Swift tests. +// * They depend on pods that use Obj-C. +// +// The work around is to add (this) empty Obj-C file +// to our test target. +// +// See: https://github.com/CocoaPods/CocoaPods/issues/7170 NS_ASSUME_NONNULL_END diff --git a/SignalMetadataKitTests/src/SMKSecretSessionCipherTest.swift b/SignalMetadataKitTests/src/SMKSecretSessionCipherTest.swift index 3319b35..82436d7 100644 --- a/SignalMetadataKitTests/src/SMKSecretSessionCipherTest.swift +++ b/SignalMetadataKitTests/src/SMKSecretSessionCipherTest.swift @@ -2,9 +2,12 @@ // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // +import XCTest +import SignalMetadataKit + // https://github.com/signalapp/libsignal-metadata-java/blob/master/tests/src/test/java/org/signal/libsignal/metadata/SecretSessionCipherTest.java // public class SecretSessionCipherTest extends TestCase { -class SMKSecretSessionCipherTest: SignalBaseTest { +class SMKSecretSessionCipherTest: XCTestCase { override func setUp() { super.setUp() @@ -121,9 +124,10 @@ class SMKSecretSessionCipherTest: SignalBaseTest { timestamp: 31335, protocolContext: nil) XCTFail("Decryption should have failed.") - } catch { + } catch _ as SMKCertificateError { // Decryption is expected to fail. - XCTAssertTrue(error is SMKError) + } catch { + XCTFail("Unexpected error: \(error)") } } @@ -177,9 +181,10 @@ class SMKSecretSessionCipherTest: SignalBaseTest { timestamp: 31338, protocolContext: nil) XCTFail("Decryption should have failed.") - } catch { + } catch _ as SMKCertificateError { // Decryption is expected to fail. - XCTAssertTrue(error is SMKError) + } catch { + XCTFail("Unexpected error: \(error)") } } diff --git a/SignalMetadataKitTests/src/SMKSenderCertificateTest.swift b/SignalMetadataKitTests/src/SMKSenderCertificateTest.swift index 25df47c..f481a84 100644 --- a/SignalMetadataKitTests/src/SMKSenderCertificateTest.swift +++ b/SignalMetadataKitTests/src/SMKSenderCertificateTest.swift @@ -2,10 +2,13 @@ // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // +import XCTest +import SignalMetadataKit + // See: https://github.com/signalapp/libsignal-metadata-java/blob/master/tests/src/test/java/org/signal/libsignal/metadata/certificate/SenderCertificateTest.java // //public class SenderCertificateTest extends TestCase { -class SMKSenderCertificateTest: SignalBaseTest { +class SMKSenderCertificateTest: XCTestCase { override func setUp() { super.setUp() diff --git a/SignalMetadataKitTests/src/SMKServerCertificateTest.swift b/SignalMetadataKitTests/src/SMKServerCertificateTest.swift index 8d4b4c2..30df34d 100644 --- a/SignalMetadataKitTests/src/SMKServerCertificateTest.swift +++ b/SignalMetadataKitTests/src/SMKServerCertificateTest.swift @@ -2,12 +2,14 @@ // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // +import XCTest import SwiftProtobuf +import SignalMetadataKit // See: https://github.com/signalapp/libsignal-metadata-java/blob/master/tests/src/test/java/org/signal/libsignal/metadata/certificate/ServerCertificateTest.java // // public class ServerCertificateTest extends TestCase { -class SMKServerCertificateTest: SignalBaseTest { +class SMKServerCertificateTest: XCTestCase { override func setUp() { super.setUp() diff --git a/protobuf/README.md b/protobuf/README.md index 1718ff7..ece2f35 100644 --- a/protobuf/README.md +++ b/protobuf/README.md @@ -1,6 +1,6 @@ # SignalServiceKit Protobufs -These protobuf definitions are copied from Signal-Android, but modified +These protobuf definitions are copied from libsignal-metadata-java, but modified to match some iOS conventions. ## Prequisites @@ -17,6 +17,7 @@ files. ## Building Protobuf - cd ~/src/WhisperSystems/SignalServiceKit/protobuf + // Make sure that Signal-iOS is checked out alongside this repo, at the path: [repo root]/../Signal-iOS + cd [repo root]/protobuf make