|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--xjava.security.IJCE_Traceable | +--xjava.security.Cipher | +--cryptix.provider.elgamal.RawElGamalCipher
The raw ElGamal encryption algorithm.
References:
Copyright © 1997
Systemics Ltd on behalf of the
Cryptix Development Team.
All rights reserved.
$Revision: 1.3 $
Fields inherited from class xjava.security.Cipher |
DECRYPT, ENCRYPT, UNINITIALIZED |
Fields inherited from class xjava.security.IJCE_Traceable |
tracing |
Constructor Summary | |
RawElGamalCipher()
Constructor for a RawElGamalCipher. |
Method Summary | |
protected int |
engineCiphertextBlockSize()
SPI: Return the ciphertext block size, in bytes. |
protected java.lang.Object |
engineGetParameter(java.lang.String param)
SPI: Return an algorithm-specific parameter. |
protected void |
engineInitDecrypt(java.security.Key key)
SPI: Initializes the cipher for decryption, using the given private key. |
protected void |
engineInitEncrypt(java.security.Key key)
SPI: Initializes the cipher for encryption, using the given public key. |
protected int |
enginePlaintextBlockSize()
SPI: Return the plaintext block size, in bytes. |
protected void |
engineSetParameter(java.lang.String param,
java.lang.Object value)
SPI: Set an algorithm-specific parameter. |
protected int |
engineUpdate(byte[] in,
int inOffset,
int inLen,
byte[] out,
int outOffset)
SPI: DOCUMENT ME |
static void |
main(java.lang.String[] args)
Entry point for very basic self_test . |
static void |
self_test(java.io.PrintWriter out)
|
Methods inherited from class xjava.security.Cipher |
blockSize, clone, crypt, crypt, crypt, doFinal, doFinal, doFinal, doFinal, engineBlockSize, engineCrypt, engineInBufferSize, engineOutBufferSize, engineSetPaddingScheme, getAlgorithm, getAlgorithms, getAlgorithms, getCiphertextBlockSize, getInputBlockSize, getInstance, getInstance, getInstance, getMode, getOutputBlockSize, getPadding, getPaddingScheme, getParameter, getPlaintextBlockSize, getProvider, getState, inBufferSize, inBufferSizeFinal, initDecrypt, initEncrypt, isPaddingBlockCipher, outBufferSize, outBufferSizeFinal, setParameter, toString, update, update, update, update |
Methods inherited from class xjava.security.IJCE_Traceable |
|
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public RawElGamalCipher()
Method Detail |
protected void engineInitEncrypt(java.security.Key key) throws java.security.KeyException
engineInitEncrypt
in class Cipher
key
- the public keyjava.security.InvalidKeyException
- if !(key instanceof
java.security.interfaces.ElGamalPublicKey), or the
key is otherwise invalidprotected void engineInitDecrypt(java.security.Key key) throws java.security.KeyException
engineInitDecrypt
in class Cipher
key
- the private keyjava.security.InvalidKeyException
- if !(key instanceof
java.security.interfaces.ElGamalPrivateKey), or the
key is otherwise invalidprotected int enginePlaintextBlockSize()
If the key has not been set, this method throws CryptixException (a subclass of ProviderException).
enginePlaintextBlockSize
in class Cipher
protected int engineCiphertextBlockSize()
If the key has not been set, this method throws CryptixException (a subclass of ProviderException).
engineCiphertextBlockSize
in class Cipher
protected void engineSetParameter(java.lang.String param, java.lang.Object value)
ElGamal has one algorithm-specific parameter called "random", of type
java.util.Random, which specifies the source of random bits used to
generate the k values needed for encryption. If this parameter
is not set when initKey
is called, the result of
new SecureRandom()
will be used.
You can set the "random" parameter using the following code:
try { elgamal.setParameter("random", existingSecureRandom); } catch (InvalidParameterException e) { /* ignore */ } elgamal.initEncrypt(publicKey);
This is not useful if the cipher will only be used for decryption.
engineSetParameter
in class Cipher
param
- the string identifier of the parameter.value
- the parameter value.java.security.InvalidParameterException
- if (!(param.equals("random") &&
value instanceof java.util.Random))protected java.lang.Object engineGetParameter(java.lang.String param)
ElGamal has one algorithm-specific parameter called "random", as described above. It is guaranteed to be a subclass of java.util.Random. Calling this method with a param string other than "random" will return null.
engineGetParameter
in class Cipher
param
- the string name of the parameter.protected int engineUpdate(byte[] in, int inOffset, int inLen, byte[] out, int outOffset)
engineUpdate
in class Cipher
xjava.security.Cipher
in
- the input data.inOffset
- the offset into in specifying where the
data starts.inLen
- the length of the subarray.out
- the output array.outOffset
- the offset indicating where to start writing into
the out array.public static final void main(java.lang.String[] args)
self_test
.public static void self_test(java.io.PrintWriter out) throws java.security.KeyException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |