Signal-iOS/SignalServiceKit/Util/StreamTransform/Output/NonceHeaderOutputStreamTransform.swift
Harry b1fe641270
SVR🐝
2025-08-04 14:07:33 -07:00

31 lines
855 B
Swift

//
// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public class NonceHeaderOutputStreamTransform: StreamTransform {
private let metadataHeader: BackupNonce.MetadataHeader
public init(metadataHeader: BackupNonce.MetadataHeader) {
self.metadataHeader = metadataHeader
}
private var hasWrittenHeader = false
public func transform(data: Data) throws -> Data {
if hasWrittenHeader { return data }
defer { hasWrittenHeader = true }
var result = Data()
result.append(BackupNonce.magicFileSignature)
let headerData = metadataHeader.data
result.append(ChunkedOutputStreamTransform.writeVariableLengthUInt32(UInt32(headerData.count)))
result.append(headerData)
result.append(data)
return result
}
}