¿El número de serie del certificado es una clave única para el certificado X509? El usuario selecciona un certificado y el programa almacena el número de serie en las preferencias. ¿El siguiente código devolverá el certificado seleccionado?¿El número de serie es una clave única para el certificado X509?
public static X509Certificate2 GetCertificateBySerialNumber(string serialNumber)
{
X509Certificate2 selectedCertificate = null;
X509Store store = null;
try
{
// get certificate from the store "My", "CurrentUser"
store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection allCertificates = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection foundCertificates = (X509Certificate2Collection)allCertificates.Find(X509FindType.FindBySerialNumber, serialNumber, false);
// select the first certificate in collection
foreach (X509Certificate2 certificate in foundCertificates)
{
selectedCertificate = certificate;
break;
}
}
finally
{
if (store != null)
{
store.Close();
}
}
return selectedCertificate;
}
ACTUALIZACIÓN: Me terminó mediante huella digital del certificado, según lo sugerido por jglouie.
miniatura ≠ huella digital –
Actualizado: utilizar la huella digital. – isobretatel