net.i2p.crypto
Class ElGamalEngine

java.lang.Object
  extended by 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)