1

Тема: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

Возникла необходимость проверять срок действия рабочего сертификата.
К сожалению, не нашел ни одного примера (js, vbs) использования ActiveX объектов, поставляемых cpkicom.dll.
Попытка освоить cpkicom.dll методом "научного тыка" к успеху не привела.
Очень прошу поделиться хотя бы минимальным примером использования метода VCERT.FindCert для поиска рабочего сертификата.

2

Re: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

Добрый день!

Библиотека VCERTCOM предназначена для вызова из Visual Basic и Delphi.
При вызове из js и vbs метод FindCert не будет возвращать корректный результат.

3

Re: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

Большое спасибо за ответ!
Хорошо. Приведите, пожалуйста, пример работы данного метода в Visual Basic. (ну или на Delphi, если на VB ничего нет).

Или, может быть, есть способ вызвать окно "Объекты с истекающим сроком действия" из командной строки?

4

Re: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

Библиотека VCERTCOM описана в документе ВАМБ.00042-02 33 02, там же есть примеры на Delphi и Visual Basic.

Возможно, для вашей задачи будет достаточно инициализировать контекст с флагом FLAG_INIT_CHECKEXPIRED (Показывать объекты с истекающим сроком действия при инициализации), пример инициализации на vbs:

<script language="vbscript" type="text/vbscript">
    Function Init()
        On Error Resume Next
        Err.Clear
        Dim Crypt
        Dim errText

        Set Crypt = Nothing
        Set Crypt = CreateObject("PKI.VCERT")
        If Crypt is Nothing Then
            MsgBox "Отсутствует объект PKI.VCERT.", 0, "Ошибка"
            Exit Function
        End If
        Crypt.Initialize "MY", 2
        If Err.Number <> 0 Then
            Crypt.GetPKIErrorTextVBS Err.number, errText
            MsgBox "Ошибка инициализации: " & errText, 0, "Ошибка"
        End If

        Set Crypt = Nothing
    End Function
</script>

5

Re: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

Спасибо, скрипт работает как задумано и окно "Объекты с истекающим сроком действия" показывает.

Только одно НО: При инициализации объекта возникает окно КриптоПро CSP c предложением ввести pin-код для контейнера.
А никак нельзя инициировать контекст БЕЗ запроса pin-кода? (Запускается же "АРМ РКС Справочника" без pin-кода...)
Может есть и такой флаг? (К сожалению, документ ВАМБ.00042-02 33 02 разыскать не удалось).

6

Re: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

Есть флаг FLAG_INIT_VERIFYCONTEXT (Контекст без доступа к закрытому ключу). Инициализация будет выглядеть так:

Crypt.Initialize "MY", &H80000002

7

Re: Работа с cpkicom.dll (Клиент ВТБ. Версия 2.0)

И еще раз - ОГРОМНОЕ спасибо!
Проблема полностью решена!