Это серийный номер уникальный ключ для сертификата X509?

Является ли серийный номер сертификата уникальным ключом для сертификата 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;
}

ОБНОВЛЕНИЕ: Я использовал отпечаток сертификата, как было предложено jglouie .

19
задан davmos 21 October 2013 в 14:51
поделиться