Files
Luma/Tests/CryptoKitAESGCMEngineTests.swift
T
wt 88616124b6
iOS CI / Build and Test SwiftUI App (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build Unsigned iOS IPA (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build macOS ZIP (push) Canceled after 0s
more fixes for tests
2026-08-11 15:42:01 +07:00

67 lines
1.7 KiB
Swift

import XCTest
@testable import Luma
final class CryptoKitAESGCMEngineTests: XCTestCase {
func testRoundTrip() {
let engine = CryptoKitAESGCMEngine()
let key = Data(repeating: 0x31, count: 16)
let iv = Data(repeating: 0x22, count: 12)
let plaintext = Data("hello omemo".utf8)
var ciphertext = Data()
var tag = Data()
XCTAssertTrue(
engine.encrypt(iv: iv, key: key, message: plaintext, output: &ciphertext, tag: &tag))
var decrypted = Data()
XCTAssertTrue(
engine.decrypt(iv: iv, key: key, encoded: ciphertext, auth: tag, output: &decrypted))
XCTAssertEqual(decrypted, plaintext)
}
func testModifiedTagFails() {
let engine = CryptoKitAESGCMEngine()
let key = Data(repeating: 0x31, count: 16)
let iv = Data(repeating: 0x22, count: 12)
var ciphertext = Data()
var tag = Data()
guard
engine.encrypt(
iv: iv,
key: key,
message: Data("secret".utf8),
output: &ciphertext,
tag: &tag
)
else {
XCTFail("AES-GCM encryption unexpectedly failed")
return
}
XCTAssertEqual(tag.count, 16)
guard tag.count == 16 else {
return
}
var modifiedTag = tag
modifiedTag[modifiedTag.startIndex] ^= 0x01
var decrypted = Data()
XCTAssertFalse(
engine.decrypt(
iv: iv,
key: key,
encoded: ciphertext,
auth: modifiedTag,
output: &decrypted
)
)
}
}