Example usage for org.bouncycastle.openpgp PGPLiteralDataGenerator BINARY

List of usage examples for org.bouncycastle.openpgp PGPLiteralDataGenerator BINARY

Introduction

In this page you can find the example usage for org.bouncycastle.openpgp PGPLiteralDataGenerator BINARY.

Prototype

char BINARY

To view the source code for org.bouncycastle.openpgp PGPLiteralDataGenerator BINARY.

Click Source Link

Document

Format tag for binary literal data

Usage

From source file:org.apache.gobblin.crypto.GPGFileEncryptor.java

License:Apache License

/**
 * Taking in an input {@link OutputStream} and a passPhrase, return an {@link OutputStream} that can be used to output
 * encrypted output to the input {@link OutputStream}.
 * @param outputStream the output stream to hold the ciphertext {@link OutputStream}
 * @param passPhrase pass phrase//from  w ww .j a  v a  2 s .  c o m
 * @param cipher the symmetric cipher to use for encryption. If null or empty then a default cipher is used.
 * @return {@link OutputStream} to write content to for encryption
 * @throws IOException
 */
public OutputStream encryptFile(OutputStream outputStream, String passPhrase, String cipher)
        throws IOException {
    try {
        if (Security.getProvider(PROVIDER_NAME) == null) {
            Security.addProvider(new BouncyCastleProvider());
        }

        PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(
                new JcePGPDataEncryptorBuilder(symmetricKeyAlgorithmNameToTag(cipher))
                        .setSecureRandom(new SecureRandom()).setProvider(PROVIDER_NAME));
        cPk.addMethod(
                new JcePBEKeyEncryptionMethodGenerator(passPhrase.toCharArray()).setProvider(PROVIDER_NAME));

        OutputStream cOut = cPk.open(outputStream, new byte[BUFFER_SIZE]);

        PGPLiteralDataGenerator literalGen = new PGPLiteralDataGenerator();
        OutputStream _literalOut = literalGen.open(cOut, PGPLiteralDataGenerator.BINARY, PAYLOAD_NAME,
                new Date(), new byte[BUFFER_SIZE]);

        return new ClosingWrapperOutputStream(_literalOut, cOut, outputStream);
    } catch (PGPException e) {
        throw new IOException(e);
    }
}

From source file:org.apache.gobblin.crypto.GPGFileEncryptor.java

License:Apache License

/**
 * Taking in an input {@link OutputStream}, keyring inputstream and a passPhrase, generate an encrypted {@link OutputStream}.
 * @param outputStream {@link OutputStream} that will receive the encrypted content
 * @param keyIn keyring inputstream. This InputStream is owned by the caller.
 * @param keyId key identifier// w ww  .  j  a  v  a2 s . c  o  m
 * @param cipher the symmetric cipher to use for encryption. If null or empty then a default cipher is used.
 * @return an {@link OutputStream} to write content to for encryption
 * @throws IOException
 */
public OutputStream encryptFile(OutputStream outputStream, InputStream keyIn, long keyId, String cipher)
        throws IOException {
    try {
        if (Security.getProvider(PROVIDER_NAME) == null) {
            Security.addProvider(new BouncyCastleProvider());
        }

        PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(
                new JcePGPDataEncryptorBuilder(symmetricKeyAlgorithmNameToTag(cipher))
                        .setSecureRandom(new SecureRandom()).setProvider(PROVIDER_NAME));

        PGPPublicKey publicKey;
        PGPPublicKeyRingCollection keyRings = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(keyIn),
                new BcKeyFingerprintCalculator());
        publicKey = keyRings.getPublicKey(keyId);

        if (publicKey == null) {
            throw new IllegalArgumentException("public key for encryption not found");
        }

        cPk.addMethod(new JcePublicKeyKeyEncryptionMethodGenerator(publicKey).setProvider(PROVIDER_NAME));

        OutputStream cOut = cPk.open(outputStream, new byte[BUFFER_SIZE]);

        PGPLiteralDataGenerator literalGen = new PGPLiteralDataGenerator();
        OutputStream _literalOut = literalGen.open(cOut, PGPLiteralDataGenerator.BINARY, PAYLOAD_NAME,
                new Date(), new byte[BUFFER_SIZE]);

        return new ClosingWrapperOutputStream(_literalOut, cOut, outputStream);
    } catch (PGPException e) {
        throw new IOException(e);
    }
}

From source file:ubicrypt.core.crypto.PGPEC.java

License:Open Source License

public static InputStream encrypt(final List<PGPPublicKey> pks, final InputStream clearBytes) {
    final PipedInputStream pis = new PipedInputStream();
    final AtomicReference<PipedOutputStream> pos = new AtomicReference<>();
    final AtomicReference<OutputStream> pgpOut = new AtomicReference<>();
    final AtomicReference<OutputStream> lout = new AtomicReference<>();
    try {//w  w w .  j ava 2s.c  o  m
        pos.set(new PipedOutputStream(pis));
        final PGPLiteralDataGenerator lData = new PGPLiteralDataGenerator();

        final PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(
                new JcePGPDataEncryptorBuilder(SymmetricKeyAlgorithmTags.AES_256).setWithIntegrityPacket(true)
                        .setProvider("BC").setSecureRandom(new SecureRandom()));

        pks.stream().forEach(
                pk -> cPk.addMethod(new JcePublicKeyKeyEncryptionMethodGenerator(pk).setProvider("BC")));
        pgpOut.set(cPk.open(pos.get(), new byte[1 << 16]));
        lout.set(lData.open(pgpOut.get(), PGPLiteralDataGenerator.BINARY, PGPLiteralData.CONSOLE, new Date(),
                new byte[1 << 64]));

        Observable.create(new OnSubscribeInputStream(clearBytes, 1 << 64)).subscribeOn(Schedulers.io())
                .doOnCompleted(() -> Utils.close(lout.get(), pgpOut.get(), pos.get())).doOnError(err -> {
                    log.error("error on encrypt", err);
                    Utils.close(clearBytes, lout.get(), pgpOut.get(), pos.get());
                }).subscribe(ConsumerExp.silent(lout.get()::write));
    } catch (final Exception e) {
        Utils.close(clearBytes, lout.get(), pgpOut.get(), pos.get());
        Throwables.propagate(e);
    }
    return pis;
}