Problem z generowaniem certyfikatu
Witam serdecznie,
mam problem z wygenerowaniem certyfikatu w dotnet. (VS 2008).
Generuje go poniższym kodem:
[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();
[/code]
a gdy próbuję wykorzystać certyfikat poniższym kodem:
[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();
[/code]
dostaję wiadomość o błędzie. CmsSigner cmsSigner = new CmsSigner(x509cert); tą linijkę mi podświetla.
Z tego co sprawdziłem w czasie debug, przeglądając certyfikat brakowało w nim klucza prywatnego.
Czy ktoś może mi z tym pomóc ?
Odpowiedzi: 0
Strona 0 / 0