// SPDX-FileCopyrightText: 2023 Paul Schaub // // SPDX-License-Identifier: Apache-2.0 package org.pgpainless.decryption_verification.cleartext_signatures import java.io.* /** * Implementation of the [MultiPassStrategy]. * When processing signed data the first time, the data is being written out into a file. * For the second pass, that file is being read again. * * This strategy is recommended when larger amounts of data need to be processed. * For smaller files, [InMemoryMultiPassStrategy] yields higher efficiency. * * @param file file to write the data to and read from */ class WriteToFileMultiPassStrategy( private val file: File ) : MultiPassStrategy { override val messageOutputStream: OutputStream @Throws(IOException::class) get() { if (!file.exists()) { if (!file.createNewFile()) { throw IOException("New file '${file.absolutePath}' could not be created.") } } return FileOutputStream(file) } override val messageInputStream: InputStream @Throws(IOException::class) get() { if (!file.exists()) { throw IOException("File '${file.absolutePath}' does no longer exist.") } return FileInputStream(file) } }