66 lines
2.3 KiB
Swift
66 lines
2.3 KiB
Swift
//
|
|
// Copyright 2018 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
import LibSignalClient
|
|
import XCTest
|
|
|
|
@testable import SignalServiceKit
|
|
|
|
class DeviceNamesTest: XCTestCase {
|
|
func testNotEncrypted() {
|
|
let identityKeyPair = IdentityKeyPair.generate()
|
|
|
|
let plaintext = "alice"
|
|
|
|
do {
|
|
_ = try DeviceNames.decryptDeviceName(base64String: plaintext, identityKeyPair: identityKeyPair)
|
|
XCTFail("Unexpectedly did not throw error.")
|
|
} catch DeviceNameError.invalidInput {
|
|
// Expected error.
|
|
} catch {
|
|
XCTFail("Unexpected \(error)")
|
|
}
|
|
}
|
|
|
|
func testStable() throws {
|
|
let identityPrivateKey = try PrivateKey(Array(repeating: 0, count: 31) + [0x41])
|
|
let identityKeyPair = IdentityKeyPair(publicKey: identityPrivateKey.publicKey, privateKey: identityPrivateKey)
|
|
|
|
let encryptedDeviceName = try XCTUnwrap(Data(
|
|
base64Encoded: "CiEFrYxIwmdlrqetxTYolgXBq+qVBQCT29IYyWq9JIGgNWUSEFNO1AI2/J8BQ+9Re91Y5OcaBsNYrahasg=="
|
|
))
|
|
|
|
let deviceName = try DeviceNames.decryptDeviceName(protoData: encryptedDeviceName, identityKeyPair: identityKeyPair)
|
|
XCTAssertEqual(deviceName, "Abc123")
|
|
}
|
|
|
|
func testEncrypted() {
|
|
let identityKeyPair = IdentityKeyPair.generate()
|
|
|
|
let encrypted = try! DeviceNames.encryptDeviceName(plaintext: "alice", identityKeyPair: identityKeyPair)
|
|
let payload = encrypted.base64EncodedString()
|
|
|
|
let decrypted = try! DeviceNames.decryptDeviceName(base64String: payload, identityKeyPair: identityKeyPair)
|
|
XCTAssertEqual("alice", decrypted)
|
|
}
|
|
|
|
func testBadlyEncrypted() {
|
|
let identityKeyPair = IdentityKeyPair.generate()
|
|
|
|
let encrypted = try! DeviceNames.encryptDeviceName(plaintext: "alice", identityKeyPair: identityKeyPair)
|
|
let payload = encrypted.base64EncodedString()
|
|
|
|
let otherKeyPair = IdentityKeyPair.generate()
|
|
do {
|
|
_ = try DeviceNames.decryptDeviceName(base64String: payload, identityKeyPair: otherKeyPair)
|
|
XCTFail("Unexpectedly did not throw error.")
|
|
} catch DeviceNameError.cryptError {
|
|
// Expected error.
|
|
} catch {
|
|
XCTFail("Unexpected \(error)")
|
|
}
|
|
}
|
|
}
|