Share via


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.)
傳回碼 Description
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)
程式庫 Certidl.lib
Dll Certadm.dll

另請參閱

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig