8
codice
Campione richiesto:Creare un X509Certificate2 da RSACryptoServiceProvider fallisce con Non riesci a trovare l'oggetto
CspParameters cspParameters = new CspParameters();
cspParameters.ProviderType = 1; // PROV_RSA_FULL
// Create the crypto service provider, generating a new
// key.
mRsaCSP = new RSACryptoServiceProvider(mDefaultKeyLength, cspParameters);
mRsaCSP.PersistKeyInCsp = true;
RSAParameters privateKey = mRsaCSP.ExportParameters(true);
byte[] rsaBytes = mRsaCSP.ExportCspBlob(true);
try
{
X509Certificate2 cert = new X509Certificate2(rsaBytes);
mKeyDataPfx = Convert.ToBase64String(cert.Export(X509ContentType.Pkcs12, password));
}
catch (Exception ce)
{
string error = ce.Message;
}
Una chiave RSA non è direttamente compatibile con un certificato X509. Un certificato X509 deve avere la chiave firmata da un emittente, anche se è autofirmata. Puoi dirci cosa stai effettivamente cercando di realizzare? Stai cercando di creare dinamicamente un certificato X509 nel codice? –
Sì. Questo è esattamente quello che sto cercando di fare. L'idea è che ho i vecchi certificati RSA memorizzati come stringa con RSACryptoServiceProvider.ToXmlString (true). Questi dovrebbero essere letti ed esportati come file PFX. I nuovi certificati RSA dovrebbero essere generati e archiviati come file PFX. – chiefbrownbotom
Ti suggerisco di consultare il codice sorgente di Bouncy Castle .NET ed esempi. Penso che l'esempio bccrypto-net-1.7-src \ csharp \ crypto \ test \ src \ pkcs \ examples \ PKCS12Example.cs dovrebbe iniziare. http://www.bouncycastle.org/csharp/ –