Работа с rutoken. C#
Здравствуйте.
Подскажите пожалуйста как можно определить вставлен ли rutoken в ПК?
Интересуют так же способы определения на rutoken наличия актуальных сертификатов (не просроченных).
всё варианты на c#
Вы не авторизованы. Пожалуйста, войдите или зарегистрируйтесь.
Форум Рутокен переведен в режим «только для чтения».
Все существующие темы и решение вопросов остаются доступными для просмотра и поиска.
Для получения технической поддержки, пожалуйста, используйте следующие каналы связи: 
Электронная почта: hotline@rutoken.ru 
Телефон: +7 (495) 925-77-90
Форум Рутокен → Техническая поддержка разработчиков → Работа с rutoken. C#
Страницы 1
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
Здравствуйте.
Подскажите пожалуйста как можно определить вставлен ли rutoken в ПК?
Интересуют так же способы определения на rutoken наличия актуальных сертификатов (не просроченных).
всё варианты на c#
Добрый день, ваш вопрос к сожалению слишком расплывчатый, чтобы на него можно было бы конкретно ответить. 
ознакомьтесь для начала с комплектом разработчика: https://www.rutoken.ru/developers/sdk/ и порталом документации http://dev.rutoken.ru
Посмотрите пожалуйста на мой кастыль. Посоветуйте, как его улучшить и будет ли он работать правильно?
У меня работает, результат тестирования :
С помощью метода "ПредварительнаяПроверкаПередПодписанием", пользователю предоставляется выбор сертификата, если пользователь не выбирает сертификат, получаем сообщение и возвращаем Null, если выбранный сертификат просроченный, получаем сообщение об этом и возратим null, если сертификат валидный, пробуем найти ключ, если ключа нет, получаем отрицательный результат проверки и метод возвратит null.
Если сертификат выбранный пользователем не просроченный и вставлен ключевой носитель, то метод вернёт сертификат для дальнейшего подписания с него.
зы
нужно предоставить выбор сертификата из личных сертификатов пользователя и тех, которые присутствуют на ключе, как у меня работает в коде, пока не разобрался, вроде бы выбор сертификатов осуществляется по личным сертификатам пользователя...
    /// <summary>
    /// Возвращает валидный сертификат или null если валидный сертификат отсутствует
    /// </summary>
    /// <returns></returns>
    public X509Certificate2 ПредварительнаяПроверкаПередПодписанием()
    {
        // Находим секретный ключ по сертификату в хранилище MY
        X509Store store = new X509Store("My", StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);
        X509Certificate2Collection coll = X509Certificate2UI.SelectFromCollection(store.Certificates, "Выберите сертификат", "Выберите сертификат", X509SelectionFlag.SingleSelection);
        if (coll.Count == 0 || coll == null)
        {
            Console.WriteLine("Ключ не найден.");
            return null;
        }
        X509Certificate2 certificate = coll[0];
        if (certificate == null /*|| certificate.Verify()*/)
        {
            Console.WriteLine("Ключ не найден.");
            return null;
        }
        if (!ValidateCertificate(certificate))
        {
            return null;
        }
        //заглушка для вызовы диалога выбора носителя ключа
        byte[] buff = new byte[8192];
        var contentInfo = new ContentInfo(buff);
        // сертификат для подписания
        SignedCms signedCms = new SignedCms(contentInfo, true);
        try
        {
            // Вычисляем подпись
            var cmsSigner = new CmsSigner(certificate);
            signedCms.ComputeSignature(cmsSigner, false);
        }
        catch (System.Security.Cryptography.CryptographicException ex)
        {
            Console.WriteLine(ex.Message);
            return null;
        }
        return certificate;
    }
     /// <summary>
     /// Проверка валидности сертификата
     /// </summary>
    private bool ValidateCertificate(X509Certificate2 x509)
    {
        bool valid = false;
        DateTime timeSert = DateTime.Parse(x509.GetExpirationDateString());
        if (DateTime.Now.CompareTo(timeSert) < 0)
        {
            // Console.WriteLine("Сертификат валиден. Текущая дата: " + DateTime.Now.ToString() + " Дата сертификата: " + timeSert.ToString()); */
            valid = true;
        }
        else
        {
            Console.WriteLine("Сертификат не валиден. Текущая дата: " + DateTime.Now.ToString() + " Дата сертификата: " + timeSert.ToString());
        }
        return valid;
    }Добрый день.
Похоже, что ваш код рабочий, но я не вижу где в нем хоть какая-то работа с Рутокен?
Страницы 1
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
Форум Рутокен → Техническая поддержка разработчиков → Работа с rutoken. C#