Files
Luma/Tests/CryptoKitAESGCMEngineTests.swift
2026-07-30 20:07:51 +07:00

34 lines
1.2 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()
XCTAssertTrue(engine.encrypt(iv: iv, key: key, message: Data("secret".utf8), output: &ciphertext, tag: &tag))
tag[0] ^= 0x01
var decrypted = Data()
XCTAssertFalse(engine.decrypt(iv: iv, key: key, encoded: ciphertext, auth: tag, output: &decrypted))
}
}