Path: blob/main/SignalServiceKit/Backups/BackupKeyMaterial.swift
1 views
//
// 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)
}