Signal-iOS/SignalServiceKit/tests/Storage/KyberPreKeyStoreImplTest.swift
2025-10-24 15:38:03 -05:00

47 lines
1.7 KiB
Swift

//
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import LibSignalClient
import Testing
@testable import SignalServiceKit
struct KyberPreKeyStoreImplTest {
@Test
func testGenerate() throws {
let now = Date(timeIntervalSince1970: 1234567890)
let keyId = 42 as UInt32
let identityKey = PrivateKey.generate()
let kyberRecord = KyberPreKeyStoreImpl.generatePreKeyRecord(keyId: keyId, now: now, signedBy: identityKey)
#expect(kyberRecord.id == keyId)
#expect(kyberRecord.timestamp == now.ows_millisecondsSince1970)
#expect(try identityKey.publicKey.verifySignature(
message: kyberRecord.publicKey().serialize(),
signature: kyberRecord.signature,
))
}
@Test
func testStoreChangeNumber() {
let db = InMemoryDB()
let preKeyStore = PreKeyStore()
let kyberStore = KyberPreKeyStoreImpl(for: .aci, dateProvider: { fatalError() }, preKeyStore: preKeyStore)
db.write { tx in
let preKeyId = kyberStore.allocatePreKeyIds(count: 1, tx: tx).first
if preKeyId == 42 { _ = kyberStore.allocatePreKeyIds(count: 1, tx: tx) }
let kyberRecord = KyberPreKeyStoreImpl.generatePreKeyRecord(keyId: 42, now: Date(), signedBy: .generate())
kyberStore.storePreKeyRecords([kyberRecord], isLastResort: true, tx: tx)
#expect(kyberStore.allocatePreKeyIds(count: 1, tx: tx).lowerBound != 43)
kyberStore.storeLastResortPreKeyFromChangeNumber(kyberRecord, tx: tx)
#expect(kyberStore.allocatePreKeyIds(count: 1, tx: tx).lowerBound == 43)
}
}
}