Example usage for org.bouncycastle.openpgp PGPPrivateKey PGPPrivateKey

List of usage examples for org.bouncycastle.openpgp PGPPrivateKey PGPPrivateKey

Introduction

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

Prototype

public PGPPrivateKey(long keyID, PublicKeyPacket publicKeyPacket, BCPGKey privateKeyDataPacket) 

Source Link

Document

Base constructor.

Usage

From source file:google.registry.rde.GhostrydeTest.java

License:Open Source License

@Test
@Ignore("Intentionally corrupting a PGP key is easier said than done >_>")
public void testFailure_keyCorruption() throws Exception {
    RdeKeyringModule keyringModule = new RdeKeyringModule();
    byte[] data = "Fanatics have their dreams, wherewith they weave.".getBytes(UTF_8);
    DateTime mtime = DateTime.parse("1984-12-18T00:30:00Z");
    PGPKeyPair rsa = keyringModule.get("rde-unittest@registry.test", ENCRYPT);
    PGPPublicKey publicKey = rsa.getPublicKey();

    // Make the last byte of the private key off by one. muahahaha
    byte[] keyData = rsa.getPrivateKey().getPrivateKeyDataPacket().getEncoded();
    keyData[keyData.length - 1]++;// w  ww . jav a2 s .c o m
    PGPPrivateKey privateKey = new PGPPrivateKey(rsa.getKeyID(), rsa.getPrivateKey().getPublicKeyPacket(),
            rsa.getPrivateKey().getPrivateKeyDataPacket());

    Ghostryde ghost = new Ghostryde(1024);
    ByteArrayOutputStream bsOut = new ByteArrayOutputStream();
    try (Ghostryde.Encryptor encryptor = ghost.openEncryptor(bsOut, publicKey);
            Ghostryde.Compressor kompressor = ghost.openCompressor(encryptor);
            OutputStream output = ghost.openOutput(kompressor, "lol", mtime)) {
        output.write(data);
    }

    ByteArrayInputStream bsIn = new ByteArrayInputStream(bsOut.toByteArray());
    try (Ghostryde.Decryptor decryptor = ghost.openDecryptor(bsIn, privateKey)) {
        ByteStreams.copy(decryptor, ByteStreams.nullOutputStream());
    }
}