|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.crypto.KeyAgreement
public class KeyAgreement
Key agreement is a method in which two or more parties may agree on a secret key for symmetric cryptography or message authentication without transmitting any secrets in the clear. Key agreement algorithms typically use a public/private key pair, and the public key (along with some additional information) is sent across untrusted networks.
The most common form of key agreement used today is the Diffie-Hellman key exchange algorithm, described in PKCS #3 - Diffie Hellman Key Agreement Standard.
KeyGenerator
,
SecretKey
Constructor Summary | |
---|---|
protected |
KeyAgreement(KeyAgreementSpi kaSpi,
Provider provider,
String algorithm)
|
Method Summary | |
---|---|
Key |
doPhase(Key key,
boolean lastPhase)
Do a phase in the key agreement. |
byte[] |
generateSecret()
Generate the shared secret in a new byte array. |
int |
generateSecret(byte[] sharedSecret,
int offset)
Generate the shared secret and store it into the supplied array. |
SecretKey |
generateSecret(String algorithm)
Generate the shared secret and return it as an appropriate SecretKey . |
String |
getAlgorithm()
Return the name of this key-agreement algorithm. |
static KeyAgreement |
getInstance(String algorithm)
Get an implementation of an algorithm from the first provider that implements it. |
static KeyAgreement |
getInstance(String algorithm,
Provider provider)
Return an implementation of an algorithm from a specific provider. |
static KeyAgreement |
getInstance(String algorithm,
String provider)
Return an implementation of an algorithm from a named provider. |
Provider |
getProvider()
Return the provider of the underlying implementation. |
void |
init(Key key)
Initialize this key agreement with a key. |
void |
init(Key key,
AlgorithmParameterSpec params)
Initialize this key agreement with a key and parameters. |
void |
init(Key key,
AlgorithmParameterSpec params,
SecureRandom random)
Initialize this key agreement with a key, parameters, and source of randomness. |
void |
init(Key key,
SecureRandom random)
Initialize this key agreement with a key and a source of randomness. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected KeyAgreement(KeyAgreementSpi kaSpi, Provider provider, String algorithm)
Method Detail |
---|
public static final KeyAgreement getInstance(String algorithm) throws NoSuchAlgorithmException
algorithm
- The name of the algorithm to get.
NoSuchAlgorithmException
- If the specified algorithm is not
implemented by any installed provider.
IllegalArgumentException
- if algorithm
is
null
or is an empty string.public static final KeyAgreement getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
algorithm
- The name of the algorithm to create.provider
- The name of the provider from which to get the
implementation.
NoSuchAlgorithmException
- If the named provider does not implement
the algorithm.
NoSuchProviderException
- If the named provider does not exist.
IllegalArgumentException
- if either algorithm
or
provider
is null
, or if
algorithm
is an empty string.public static final KeyAgreement getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
algorithm
- The name of the algorithm to get.provider
- The provider from which to get the implementation.
NoSuchAlgorithmException
- If this provider does not implement the
algorithm.
IllegalArgumentException
- if either algorithm
or
provider
is null
, or if
algorithm
is an empty string.public final Key doPhase(Key key, boolean lastPhase) throws IllegalStateException, InvalidKeyException
lastPhase
flag set to true
.
key
- The key for this phase.lastPhase
- Should be true
if this will be the
last phase before generating the shared secret.
null
if there is
no intermediate result.
IllegalStateException
- If this instance has not
been initialized.
InvalidKeyException
- If the key is
inappropriate for this algorithm.public final byte[] generateSecret() throws IllegalStateException
IllegalStateException
- If this instnace has not
been initialized, or if not enough calls to
doPhase
have been made.public final int generateSecret(byte[] sharedSecret, int offset) throws IllegalStateException, ShortBufferException
sharedSecret
- The array in which to store the secret.offset
- The index in sharedSecret
to start
storing data.
IllegalStateException
- If this instnace has not
been initialized, or if not enough calls to
doPhase
have been made.
ShortBufferException
- If the supplied array is
not large enough to store the result.public final SecretKey generateSecret(String algorithm) throws IllegalStateException, InvalidKeyException, NoSuchAlgorithmException
SecretKey
.
algorithm
- The secret key's algorithm.
IllegalStateException
- If this instnace has not
been initialized, or if not enough calls to
doPhase
have been made.
InvalidKeyException
- If the shared secret
cannot be used to make a SecretKey
.
NoSuchAlgorithmException
- If the specified
algorithm does not exist.public final String getAlgorithm()
public final Provider getProvider()
public final void init(Key key) throws InvalidKeyException
SecureRandom
as its source
of randomness.
key
- The key, usually the user's private key.
InvalidKeyException
- If the supplied key is
not appropriate.public final void init(Key key, SecureRandom random) throws InvalidKeyException
key
- The key, usually the user's private key.random
- The source of randomness.
InvalidKeyException
- If the supplied key is
not appropriate.public final void init(Key key, AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException, InvalidKeyException
SecureRandom
as its source of randomness.
key
- The key, usually the user's private key.params
- The algorithm parameters.
InvalidAlgorithmParameterException
- If the
supplied parameters are not appropriate.
InvalidKeyException
- If the supplied key is
not appropriate.public final void init(Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException, InvalidKeyException
key
- The key, usually the user's private key.params
- The algorithm parameters.random
- The source of randomness.
InvalidAlgorithmParameterException
- If the
supplied parameters are not appropriate.
InvalidKeyException
- If the supplied key is
not appropriate.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |