ICertAdmin2::P ublishCRLs 方法 (certadm.h)
PublishCRLs 方法发布证书颁发机构 (CA) (CRL) 的证书吊销列表。 此方法首先在 ICertAdmin 接口中定义。
PublishCRLs 方法基于 CA 的当前证书发布 CRL,以及基于已续订且尚未过期的任何 CA 证书的 CRL。
语法
HRESULT PublishCRLs(
[in] const BSTR strConfig,
[in] DATE Date,
[in] LONG CRLFlags
);
参数
[in] strConfig
表示 CA 的有效配置字符串,格式为 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是证书服务服务器的网络名称,CANAME 是证书颁发机构的公用名称,如证书服务设置期间输入。 有关配置字符串名称的信息,请参阅 ICertConfig。
重要提示 更改配置字符串时,PublishCRL 不会清除内部缓存。 更改 CA 的配置字符串时,必须实例化新的 ICertAdmin 对象,并使用新的配置字符串再次调用此方法。
[in] Date
指定 CRL 的下一个更新值(以 GMT 为单位)。 如果 Date 为非零值,则 CRL 的下一个更新值为 Date,具体取决于 证书服务强制执行的舍入或上限限制。 如果 Date 为零,则从默认 CRL 发布周期计算 CRL 的下一个更新值。
[in] CRLFlags
指定 CRL 发布选项的值。 此值可以是以下标志的按位组合。
返回值
无
备注
若要确定 CA 是否已成功发布基 CRL 和增量 CRL,请分别使用CR_PROP_BASECRLPUBLISHSTATUS和CR_PROP_DELTACRLPUBLISHSTATUS属性标识符调用 ICertAdmin2::GetCAProperty 。
示例
以下示例演示了发布 CRL。
DATE ExpDate; // CRL expiration date.
SYSTEMTIME st;
BSTR bstrCA = NULL;
// Set the CRL expiration date to noon, July 1, 2001.
// Zero out values first (avoids setting minutes,
// seconds, and so on).
memset(&st, 0, sizeof(SYSTEMTIME));
st.wYear = 2001;
st.wMonth = 7; // July
st.wDay = 1; // first day of month
st.wHour = 12; // noon
// Place the date in required format.
if (!SystemTimeToVariantTime(&st, &ExpDate))
{
printf("Unable to convert time\n");
goto error;
}
bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (NULL == bstrCA)
{
printf("Memory allocation failed\n");
goto error;
}
// Publish the CRL.
// pCertAdmin is a previously instantiated ICertAdmin object.
hr = pCertAdmin2->PublishCRLs(bstrCA,
ExpDate,
CA_CRL_BASE);
if (FAILED(hr))
{
printf("Failed PublishCRLs [%x]\n", hr);
goto error;
}
else
printf("PublishCRLs succeeded\n");
// Done.
error:
// Free resources.
if (bstrCA)
SysFreeString(bstrCA);
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | certadm.h (包括 Certsrv.h) |
Library | Certidl.lib |
DLL | Certadm.dll |