bouncycastle出错!证书的公钥与指定的值不匹配
请帮助我; 我使用bouncy castle创建带有私有/公共密钥DSA的证书x.509,我使用以下代码: SecureRandom随机DSA=新的SecureRandom() certGendsa.AddExtension(X509Extensions.AuthorityKeyIdentifier,true,新的AuthorityKeyIdentifierStructure(cert));//cert是权威bouncycastle出错!证书的公钥与指定的值不匹配,bouncycastle,Bouncycastle,请帮助我; 我使用bouncy castle创建带有私有/公共密钥DSA的证书x.509,我使用以下代码: SecureRandom随机DSA=新的SecureRandom() certGendsa.AddExtension(X509Extensions.AuthorityKeyIdentifier,true,新的AuthorityKeyIdentifierStructure(cert));//cert是权威 certGendsa.AddExtension(X509Extensi
certGendsa.AddExtension(X509Extensions.ExtendedKeyUsage, false, new ExtendedKeyUsage(us));
certGendsa.AddExtension(X509Extensions.KeyUsage, true, new KeyUsage(KeyUsage. CrlSign|KeyUsage.KeyCertSign));
certGendsa.AddExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(false));
//私人参数:
DSACryptoServiceProvider rcspdsa = new DSACryptoServiceProvider();
DSAParameters parmsdsa = new DSAParameters();
parmsdsa.X = dsaprivkey2.X.ToByteArrayUnsigned();
parmsdsa.P= dsaprivkey2.Parameters.P.ToByteArrayUnsigned();
parmsdsa.Q= dsaprivkey2.Parameters.Q.ToByteArrayUnsigned();
parmsdsa.G= dsaprivkey2.Parameters.G.ToByteArrayUnsigned();
rcspdsa.ImportParameters(parmsdsa);
Pkcs12Store pkcs12Storedsa = new Pkcs12StoreBuilder().Build();
byte[] importcertds = DotNetUtilities.ToX509Certificate(certdsa).Export(System.Security.Cryptography.X509Certificates.X509ContentType.Pkcs12, "password");
var importcertdsa = new X509Certificate2(importcertds, "password");
X509CertificateEntry cedsa = new X509CertificateEntry(DotNetUtilities.FromX509Certificate(importcertdsa));
pkcs12Storedsa.SetCertificateEntry("DSACertificate", cedsa);
pkcs12Storedsa.SetKeyEntry("DSAPrivKey", new AsymmetricKeyEntry(DotNetUtilities.GetDsaKeyPair(rcspdsa).Private), new[] { cedsa });
pkcs12Storedsa.Save(File.Open("dsacert.pfx", FileMode.OpenOrCreate), "password".ToCharArray(), new SecureRandom());
rcspdsa.PersistKeyInCsp = true;
DSACryptoServiceProvider.UseMachineKeyStore = true;
importcertdsa.PrivateKey = rcspdsa;// hear is the exception
//将证书添加到当前用户:
var storedsa = new X509Store("Root", StoreLocation.CurrentUser);
storedsa.Open(OpenFlags.ReadWrite);
storedsa.Add(importcertdsa);
storedsa.Close();
问题是我收到了一个例外:
加密意外操作异常:
证书的公钥对应于证书的公钥(证书的公钥与指定的值不匹配)
)
异常是在指令处引发的:
importcertdsa.PrivateKey=rcspdsa
有人能帮我吗
非常感谢您解决了这个问题吗?出了什么问题?我面临着同样的问题……对于那些可能发现这个问题的人来说——类似的问题在这里得到了解决-
var storedsa = new X509Store("Root", StoreLocation.CurrentUser);
storedsa.Open(OpenFlags.ReadWrite);
storedsa.Add(importcertdsa);
storedsa.Close();