35 lines
877 B
Swift
35 lines
877 B
Swift
//
|
|
// Copyright 2025 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
public import LibSignalClient
|
|
|
|
public protocol BackupKeyMaterial {
|
|
var credentialType: BackupAuthCredentialType { get }
|
|
var backupKey: BackupKey { get }
|
|
|
|
func serialize() -> Data
|
|
func deriveEcKey(aci: Aci) -> PrivateKey
|
|
func deriveBackupId(aci: Aci) -> Data
|
|
}
|
|
|
|
extension BackupKeyMaterial {
|
|
public func deriveEcKey(aci: Aci) -> PrivateKey {
|
|
backupKey.deriveEcKey(aci: aci)
|
|
}
|
|
|
|
public func deriveBackupId(aci: Aci) -> Data {
|
|
backupKey.deriveBackupId(aci: aci)
|
|
}
|
|
|
|
public func serialize() -> Data { backupKey.serialize() }
|
|
}
|
|
|
|
public enum BackupKeyMaterialError: Error {
|
|
case missingMessageBackupKey
|
|
case missingOrInvalidMRBK
|
|
/// Encountered an error using libsignal methods to derive keys.
|
|
case derivationError(Error)
|
|
}
|