DSAKeyFactory.java [plain text]
package gnu.java.security.provider;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyFactorySpi;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.DSAPrivateKey;
import java.security.interfaces.DSAPublicKey;
import java.security.spec.DSAPrivateKeySpec;
import java.security.spec.DSAPublicKeySpec;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
public class DSAKeyFactory extends KeyFactorySpi
{
public DSAKeyFactory()
{
super();
}
protected PrivateKey engineGeneratePrivate(KeySpec keySpec)
throws InvalidKeySpecException
{
if (!(keySpec instanceof DSAPrivateKeySpec))
throw new InvalidKeySpecException();
return new GnuDSAPrivateKey(
((DSAPrivateKeySpec) keySpec).getX(),
((DSAPrivateKeySpec) keySpec).getP(),
((DSAPrivateKeySpec) keySpec).getQ(),
((DSAPrivateKeySpec) keySpec).getG());
}
protected PublicKey engineGeneratePublic(KeySpec keySpec)
throws InvalidKeySpecException
{
if (!(keySpec instanceof DSAPublicKeySpec))
throw new InvalidKeySpecException();
return new GnuDSAPublicKey(
((DSAPublicKeySpec) keySpec).getY(),
((DSAPublicKeySpec) keySpec).getP(),
((DSAPublicKeySpec) keySpec).getQ(),
((DSAPublicKeySpec) keySpec).getG());
}
protected KeySpec engineGetKeySpec(Key key, Class keySpec)
throws InvalidKeySpecException
{
if ((key instanceof DSAPublicKey) &&
keySpec.isAssignableFrom(DSAPublicKeySpec.class))
{
return new DSAPublicKeySpec(((DSAPublicKey) key).getY(),
((DSAPublicKey) key).getParams().getP(),
((DSAPublicKey) key).getParams().getQ(),
((DSAPublicKey) key).getParams().getG());
}
if ((key instanceof DSAPrivateKey) &&
keySpec.isAssignableFrom(DSAPrivateKeySpec.class))
{
return new DSAPrivateKeySpec(((DSAPrivateKey) key).getX(),
((DSAPrivateKey) key).getParams().getP(),
((DSAPrivateKey) key).getParams().getQ(),
((DSAPrivateKey) key).getParams().getG());
}
throw new InvalidKeySpecException();
}
protected Key engineTranslateKey(Key key) throws InvalidKeyException
{
if ((key instanceof GnuDSAPublicKey) || (key instanceof GnuDSAPrivateKey))
return key;
if (key instanceof DSAPublicKey)
return new GnuDSAPublicKey(((DSAPublicKey) key).getY(),
((DSAPublicKey) key).getParams().getP(),
((DSAPublicKey) key).getParams().getQ(),
((DSAPublicKey) key).getParams().getG());
if (key instanceof DSAPrivateKey)
return new GnuDSAPrivateKey(((DSAPrivateKey) key).getX(),
((DSAPrivateKey) key).getParams().getP(),
((DSAPrivateKey) key).getParams().getQ(),
((DSAPrivateKey) key).getParams().getG());
throw new InvalidKeyException();
}
}