CryptGetTimeValidObject 函数 (wincrypt.h)
CryptGetTimeValidObject 函数检索在给定上下文和时间内有效的 CRL、OCSP 响应或 CTL 对象。
语法
BOOL CryptGetTimeValidObject(
[in] LPCSTR pszTimeValidOid,
[in] LPVOID pvPara,
[in] PCCERT_CONTEXT pIssuer,
[in, optional] LPFILETIME pftValidFor,
[in] DWORD dwFlags,
[in] DWORD dwTimeout,
[out, optional] LPVOID *ppvObject,
[in, optional] PCRYPT_CREDENTIALS pCredentials,
[in, out, optional] PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO pExtraInfo
);
参数
[in] pszTimeValidOid
指向标识所请求对象的 对象标识符(OID)的指针。 如果 pszTimeValidOid 参数的 HIWORD 为零,则 LOWORD 指定指定结构的类型的整数标识符。
此参数可以是下列值之一。 有关这些值如何影响 pvPara 参数的信息,请参阅“含义”列中的标题“For the pvPara parameter”。
价值 | 意义 |
---|---|
|
根据从当前 CTL 上下文的 NextUpdateLocation 属性或扩展获取的 URL 提供证书信任列表(CTL)。
对于 pvPara 参数:指向表示当前证书信任列表的 PCCTL_CONTEXT 的指针。 |
|
此值保留供将来使用。 |
|
根据从当前证书上下文的 CRL 分发点扩展获取的信息提供 CRL。
对于 pvPara 参数:指向表示使用者证书的 PCCERT_CONTEXT 的指针。 |
|
根据从当前证书上下文的最新 CRL 扩展获取的信息提供增量 CRL。
对于 pvPara 参数:指向表示使用者证书的 PCCERT_CONTEXT 的指针。 |
|
根据从当前 CRL 上下文的最新 CRL 扩展获取的信息提供增量 CRL。
对于 pvPara 参数:指向表示使用者证书及其基础 CRL 的 PCCERT_CRL_CONTEXT_PAIR 的指针。 |
[in] pvPara
由 pszTimeValidOid的值确定的结构。 有关详细信息,请参阅 pszTimeValidOid 参数的说明。
[in] pIssuer
指向包含颁发者的证书的 CERT_CONTEXT 的指针。
[in, optional] pftValidFor
指向可选 FILETIME 当前系统时间的结构版本或当前上下文中的新鲜时间的指针。
[in] dwFlags
一个值,用于确定各种检索因素,例如超时、源和有效性检查。
下表列出了 dwFlags 参数的可能值。
价值 | 意义 |
---|---|
|
使用客户端计算机的累积超时注册表设置来吊销 URL 检索。 |
|
仅从客户端 URL 缓存中检索编码位。 请勿使用线路检索 URL。 |
|
检查当前上下文的 ThisUpdate 属性或扩展是否大于或等于 ftValidFor 参数。 |
|
不执行时间有效性检查。 使用此函数可检索最近通过线路的基 CRL,或在缓存检索期间绕过时间有效性检查。 设置此标志后,pftValidFor 可以 NULL。 |
|
不要执行签名验证。 在验证检索到的对象时,将在此函数之外执行,或强制替换检索到的缓存项,并为该对象提供新的缓存项。 |
|
此值保留供将来使用。 |
|
仅基于当前上下文中的颁发机构信息访问 URL 从 OCSP 响应程序服务中检索有效对象的时间。 CertVerifyRevocation 函数在使用 dwFlags 参数设置为CERT_VERIFY_REV_SERVER_OCSP_FLAG调用时设置此标志。 |
|
仅从线路中检索编码位。 不使用 URL 缓存。 |
[in] dwTimeout
一个值(以毫秒为单位),该值指定何时终止尚未返回结果的 URL 检索尝试。
[out, optional] ppvObject
指向返回对象的地址的指针。 返回类型可以是 CryptRetrieveObjectByUrl 函数的 pszObjectOid 参数中显示的支持类型之一。
[in, optional] pCredentials
指向用于访问 URL 的可选 CRYPT_CREDENTIALS 结构的指针。 当前唯一支持的凭据类型是用户名和密码凭据。
[in, out, optional] pExtraInfo
指向可选 CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO 结构的指针,该结构包含有关对象缓存项的额外信息。
返回值
如果函数成功,该函数将返回 true 。
如果该函数失败,则返回 FALSE。 有关扩展错误信息,请调用 GetLastError。
下面是一些可能的错误代码。
返回代码 | 描述 |
---|---|
|
为 pszTimeValidOid 参数指定的调用方指定的 TIME_VALID_OID_GET_CRL。 不支持此 OID。 |
|
调用方设置CRYPT_OCSP_ONLY_RETRIEVAL标志,上下文包括非 OCSP URL。 |
|
该函数无法从证书上下文检索 CRL 或检索 CTL,并且无法从缓存条目复制任何 URL。 |
|
该函数无法为内部数组作分配内存。 |
|
调用方未设置 CRYPT_CACHE_ONLY_RETRIEVAL 标志,并且未连接到 Internet。 |
言论
Cryptnet 动态链接库实现时间有效对象(TVO)缓存,该缓存用于支持 CryptGetTimeValidObject 函数。 缓存由进程全局 TVO 代理使用,其中每个缓存条目都包含以下信息。
- 源标识符
- 上下文 OID
- 上下文
- 检索 URL
- 过期时间
- 脱机 URL 时间信息
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista [仅限桌面应用] |
支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | wincrypt.h |
库 | Cryptnet.lib |
DLL | Cryptnet.dll |