Hello thanks ! actually im signing the certificate with OPENSSL now i want to develop my own application that can do this by using bouncy castle.I have generated the certificate request now problem is to sign it with our root certificate.
Thanks
QUOTE(bhandari @ 25 Feb, 2008 - 01:00 AM)

provide your code in code tags as below:
[*code]
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Security;
import java.util.Hashtable;
import java.util.Vector;
import javax.security.auth.x500.X500Principal;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSet;
import org.bouncycastle.asn1.pkcs.Attribute;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.GeneralNames;
import org.bouncycastle.asn1.x509.X509Extension;
import org.bouncycastle.asn1.x509.X509Extensions;
import org.bouncycastle.asn1.x509.X509Name;
import org.bouncycastle.jce.PKCS10CertificationRequest;
import org.bouncycastle.jce.X509Principal;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openssl.PEMWriter;
import org.bouncycastle.util.encoders.Base64;
import com.sun.crypto.provider.SunJCE;
/**
* Generation of a basic PKCS #10 request with an extension.
*/
public class pkcs10
{
private boolean useBCAPI;
private static String commonName;
private static String email;
private static String organization;
private static String groupName;
private static String locality;
private static String country;
pkcs10(String Name,String Email, String Organization,String GroupName,String Locality, String Country){
commonName = Name;
email = Email;
organization = Organization;
groupName = GroupName;
locality = Locality;
country = Country;
}
public static PKCS10CertificationRequest generateRequest(
KeyPair pair)
throws Exception
{
// create a SubjectAlternativeName extension value
GeneralNames subjectAltNames = new GeneralNames(
new GeneralName(GeneralName.rfc822Name, "ncp.edu.pk"));
// create the extensions object and add it as an attribute
Vector oids = new Vector();
Vector values = new Vector();
Hashtable attrs = new Hashtable();
attrs.put(X509Principal.CN, commonName);
attrs.put(X509Principal.EmailAddress, email);
attrs.put(X509Principal.O, organization);
attrs.put(X509Principal.L, locality);
attrs.put(X509Principal.OU, groupName);
attrs.put(X509Principal.C,country);
oids.add(X509Extensions.SubjectAlternativeName);
values.add(new X509Extension(false, new DEROctetString(subjectAltNames)));
X509Extensions extensions = new X509Extensions(oids, values);
Attribute attribute = new Attribute(
PKCSObjectIdentifiers.pkcs_9_at_extensionRequest,
new DERSet(extensions));
return new PKCS10CertificationRequest(
"sha1WithRSAEncryption",
new X509Principal(attrs),
pair.getPublic(),
new DERSet(attribute),
pair.getPrivate());
}
public void generateKeyPair()
throws Exception
{
Security.addProvider(new BouncyCastleProvider());
Security.addProvider(new SunJCE());
// create the keys
KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
kpGen.initialize(1024);//, Utils.createFixedRandom());
KeyPair pair = kpGen.generateKeyPair();
PKCS10CertificationRequest request = generateRequest(pair);
//certb64 = null;
FileOutputStream out = new FileOutputStream("f:/test.pkcs10");
// out.write(beginRSAPrivateKey.getEncoded());
// out.write(pemWrt.toString().getBytes());
//out.close();
PEMWriter pemWrt = new PEMWriter(new OutputStreamWriter(out));
PEMWriter pemWrt1 = new PEMWriter(new OutputStreamWriter(System.out));
pemWrt1.writeObject(request);
pemWrt.writeObject(request);
pemWrt1.close();
pemWrt.close();
//byte [] certb64 = Base64.encode(request.getEncoded());
//int length = certb64.length;
//int bytestowrite = 64;
//certb64 = Base64.encode(prikey.getEncoded());
}[*/code]
(without the asterisks * )
waiting for ur reply