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

57 lines
2 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
public import LibSignalClient
#if TESTABLE_BUILD
public class ChangePhoneNumberPniManagerMock: ChangePhoneNumberPniManager {
private let mockKyberStore: SignalKyberPreKeyStore
public init(mockKyberStore: SignalKyberPreKeyStore) {
self.mockKyberStore = mockKyberStore
}
public func generatePniIdentity(
forNewE164 newE164: E164,
localAci: Aci,
localRecipientUniqueId: String,
localDeviceId: UInt32,
localUserAllDeviceIds: [UInt32]
) -> Guarantee<ChangePhoneNumberPni.GeneratePniIdentityResult> {
let keyPair = ECKeyPair.generateKeyPair()
let registrationId = UInt32.random(in: 1...0x3fff)
let localPqKey1 = try! self.mockKyberStore.generateLastResortKyberPreKeyForLinkedDevice(signedBy: keyPair)
let localPqKey2 = try! self.mockKyberStore.generateLastResortKyberPreKeyForLinkedDevice(signedBy: keyPair)
return .value(.success(
parameters: PniDistribution.Parameters.mock(
pniIdentityKeyPair: keyPair,
localDeviceId: localDeviceId,
localDevicePniSignedPreKey: SSKSignedPreKeyStore.generateSignedPreKey(signedBy: keyPair),
localDevicePniPqLastResortPreKey: localPqKey1,
localDevicePniRegistrationId: registrationId
),
pendingState: ChangePhoneNumberPni.PendingState(
newE164: newE164,
pniIdentityKeyPair: keyPair,
localDevicePniSignedPreKeyRecord: SSKSignedPreKeyStore.generateSignedPreKey(signedBy: keyPair),
localDevicePniPqLastResortPreKeyRecord: localPqKey2,
localDevicePniRegistrationId: registrationId
)
))
}
public func finalizePniIdentity(
withPendingState pendingState: ChangePhoneNumberPni.PendingState,
transaction: DBWriteTransaction
) throws {
// do nothing
}
}
#endif