javax.crypto
public class: SecretKeyFactory [javadoc |
source]
java.lang.Object
javax.crypto.SecretKeyFactory
This class represents a factory for secret keys.
Key factories are used to convert keys (opaque
cryptographic keys of type Key
) into key specifications
(transparent representations of the underlying key material), and vice
versa.
Secret key factories operate only on secret (symmetric) keys.
Key factories are bi-directional, i.e., they allow to build an opaque
key object from a given key specification (key material), or to retrieve
the underlying key material of a key object in a suitable format.
Application developers should refer to their provider's documentation
to find out which key specifications are supported by the
generateSecret and
getKeySpec
methods.
For example, the DES secret-key factory supplied by the "SunJCE" provider
supports DESKeySpec
as a transparent representation of DES
keys, and that provider's secret-key factory for Triple DES keys supports
DESedeKeySpec
as a transparent representation of Triple DES
keys.
Every implementation of the Java platform is required to support the
following standard SecretKeyFactory
algorithms:
These algorithms are described in the
SecretKeyFactory section of the
Java Cryptography Architecture Standard Algorithm Name Documentation.
Consult the release documentation for your implementation to see if any
other algorithms are supported.
Constructor: |
protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi,
Provider provider,
String algorithm) {
this.spi = keyFacSpi;
this.provider = provider;
this.algorithm = algorithm;
}
Creates a SecretKeyFactory object. Parameters:
keyFacSpi - the delegate
provider - the provider
algorithm - the secret-key algorithm
|
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from javax.crypto.SecretKeyFactory Detail: |
public final SecretKey generateSecret(KeySpec keySpec) throws InvalidKeySpecException {
if (serviceIterator == null) {
return spi.engineGenerateSecret(keySpec);
}
Exception failure = null;
SecretKeyFactorySpi mySpi = spi;
do {
try {
return mySpi.engineGenerateSecret(keySpec);
} catch (Exception e) {
if (failure == null) {
failure = e;
}
mySpi = nextSpi(mySpi);
}
} while (mySpi != null);
if (failure instanceof InvalidKeySpecException) {
throw (InvalidKeySpecException)failure;
}
throw new InvalidKeySpecException
("Could not generate secret key", failure);
}
Generates a SecretKey object from the provided key
specification (key material). |
public final String getAlgorithm() {
return this.algorithm;
}
Returns the algorithm name of this SecretKeyFactory object.
This is the same name that was specified in one of the
getInstance calls that created this
SecretKeyFactory object. |
public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException {
return new SecretKeyFactory(algorithm);
}
Returns a SecretKeyFactory object that converts
secret keys of the specified algorithm.
This method traverses the list of registered security Providers,
starting with the most preferred Provider.
A new SecretKeyFactory object encapsulating the
SecretKeyFactorySpi implementation from the first
Provider that supports the specified algorithm is returned.
Note that the list of registered providers may be retrieved via
the Security.getProviders() method. |
public static final SecretKeyFactory getInstance(String algorithm,
String provider) throws NoSuchAlgorithmException, NoSuchProviderException {
Instance instance = JceSecurity.getInstance("SecretKeyFactory",
SecretKeyFactorySpi.class, algorithm, provider);
return new SecretKeyFactory((SecretKeyFactorySpi)instance.impl,
instance.provider, algorithm);
}
Returns a SecretKeyFactory object that converts
secret keys of the specified algorithm.
A new SecretKeyFactory object encapsulating the
SecretKeyFactorySpi implementation from the specified provider
is returned. The specified provider must be registered
in the security provider list.
Note that the list of registered providers may be retrieved via
the Security.getProviders() method. |
public static final SecretKeyFactory getInstance(String algorithm,
Provider provider) throws NoSuchAlgorithmException {
Instance instance = JceSecurity.getInstance("SecretKeyFactory",
SecretKeyFactorySpi.class, algorithm, provider);
return new SecretKeyFactory((SecretKeyFactorySpi)instance.impl,
instance.provider, algorithm);
}
Returns a SecretKeyFactory object that converts
secret keys of the specified algorithm.
A new SecretKeyFactory object encapsulating the
SecretKeyFactorySpi implementation from the specified Provider
object is returned. Note that the specified Provider object
does not have to be registered in the provider list. |
public final KeySpec getKeySpec(SecretKey key,
Class keySpec) throws InvalidKeySpecException {
if (serviceIterator == null) {
return spi.engineGetKeySpec(key, keySpec);
}
Exception failure = null;
SecretKeyFactorySpi mySpi = spi;
do {
try {
return mySpi.engineGetKeySpec(key, keySpec);
} catch (Exception e) {
if (failure == null) {
failure = e;
}
mySpi = nextSpi(mySpi);
}
} while (mySpi != null);
if (failure instanceof InvalidKeySpecException) {
throw (InvalidKeySpecException)failure;
}
throw new InvalidKeySpecException
("Could not get key spec", failure);
}
Returns a specification (key material) of the given key object
in the requested format. |
public final Provider getProvider() {
synchronized (lock) {
// disable further failover after this call
serviceIterator = null;
return provider;
}
}
Returns the provider of this SecretKeyFactory object. |
public final SecretKey translateKey(SecretKey key) throws InvalidKeyException {
if (serviceIterator == null) {
return spi.engineTranslateKey(key);
}
Exception failure = null;
SecretKeyFactorySpi mySpi = spi;
do {
try {
return mySpi.engineTranslateKey(key);
} catch (Exception e) {
if (failure == null) {
failure = e;
}
mySpi = nextSpi(mySpi);
}
} while (mySpi != null);
if (failure instanceof InvalidKeyException) {
throw (InvalidKeyException)failure;
}
throw new InvalidKeyException
("Could not translate key", failure);
}
Translates a key object, whose provider may be unknown or potentially
untrusted, into a corresponding key object of this secret-key factory. |