1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50: import ;
51: import ;
52:
53:
58: public class DSAKeyFactory extends KeyFactorySpi
59: {
60:
61:
62:
63:
64: public DSAKeyFactory()
65: {
66: super();
67: }
68:
69:
70:
71:
72: protected PrivateKey engineGeneratePrivate(KeySpec keySpec)
73: throws InvalidKeySpecException
74: {
75: if (!(keySpec instanceof DSAPrivateKeySpec))
76: throw new InvalidKeySpecException();
77: return new GnuDSAPrivateKey(
78: ((DSAPrivateKeySpec) keySpec).getX(),
79: ((DSAPrivateKeySpec) keySpec).getP(),
80: ((DSAPrivateKeySpec) keySpec).getQ(),
81: ((DSAPrivateKeySpec) keySpec).getG());
82: }
83:
84: protected PublicKey engineGeneratePublic(KeySpec keySpec)
85: throws InvalidKeySpecException
86: {
87: if (!(keySpec instanceof DSAPublicKeySpec))
88: throw new InvalidKeySpecException();
89: return new GnuDSAPublicKey(
90: ((DSAPublicKeySpec) keySpec).getY(),
91: ((DSAPublicKeySpec) keySpec).getP(),
92: ((DSAPublicKeySpec) keySpec).getQ(),
93: ((DSAPublicKeySpec) keySpec).getG());
94: }
95:
96: protected KeySpec engineGetKeySpec(Key key, Class keySpec)
97: throws InvalidKeySpecException
98: {
99: if ((key instanceof DSAPublicKey) &&
100: keySpec.isAssignableFrom(DSAPublicKeySpec.class))
101: {
102: return new DSAPublicKeySpec(((DSAPublicKey) key).getY(),
103: ((DSAPublicKey) key).getParams().getP(),
104: ((DSAPublicKey) key).getParams().getQ(),
105: ((DSAPublicKey) key).getParams().getG());
106: }
107: if ((key instanceof DSAPrivateKey) &&
108: keySpec.isAssignableFrom(DSAPrivateKeySpec.class))
109: {
110: return new DSAPrivateKeySpec(((DSAPrivateKey) key).getX(),
111: ((DSAPrivateKey) key).getParams().getP(),
112: ((DSAPrivateKey) key).getParams().getQ(),
113: ((DSAPrivateKey) key).getParams().getG());
114: }
115: throw new InvalidKeySpecException();
116: }
117:
118: protected Key engineTranslateKey(Key key) throws InvalidKeyException
119: {
120: if ((key instanceof GnuDSAPublicKey) || (key instanceof GnuDSAPrivateKey))
121: return key;
122: if (key instanceof DSAPublicKey)
123: return new GnuDSAPublicKey(((DSAPublicKey) key).getY(),
124: ((DSAPublicKey) key).getParams().getP(),
125: ((DSAPublicKey) key).getParams().getQ(),
126: ((DSAPublicKey) key).getParams().getG());
127: if (key instanceof DSAPrivateKey)
128: return new GnuDSAPrivateKey(((DSAPrivateKey) key).getX(),
129: ((DSAPrivateKey) key).getParams().getP(),
130: ((DSAPrivateKey) key).getParams().getQ(),
131: ((DSAPrivateKey) key).getParams().getG());
132: throw new InvalidKeyException();
133: }
134: }