По-видимому, потому, что я открывал его из файла каждый раз, когда ключевой контейнер перегенерировался (или что-то еще). Вот код, который работает:
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2 c = store.Certificates
.Find(X509FindType.FindBySubjectName, SIGNED_SUBJECT, true)
.Cast<X509Certificate2>()
.FirstOrDefault();
store.Close();
RSACryptoServiceProvider rsa = c.PrivateKey as RSACryptoServiceProvider;
Console.WriteLine("Certificate thumbprint:" + c.Thumbprint);
Console.WriteLine("From machine key store?: " + rsa.CspKeyContainerInfo.MachineKeyStore);
Console.WriteLine("Key container name: " + rsa.CspKeyContainerInfo.KeyContainerName);
Console.WriteLine("Key unique container name: " + rsa.CspKeyContainerInfo.UniqueKeyContainerName);
Раньше при запуске фрагмента кода из моего исходного сообщения (где я открываю сертификат как файл) информация о ключах, которая печатается на консоли, будет меняться каждый раз. Запуск измененного кода показывает одну и ту же информацию каждый раз.
Наведите маленькую синюю иконку i
на консоль хром, и вы увидите подсказку, объясняющую это поведение. Переменная оценивается, когда вы нажимаете треугольник. Значение объекта в индексе «значение» изменяется между вами при первом запуске console.log и при отведении вниз и проверке значений.
См.: Отладка Chrome js - два разных значения в то же время
Редактирование: в частности, объекты и массивы оцениваются при нажатии на них в консоли. Строки (и другие примитивы) оцениваются, когда они console.log
.