Преобразование CodeFluent.Runtime.Utilities.Authenticode.FindSuitableCertificate в C # - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь преобразовать 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 ]

0 голосов
/ 11 июня 2018

Библиотека 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)
0 голосов
/ 10 июня 2018

Я разобрался.

X509Certificate2 AuthenticodeCert = new X509Certificate2("PFX_Private_Key", "Password");

Единственная проблема - если он возвращает ноль, то я получаю сообщение об ошибке.Похоже, что единственным выходом для этого было попытаться поймать.Кто-нибудь знает лучший способ кодирования для нулевого значения?

Спасибо.

...