mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-12-22 19:08:00 +01:00
Kotlin conversion: DecryptionBuilder
This commit is contained in:
parent
4a19e6ca20
commit
9988ba9940
4 changed files with 60 additions and 78 deletions
|
@ -1,42 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2018 Paul Schaub <vanitasvitae@fsfe.org>
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package org.pgpainless.decryption_verification;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bouncycastle.openpgp.PGPException;
|
||||
|
||||
/**
|
||||
* Builder class that takes an {@link InputStream} of ciphertext (or plaintext signed data)
|
||||
* and combines it with a configured {@link ConsumerOptions} object to form a {@link DecryptionStream} which
|
||||
* can be used to decrypt an OpenPGP message or verify signatures.
|
||||
*/
|
||||
public class DecryptionBuilder implements DecryptionBuilderInterface {
|
||||
|
||||
@Override
|
||||
public DecryptWith onInputStream(@Nonnull InputStream inputStream) {
|
||||
return new DecryptWithImpl(inputStream);
|
||||
}
|
||||
|
||||
static class DecryptWithImpl implements DecryptWith {
|
||||
|
||||
private final InputStream inputStream;
|
||||
|
||||
DecryptWithImpl(InputStream inputStream) {
|
||||
this.inputStream = inputStream;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DecryptionStream withOptions(ConsumerOptions consumerOptions) throws PGPException, IOException {
|
||||
if (consumerOptions == null) {
|
||||
throw new IllegalArgumentException("Consumer options cannot be null.");
|
||||
}
|
||||
|
||||
return OpenPgpMessageInputStream.create(inputStream, consumerOptions);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2018 Paul Schaub <vanitasvitae@fsfe.org>
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package org.pgpainless.decryption_verification;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.bouncycastle.openpgp.PGPException;
|
||||
|
||||
public interface DecryptionBuilderInterface {
|
||||
|
||||
/**
|
||||
* Create a {@link DecryptionStream} on an {@link InputStream} which contains the encrypted and/or signed data.
|
||||
*
|
||||
* @param inputStream encrypted and/or signed data.
|
||||
* @return api handle
|
||||
*/
|
||||
DecryptWith onInputStream(@Nonnull InputStream inputStream);
|
||||
|
||||
interface DecryptWith {
|
||||
|
||||
/**
|
||||
* Add options for decryption / signature verification, such as keys, passphrases etc.
|
||||
*
|
||||
* @param consumerOptions consumer options
|
||||
* @return decryption stream
|
||||
* @throws PGPException in case of an OpenPGP related error
|
||||
* @throws IOException in case of an IO error
|
||||
*/
|
||||
DecryptionStream withOptions(ConsumerOptions consumerOptions) throws PGPException, IOException;
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
// SPDX-FileCopyrightText: 2023 Paul Schaub <vanitasvitae@fsfe.org>
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package org.pgpainless.decryption_verification
|
||||
|
||||
import java.io.InputStream
|
||||
|
||||
/**
|
||||
* Builder class that takes an [InputStream] of ciphertext (or plaintext signed data)
|
||||
* and combines it with a configured [ConsumerOptions] object to form a [DecryptionStream] which
|
||||
* can be used to decrypt an OpenPGP message or verify signatures.
|
||||
*/
|
||||
class DecryptionBuilder: DecryptionBuilderInterface {
|
||||
|
||||
override fun onInputStream(inputStream: InputStream): DecryptionBuilderInterface.DecryptWith {
|
||||
return DecryptWithImpl(inputStream)
|
||||
}
|
||||
|
||||
class DecryptWithImpl(val inputStream: InputStream): DecryptionBuilderInterface.DecryptWith {
|
||||
|
||||
override fun withOptions(consumerOptions: ConsumerOptions): DecryptionStream {
|
||||
return OpenPgpMessageInputStream.create(inputStream, consumerOptions)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
// SPDX-FileCopyrightText: 2023 Paul Schaub <vanitasvitae@fsfe.org>
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package org.pgpainless.decryption_verification
|
||||
|
||||
import org.bouncycastle.openpgp.PGPException
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
|
||||
interface DecryptionBuilderInterface {
|
||||
|
||||
/**
|
||||
* Create a [DecryptionStream] on an [InputStream] which contains the encrypted and/or signed data.
|
||||
*
|
||||
* @param inputStream encrypted and/or signed data.
|
||||
* @return api handle
|
||||
*/
|
||||
fun onInputStream(inputStream: InputStream): DecryptWith
|
||||
|
||||
interface DecryptWith {
|
||||
|
||||
/**
|
||||
* Add options for decryption / signature verification, such as keys, passphrases etc.
|
||||
*
|
||||
* @param consumerOptions consumer options
|
||||
* @return decryption stream
|
||||
* @throws PGPException in case of an OpenPGP related error
|
||||
* @throws IOException in case of an IO error
|
||||
*/
|
||||
@Throws(PGPException::class, IOException::class)
|
||||
fun withOptions(consumerOptions: ConsumerOptions): DecryptionStream
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue