name.neuhalfen.projects.crypto.bouncycastle.openpgp.BouncyGPG Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bouncy-gpg Show documentation
Show all versions of bouncy-gpg Show documentation
Make using Bouncy Castle with OpenPGP fun again!
The newest version!
package name.neuhalfen.projects.crypto.bouncycastle.openpgp;
import java.security.Security;
import name.neuhalfen.projects.crypto.bouncycastle.openpgp.keys.generation.KeyRingBuilder;
import name.neuhalfen.projects.crypto.bouncycastle.openpgp.keys.generation.KeyRingBuilderImpl;
import name.neuhalfen.projects.crypto.bouncycastle.openpgp.keys.generation.SimpleKeyRingBuilder;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@SuppressWarnings({"PMD.AtLeastOneConstructor", "PMD.AccessorMethodGeneration", "PMD.LawOfDemeter",
"PMD.ClassNamingConventions"})
public final class BouncyGPG {
private BouncyGPG() {
}
/**
* Entry point for stream based decryption. Ultimately an encryption output stream is placed
* before a user supplied output stream so that plaintext written to the encryption stream is
* encrypted and written to the user supplied output stream. . Example:
* https://github.com/neuhalje/bouncy-gpg/tree/master/examples/decrypt . Usage:
*
* final
* OutputStream encryptionStream = BouncyGPG.encryptToStream()
* .withConfig(Configs.keyringConfigFromFilesForSender())
* .withDefaultAlgorithms()
* .toRecipient("[email protected]")
* .andSignWith("[email protected]")
* .armorAsciiOutput()
* .andWriteTo(cipherText);
*
* encryptionStream.write(expectedPlaintext);
* encryptionStream.close();
* cipherText.close();
*
*
* @return The next build step. In the end the encryption stream.
*/
public static BuildDecryptionInputStreamAPI decryptAndVerifyStream() {
return new BuildDecryptionInputStreamAPI();
}
/**
* Entry point for stream based encryption. Ultimately a decrypting input stream is placed
* before
* a user supplied stream with encrypted data.
*
* Example: https://github.com/neuhalje/bouncy-gpg/tree/master/examples/encrypt
*
*
* @return The next build step. In the end the decryption stream.
*/
public static BuildEncryptionOutputStreamAPI encryptToStream() {
return new BuildEncryptionOutputStreamAPI();
}
/**
* Generate a new OpenPGP key ring.
*
* @return builder
*/
public static KeyRingBuilder createKeyring() {
return new KeyRingBuilderImpl();
}
/**
* Generate a new OpenPGP key ring.
*
* @return builder
*/
public static SimpleKeyRingBuilder createSimpleKeyring() {
return new KeyRingBuilderImpl();
}
/**
* Register the BouncyCastle provider as first provider. If another instance of the
* BouncyCastle provider is already registered it is removed.
*
* The BouncyCastle provider needs to be registered for BouncyGPG to work.
*
* This procedure also makes it possible to use BC on older Android devices that ship their own BC
* implementation.
*
*/
public static synchronized void registerProvider() {
Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
Security.insertProviderAt(new BouncyCastleProvider(), 0);
}
}