70 lines
2.1 KiB
Swift
70 lines
2.1 KiB
Swift
//
|
|
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import XCTest
|
|
import Curve25519Kit
|
|
|
|
@testable import SignalServiceKit
|
|
|
|
class DeviceNamesTest: SSKBaseTestSwift {
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
}
|
|
|
|
override func tearDown() {
|
|
super.tearDown()
|
|
}
|
|
|
|
// MARK:
|
|
|
|
func testNotEncrypted() {
|
|
let identityKeyPair = Curve25519.generateKeyPair()
|
|
|
|
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 testEncrypted() {
|
|
let identityKeyPair = Curve25519.generateKeyPair()
|
|
|
|
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 = Curve25519.generateKeyPair()
|
|
|
|
let encrypted = try! DeviceNames.encryptDeviceName(plaintext: "alice",
|
|
identityKeyPair: identityKeyPair)
|
|
let payload = encrypted.base64EncodedString()
|
|
|
|
let otherKeyPair = Curve25519.generateKeyPair()
|
|
do {
|
|
_ = try DeviceNames.decryptDeviceName(base64String: payload,
|
|
identityKeyPair: otherKeyPair)
|
|
XCTFail("Unexpectedly did not throw error.")
|
|
} catch DeviceNameError.cryptError {
|
|
// Expected error.
|
|
} catch {
|
|
XCTFail("Unexpected \(error)")
|
|
}
|
|
}
|
|
}
|