Преобразование CodeFluent.Runtime.Utilities.Authenticode.FindSuitableCertificate в C#
Я пытаюсь конвертировать Dim certificate As X509Certificate2 = CodeFluent.Runtime.Utilities.Authenticode.FindSuitableCertificate()
из VB.Net в C#, и я знаю, что это X509Certificate2 AuthenticodeCert = CodeFluent.Runtime.Utilities.Authenticode.FindSuitableCertificate();
Проблема в том, что в C# он создает исключение ArgumentNullException, но работает в VB.Net.
X509Certificate2 AuthenticodeCert = Authenticode.FindSuitableCertificate(); // Problem
// Check if there is a Certificate in the Certificate Store that can signs code.
if (Authenticode.CanSignCode(AuthenticodeCert) == true) // Problem ArgumentNullException
{// Bla, Bla}
Любая помощь будет оценена. Благодарю.
2 ответа
Библиотека CodeFluent.Runtime является библиотекой платформы.Net, независимой от языка вызова. Он сам реализован на C# .
Поэтому я подозреваю, что ваша проблема не связана с языком, который вы используете, но хранит сертификаты локального компьютера или другого пользователя-исполнителя.
По умолчанию FindSuitableCertificate просматривает хранилище сертификатов My для текущего пользователя. Существует еще одна более сложная подпись, которую можно использовать, если вместо нее установлен сертификат подписи, установленный на машине:
/// <summary>
/// Finds a suitable certificate for authenticode signing.
/// </summary>
/// <param name="storeName">The store name.</param>
/// <param name="storeLocation">The store location.</param>
/// <param name="thumbPrint">The optional thumbprint. May be null.</param>
/// <returns>A certificate instance or null if not found.</returns>
public static X509Certificate2 FindSuitableCertificate(StoreName storeName, StoreLocation storeLocation, string thumbPrint)
Я понял.
X509Certificate2 AuthenticodeCert = new X509Certificate2("PFX_Private_Key", "Password");
Единственная проблема - если он возвращает ноль, то я получаю сообщение об ошибке. Похоже, что единственным выходом для этого было попробовать Catch. Кто-нибудь знает лучший способ кодирования для нулевого значения?
Благодарю.