ICertAdmin::IsValidCertificate 方法 (certadm.h)

IsValidCertificate方法根据证书颁发机构 (CA) 密钥验证证书,并检查证书是否已吊销。 此方法首先在 ICertAdmin 接口中定义。

语法

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

参数

[in] strConfig

表示 CA 的有效配置字符串,格式为 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是证书服务服务器的网络名称,CANAME 是证书颁发机构的公用名称,如证书服务设置期间输入。 有关配置字符串名称的信息,请参阅 ICertConfig

重要提示 更改配置字符串时,IsValidCertificate 不会清除内部缓存。 更改 CA 的配置字符串时,必须实例化新的 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
标头 certadm.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certadm.dll

另请参阅

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig