hi all...
herewith i have attached the code for certifying public key...public key is generated by elliptic curve algorithm...for the provided public key valid certificate should be generated..here i used bouncycastle package to generate public key and certificate..the following error i got...
Exception in thread "main" java.security.NoSuchProviderException: no such provider: BouncyCastleProvider
at sun.security.jca.GetInstance.getService(GetInstance.java:66)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:237)
at certificate.Certificate.main(Certificate.java:75)
how to rectify this ..please help me..my code is below
import java.util.List;
import org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.cert.CertificateFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Security;
public class Certificate {

public static X509Certificate generateV1Certificate(KeyPair pair)
throws InvalidKeyException, NoSuchProviderException, SignatureException,ClassNotFoundException
{

Security.addProvider(new BouncyCastleProvider());
X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();

certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));
certGen.setIssuerDN(new X500Principal("CN=Test Certificate"));
certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000));
certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000));
certGen.setSubjectDN(new X500Principal("CN=Test Certificate"));
certGen.setPublicKey(pair.getPublic());
// certGen.setSignatureAlgorithm(signatureAlgorithm);


certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");

return certGen.generateX509Certificate(pair.getPrivate(), "BC");

}
public static void main(String[] args) throws Exception
{
Security.addProvider(new BouncyCastleProvider());
ECGenParameterSpec ecGenSpec = new ECGenParameterSpec("prime192v1");

KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BouncyCastleProvider");

g.initialize(ecGenSpec, new SecureRandom());

KeyPair pair = g.generateKeyPair();

// generate the certificate
X509Certificate cert = generateV1Certificate(pair);

// show some basic validation
cert.checkValidity(new Date());

cert.verify(cert.getPublicKey());

System.out.println("valid certificate generated");
}

}