49 lines
1.8 KiB
Swift
49 lines
1.8 KiB
Swift
//
|
|
// Copyright 2020 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public protocol PreKeyManager {
|
|
func isAppLockedDueToPreKeyUpdateFailures(tx: DBReadTransaction) -> Bool
|
|
|
|
func checkPreKeysIfNecessary() async throws
|
|
|
|
/// Creates a new set of prekeys for registration, creating a new identity
|
|
/// key if needed (or reusing the existing identity key).
|
|
///
|
|
/// These keys are persisted before this method returns, but best effort
|
|
/// should be taken to finalize the keys after the server accepts them.
|
|
func createPreKeysForRegistration() async -> RegistrationPreKeyUploadBundles
|
|
|
|
/// Creates a new set of prekeys for provisioning (linking a new secondary
|
|
/// device), using the provided identity keys (which are delivered from the
|
|
/// primary during linking). These keys are persisted before this method
|
|
/// returns, but best effort should be taken to finalize the keys after the
|
|
/// server accepts them.
|
|
func createPreKeysForProvisioning(
|
|
aciIdentityKeyPair: ECKeyPair,
|
|
pniIdentityKeyPair: ECKeyPair,
|
|
) async -> RegistrationPreKeyUploadBundles
|
|
|
|
/// Called on a best-effort basis. Consequences of not calling this is that
|
|
/// the keys are still persisted (from prior to uploading) but they aren't
|
|
/// marked current and accepted.
|
|
func finalizeRegistrationPreKeys(
|
|
_ bundles: RegistrationPreKeyUploadBundles,
|
|
uploadDidSucceed: Bool,
|
|
) async
|
|
|
|
func rotateOneTimePreKeysForRegistration(auth: ChatServiceAuth) async throws
|
|
|
|
func rotateSignedPreKeysIfNeeded() async throws
|
|
|
|
func refreshOneTimePreKeys(
|
|
forIdentity identity: OWSIdentity,
|
|
alsoRefreshSignedPreKey shouldRefreshSignedPreKey: Bool,
|
|
) async throws
|
|
|
|
func setIsChangingNumber(_ isChangingNumber: Bool)
|
|
}
|