keyFab.generatePrivate(new PKCS8EncodedKeySpec(tmp));
ECPrivateKeySpec ecPrivSpec = new ECPrivateKeySpec(ecPrivKey.getS(),
ecPrivKey.getParams());
keyFab.generatePrivate(ecPrivSpec);
ECPublicKey ecPubKey = (ECPublicKey) ecKeyPair.getPublic();
tmp = ecPubKey.getEncoded(); // dont modify tmp now - is used below
keyFab.generatePublic(new X509EncodedKeySpec(tmp));
ECPublicKeySpec ecPubSpec = new ECPublicKeySpec(ecPubKey.getW(),
ecPubKey.getParams());
keyFab.generatePublic(ecPubSpec);
Signature ecdsa = Signature.getInstance(ecdsas[s], gooProv);
ecdsa.initSign(ecPrivKey);
ecdsa.update(tmp);
byte[] sig = ecdsa.sign();
ecdsa.initVerify(ecPubKey);
ecdsa.update(tmp);
if (!ecdsa.verify(sig))
throw new RuntimeException("Signature not verified: "
+ keyLengths[i]);
// Cross verify using NSS if present
if (nssProv != null) {
keyFab = KeyFactory.getInstance("EC", nssProv);
// For some reason NSS doesnt seem to work for P-192 and P-224?!
if (keyLengths[i] == 192 || keyLengths[i] == 224) continue;
ECPrivateKey nssPrivKey = (ECPrivateKey) keyFab
.generatePrivate(new PKCS8EncodedKeySpec(ecPrivKey.getEncoded()));
ECPublicKey nssPubKey = (ECPublicKey) keyFab
.generatePublic(new X509EncodedKeySpec(ecPubKey.getEncoded()));
ecdsa = Signature.getInstance(ecdsas[s], nssProv);
ecdsa.initVerify(nssPubKey);
ecdsa.update(tmp);