TM-SGNL-iOS/SignalServiceKit/Account/PreKeys/MockPreKeyManager.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

93 lines
3.4 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import LibSignalClient
#if TESTABLE_BUILD
internal class MockPreKeyManager: PreKeyManager {
func isAppLockedDueToPreKeyUpdateFailures(tx: SignalServiceKit.DBReadTransaction) -> Bool { false }
func refreshOneTimePreKeysCheckDidSucceed() { }
func checkPreKeysIfNecessary(tx: SignalServiceKit.DBReadTransaction) { }
func rotatePreKeysOnUpgradeIfNecessary(for identity: OWSIdentity) async { }
func createPreKeysForRegistration() -> Task<RegistrationPreKeyUploadBundles, Error> {
let identityKeyPair = ECKeyPair.generateKeyPair()
return Task {
.init(
aci: .init(
identity: .aci,
identityKeyPair: identityKeyPair,
signedPreKey: SSKSignedPreKeyStore.generateSignedPreKey(signedBy: identityKeyPair),
lastResortPreKey: generateLastResortKyberPreKey(signedBy: identityKeyPair)
),
pni: .init(
identity: .pni,
identityKeyPair: identityKeyPair,
signedPreKey: SSKSignedPreKeyStore.generateSignedPreKey(signedBy: identityKeyPair),
lastResortPreKey: generateLastResortKyberPreKey(signedBy: identityKeyPair)
)
)
}
}
func createPreKeysForProvisioning(
aciIdentityKeyPair: ECKeyPair,
pniIdentityKeyPair: ECKeyPair
) -> Task<RegistrationPreKeyUploadBundles, Error> {
let identityKeyPair = ECKeyPair.generateKeyPair()
return Task {
.init(
aci: .init(
identity: .aci,
identityKeyPair: identityKeyPair,
signedPreKey: SSKSignedPreKeyStore.generateSignedPreKey(signedBy: identityKeyPair),
lastResortPreKey: generateLastResortKyberPreKey(signedBy: identityKeyPair)
),
pni: .init(
identity: .pni,
identityKeyPair: identityKeyPair,
signedPreKey: SSKSignedPreKeyStore.generateSignedPreKey(signedBy: identityKeyPair),
lastResortPreKey: generateLastResortKyberPreKey(signedBy: identityKeyPair)
)
)
}
}
public var didFinalizeRegistrationPrekeys = false
func finalizeRegistrationPreKeys(
_ bundles: RegistrationPreKeyUploadBundles,
uploadDidSucceed: Bool
) -> Task<Void, Error> {
didFinalizeRegistrationPrekeys = true
return Task {}
}
func rotateOneTimePreKeysForRegistration(auth: ChatServiceAuth) -> Task<Void, Error> {
return Task {}
}
func rotateSignedPreKeys() -> Task<Void, Error> { Task {} }
func refreshOneTimePreKeys(forIdentity identity: OWSIdentity, alsoRefreshSignedPreKey shouldRefreshSignedPreKey: Bool) { }
func generateLastResortKyberPreKey(signedBy signingKeyPair: ECKeyPair) -> SignalServiceKit.KyberPreKeyRecord {
let keyPair = KEMKeyPair.generate()
let signature = Data(signingKeyPair.keyPair.privateKey.generateSignature(message: Data(keyPair.publicKey.serialize())))
let record = SignalServiceKit.KyberPreKeyRecord(
0,
keyPair: keyPair,
signature: signature,
generatedAt: Date(),
isLastResort: true
)
return record
}
}
#endif