At start I'm sorry if I posted in the wrong category.
I have a problem with generating certificate. I written above code
Code:
X509V3CertificateGenerator certificateGenerator = new X509V3CertificateGenerator();
SecureRandom secureRandom = new SecureRandom();
ECKeyPairGenerator keyGenerator = new ECKeyPairGenerator();
keyGenerator.Init(new KeyGenerationParameters(secureRandom, 256));
AsymmetricCipherKeyPair asymmetricKeyPair = keyGenerator.GenerateKeyPair(); certificateGenerator.SetSignatureAlgorithm("SHA512withECDSA");
certificateGenerator.SetIssuerDN(new X509Name("CN=" + CN));
certificateGenerator.SetSubjectDN(new X509Name("CN=" + CN)); certificateGenerator.SetNotBefore(DateTime.Now); certificateGenerator.SetPublicKey(asymmetricKeyPair.Public);
DateTime expirationDate = DateTime.Now;
expirationDate = expirationDate.AddMonths(6);
certificateGenerator.SetNotAfter(expirationDate);
StringBuilder serialNumberBuf = new StringBuilder();
Random random = new Random();
serialNumberBuf.Append(random.Next(5, 20));
serialNumberBuf.Append(random.Next(1, 10));
serialNumberBuf.Append(random.Next(8, 15));
certificateGenerator.SetSerialNumber(new BigInteger(new System.Text.ASCIIEncoding().GetBytes(serialNumberBuf.ToString())));
certificateGenerator.AddExtension(X509Extensions.KeyUsage, false, new Org.BouncyCastle.Asn1.X509.KeyUsage(Org.BouncyCastle.Asn1.X509.KeyUsage.DigitalSignature | Org.BouncyCastle.Asn1.X509.KeyUsage.KeyAgreement));
ArrayList purpouses = new ArrayList();
purpouses.Add(KeyPurposeID.IdKPSmartCardLogon);
purpouses.Add(KeyPurposeID.IdKPIpsecUser);
Org.BouncyCastle.Asn1.X509.ExtendedKeyUsage extended_usage = new Org.BouncyCastle.Asn1.X509.ExtendedKeyUsage(purpouses); certificateGenerator.AddExtension(X509Extensions.ExtendedKeyUsage, false, extended_usage);
return certificateGenerator.Generate(asymmetricKeyPair.Private, secureRandom).GetEncoded();
and when I try to execute above:
Code:
StreamReader sr = new StreamReader(new FileStream(inputFileName, FileMode.Open, FileAccess.Read));
ContentInfo contentInfo = new ContentInfo(new System.Text.ASCIIEncoding().GetBytes(sr.ReadToEnd()));
sr.Close();
SignedCms signedCms = new SignedCms(contentInfo);
CmsSigner cmsSigner = new CmsSigner(x509cert);
signedCms.ComputeSignature(cmsSigner);
StreamWriter streamWriter = new StreamWriter(new FileStream(inputFileName+"_sgn", FileMode.OpenOrCreate, FileAccess.Write));
streamWriter.Write(System.Text.Encoding.ASCII.GetString(signedCms.Encode()));
streamWriter.Close();
I've got a error message. CmsSigner cmsSigner = new CmsSigner(x509cert); is highlighted.
From what I saw in debug mode generated certificate doesn't have private key.
Can anybody tell me what is wrong ??