final DSAPublicKey dpk = (DSAPublicKey)pk;
final DSAParams params = dpk.getParams();
ret = new DSAParameterSpec(params.getP(), params.getQ(), params.getG());
} else if (pk instanceof ECPublicKey) {
log.debug("getKeyGenSpec: ECPublicKey");
final ECPublicKey ecpub = (ECPublicKey) pk;
final java.security.spec.ECParameterSpec sunsp = ecpub.getParams();
final EllipticCurve ecurve = new EllipticCurve(sunsp.getCurve().getField(), sunsp.getCurve().getA(), sunsp.getCurve().getB());
//ECParameterSpec par = new ECNamedCurveSpec(null, sunsp.getCurve(), sunsp.getGenerator(), sunsp.getOrder(), BigInteger.valueOf(sunsp.getCofactor()));
final ECParameterSpec params = new ECParameterSpec(ecurve, sunsp.getGenerator(), sunsp.getOrder(), sunsp.getCofactor());
if (log.isDebugEnabled()) {
log.debug("Fieldsize: "+params.getCurve().getField().getFieldSize());
final EllipticCurve curve = params.getCurve();
log.debug("CurveA: "+curve.getA().toString(16));
log.debug("CurveB: "+curve.getB().toString(16));
log.debug("CurveSeed: "+curve.getSeed());
final ECFieldFp field = (ECFieldFp)curve.getField();
log.debug("CurveSfield: "+field.getP().toString(16));
final ECPoint p = params.getGenerator();
log.debug("Generator: "+p.getAffineX().toString(16)+", "+p.getAffineY().toString(16));
log.debug("Order: "+params.getOrder().toString(16));
log.debug("CoFactor: "+params.getCofactor());
}
ret = params;
} else if (pk instanceof JCEECPublicKey) {
log.debug("getKeyGenSpec: JCEECPublicKey");
final JCEECPublicKey ecpub = (JCEECPublicKey) pk;
final org.bouncycastle.jce.spec.ECParameterSpec bcsp = ecpub.getParameters();
final ECCurve curve = bcsp.getCurve();
//TODO: this probably does not work for key generation with the Sun PKCS#11 provider. Maybe seed needs to be set to null as above? Or something else, the BC curve is it the same?
final ECParameterSpec params = new ECNamedCurveSpec(null, curve, bcsp.getG(), bcsp.getN(), bcsp.getH());
ret = params;
//EllipticCurve ecc = new EllipticCurve(curve.)