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 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Cryptnet.lib |
DLL | Cryptnet.dll |