## net.i2p.crypto
Class ElGamalEngine

    java.lang.Object
      net.i2p.crypto.ElGamalEngine

Direct Known Subclasses:
  DummyElGamalEngine

    public class ElGamalEngine

extends java.lang.Object

Wrapper for ElGamal encryption/signature schemes. Does all of Elgamal now for data sizes of 223 bytes and less. The data to be encrypted is first prepended with a random nonzero byte, then the 32 bytes making up the SHA256 of the data, then the data itself. The random byte and the SHA256 hash is stripped on decrypt so the original data is returned.

Author:
  thecrypto, jrandom

Constructor Summary
`ElGamalEngine(I2PAppContext context)` The ElGamal engine should only be constructed and accessed through the application context.

Method Summary
`byte[]` `decrypt(byte[] encrypted, PrivateKey privateKey)` Decrypt the data
`byte[]` `encrypt(byte[] data, PublicKey publicKey)` encrypt the data to the public key
`static void` `main(java.lang.String[] args)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ElGamalEngine

    public ElGamalEngine(I2PAppContext context)

  The ElGamal engine should only be constructed and accessed through the application context. This constructor should only be used by the appropriate application context itself.

Method Detail

### encrypt

    public byte[] encrypt(byte[] data,
                          PublicKey publicKey)

  encrypt the data to the public key

  Parameters:
    `publicKey` - public key encrypt to
    `data` - data to encrypt
  Returns:
    encrypted data

### decrypt

    public byte[] decrypt(byte[] encrypted,
                          PrivateKey privateKey)

  Decrypt the data

  Parameters:
    `encrypted` - encrypted data
    `privateKey` - private key to decrypt with
  Returns:
    unencrypted data

### main

    public static void main(java.lang.String[] args)