8
código
Muestra solicitada:Crear un X509Certificate2 de RSACryptoServiceProvider falla con No se puede encontrar el objeto
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 clave RSA no es directamente compatible con un certificado X509. Un certificado X509 debe tener la clave firmada por un emisor, incluso si está autofirmado. ¿Puedes decirnos qué estás realmente tratando de lograr? ¿Estás tratando de crear dinámicamente un certificado X509 en código? –
Sí. Eso es exactamente lo que estoy tratando de hacer. La idea es que tengo viejos certificados RSA almacenados como una cadena con RSACryptoServiceProvider.ToXmlString (verdadero). Esos necesitarían ser leídos y exportados como archivos PFX. Los nuevos certificados RSA tendrían que generarse y almacenarse como archivos PFX. – chiefbrownbotom
Le sugiero que consulte el código fuente de Bouncy Castle .NET y ejemplos. Creo que el ejemplo bccrypto-net-1.7-src \ csharp \ crypto \ test \ src \ pkcs \ examples \ PKCS12Example.cs debería ayudarlo a comenzar. http://www.bouncycastle.org/csharp/ –