Поделиться через


Метод ICertAdmin::IsValidCertificate (certadm.h)

Метод IsValidCertificate проверяет сертификат по ключу центра сертификации (ЦС) и проверяет, что сертификат не был отозван. Этот метод был впервые определен в интерфейсе ICertAdmin .

Синтаксис

HRESULT IsValidCertificate(
  [in]          const BSTR strConfig,
  [in]          const BSTR strSerialNumber,
  [out, retval] LONG       *pDisposition
);

Параметры

[in] strConfig

Представляет допустимую строку конфигурации для ЦС в формате COMPUTERNAME\CANAME, где COMPUTERNAME — сетевое имя сервера служб сертификации, а CANAME — общее имя центра сертификации, указанное во время настройки служб сертификации. Сведения об имени строки конфигурации см. в разделе ICertConfig.

Важно!IsValidCertificate не очищает внутренний кэш при изменении строки конфигурации. При изменении строки конфигурации для ЦС необходимо создать экземпляр нового объекта ICertAdmin и снова вызвать этот метод с новой строкой конфигурации.
 

[in] strSerialNumber

Указывает серийный номер сертификата для проверки. Строка должна указывать серийный номер в виде четного числа шестнадцатеричных цифр. При необходимости можно задать нулевые префиксы к числу, чтобы получить четное число цифр. Можно использовать не более одного начального нуля.

[out, retval] pDisposition

Указатель на объект LONG , получающий значение ликвидации.

Возвращаемое значение

C++

Если метод выполнен успешно и параметру pDisposition присвоено одно из следующих значений, метод возвращает S_OK.

Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

VB

Возвращаемое значение указывает ликвидацию сертификата. Это значение является одним из следующих значений. (Эти значения определены в Certadm.h.)
Код возврата Описание
CA_DISP_INCOMPLETE
Вызов не был завершен.
CA_DISP_ERROR
Вызов не выполнен.
CA_DISP_REVOKED
Сертификат был отозван.
CA_DISP_VALID
Сертификат по-прежнему действителен.
CA_DISP_INVALID
Сертификат никогда не выдавался.
CA_DISP_UNDER_SUBMISSION
Сертификат находится в состоянии ожидания.

Комментарии

Этот метод определяет только, был ли сертификат выдан и не отозван в настоящее время; он не проверка, что текущее время и дата находятся в пределах периода, в течение которого сертификат действителен (свойства сертификата NotBefore и NotAfter). Приложение, использующее этот метод, также отвечает за проверку срока действия сертификата.

Задачи администрирования используют DCOM. Код, вызывающий этот метод интерфейса, как определено в более ранней версии Certadm.h, будет выполняться на серверах Windows, если клиент и сервер работают под одной операционной системой Windows.

Примеры

    BSTR       bstrCA = NULL;      // Machine\CAName
    BSTR       bstrSerial = NULL;  // Contains the certificate 
                             // serial number
    long       nDisp;              // Contains the certificate
                             // disposition
    HRESULT    hr;

    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    bstrSerial = SysAllocString(L"<SERIALNUMBERHERE>");

    if (NULL == bstrCA || NULL == bstrSerial)
    {
        printf("Memory allocation failed\n");
        goto error;
    }

    //  Determine whether the certificate is valid.
    //  pCertAdmin is a previously instantiated ICertAdmin 
    //  object pointer.
    hr = pCertAdmin->IsValidCertificate(bstrCA, bstrSerial, &nDisp);
    if (FAILED(hr))
    {
        printf("Failed IsValidCertificate [%x]\n", hr);
        goto error;
    }
    //  Use nDisp as needed.

    //  Done processing.

error:

    //  Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrSerial)
        SysFreeString(bstrSerial);

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header certadm.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certadm.dll

См. также раздел

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig