Files
libsignal/swift/Tests/LibSignalClientTests/HsmEnclaveTests.swift
Jordan Rose 9e13263581 Switch to swift-format for formatting instead of swiftformat
swift-format is owned by the Swift project and is generally less
opinionated than swiftformat (but better at formatting to a limited
line length).
2025-06-25 11:24:57 -07:00

78 lines
3.4 KiB
Swift

//
// Copyright 2021 Signal Messenger, LLC.
// SPDX-License-Identifier: AGPL-3.0-only
//
import LibSignalClient
import XCTest
class HsmEnclaveTests: TestCaseBase {
func testCreateClient() {
let validKey = IdentityKeyPair.generate().publicKey
var hashes = HsmCodeHashList()
try! hashes.append(
Data([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
])
)
try! hashes.append(
Data([
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
])
)
let hsmEnclaveClient = try! HsmEnclaveClient(publicKey: validKey.keyBytes, codeHashes: hashes)
let initialMessage = hsmEnclaveClient.initialRequest()
XCTAssertEqual(112, initialMessage.count)
}
func testCreateClientFailsWithNoHashes() {
let validKey = IdentityKeyPair.generate().publicKey
let hashes = HsmCodeHashList()
XCTAssertThrowsError(try HsmEnclaveClient(publicKey: validKey.keyBytes, codeHashes: hashes))
}
func testCompleteHandshakeWithoutInitialRequest() {
let validKey = IdentityKeyPair.generate().publicKey
var hashes = HsmCodeHashList()
try! hashes.append(
Data([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
])
)
let hsmEnclaveClient = try! HsmEnclaveClient(publicKey: validKey.keyBytes, codeHashes: hashes)
let handshakeResponse: [UInt8] = [0x01, 0x02, 0x03]
XCTAssertThrowsError(try hsmEnclaveClient.completeHandshake(handshakeResponse))
}
func testEstablishedSendFailsPriorToEstablishment() {
let validKey = IdentityKeyPair.generate().publicKey
var hashes = HsmCodeHashList()
try! hashes.append(
Data([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
])
)
let hsmEnclaveClient = try! HsmEnclaveClient(publicKey: validKey.keyBytes, codeHashes: hashes)
let plaintextToSend: [UInt8] = [0x01, 0x02, 0x03]
XCTAssertThrowsError(try hsmEnclaveClient.establishedSend(plaintextToSend))
}
func testEstablishedRecvFailsPriorToEstablishment() {
let validKey = IdentityKeyPair.generate().publicKey
var hashes = HsmCodeHashList()
try! hashes.append(
Data([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
])
)
let hsmEnclaveClient = try! HsmEnclaveClient(publicKey: validKey.keyBytes, codeHashes: hashes)
let receivedCiphertext: [UInt8] = [0x01, 0x02, 0x03]
XCTAssertThrowsError(try hsmEnclaveClient.establishedRecv(receivedCiphertext))
}
}