mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-12-25 04:17:59 +01:00
Kotlin conversion: DecryptionBuilder
This commit is contained in:
parent
5ac95025f8
commit
eccd4db918
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