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

derecyori
Dodano:
19.09.2010 14:28:12
Komentarzy:
0
Strona 0 / 0