CryptGetObjectUrl 函数 (wincrypt.h)

CryptGetObjectUrl 函数从证书证书信任列表 (CTL) 或证书吊销列表 (CRL) 获取远程对象的 URL。

函数获取 对象,对其进行解码,并提供指向对象中 URL 数组的指针。 例如,从证书中,URL 的 CRL 通讯组列表将位于 数组中。

语法

BOOL CryptGetObjectUrl(
  [in]      LPCSTR           pszUrlOid,
  [in]      LPVOID           pvPara,
  [in]      DWORD            dwFlags,
  [out]     PCRYPT_URL_ARRAY pUrlArray,
  [in, out] DWORD            *pcbUrlArray,
  [out]     PCRYPT_URL_INFO  pUrlInfo,
  [in, out] DWORD            *pcbUrlInfo,
            LPVOID           pvReserved
);

参数

[in] pszUrlOid

指向 对象标识符 的指针 (标识所请求的 URL 的 OID) 。 如果 pszUrlOid 参数的 HIWORD 为零,则 LOWORD 指定指定结构类型的整数标识符。

此参数的取值可为下列值之一: 有关这些值如何影响 pvPara 参数的信息,请参阅“含义”列中的标题“For the pvPara 参数”。

含义
URL_OID_CERTIFICATE_ISSUER
提供从证书的颁发机构信息访问扩展或属性检索到的证书颁发者的 URL。

对于 pvPara 参数:指向由请求其 URL 的颁发者颁发的 CERT_CONTEXT 结构的指针。

URL_OID_CERTIFICATE_CRL_DIST_POINT
提供从证书的 CRL 分发点扩展或属性检索的 CRL 分发点的 URL 列表。

对于 pvPara 参数:指向请求其 CRL 分发点 的CERT_CONTEXT 结构的指针。

URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP
提供 OCSP 和 CRL 分发点 URL 的列表,这些 URL 来自颁发机构信息访问 (AIA) 和 CRL 分发点扩展或证书的属性。 函数首先返回任何 CRL 分发点 URL。 在使用任何 OCSP URL 之前,必须删除 L“ocsp:”前缀。

对于 pvPara 参数:指向请求 OCSP 和 CRL 分发点 URL 的CERT_CONTEXT 结构的指针。

URL_OID_CERTIFICATE_OCSP
提供机构信息访问的 OCSP URL, (AIA) 证书的扩展或属性。

对于 pvPara 参数:指向请求其 OCSP URL 的CERT_CONTEXT 结构的指针。

URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT
提供 OCSP 和 CRL 分发点 URL 的列表,这些 URL 来自颁发机构信息访问 (AIA) 和 CRL 分发点扩展或证书的属性。 函数首先返回任何 OCSP URL。 在使用任何 OCSP URL 之前,必须删除 L“ocsp:”前缀。

对于 pvPara 参数:指向请求 OCSP 和 CRL 分发点 URL 的CERT_CONTEXT 结构的指针。

URL_OID_CERTIFICATE_ONLY_OCSP
提供来自机构信息访问的 OCSP URL 列表, (AIA) 证书的扩展或属性。 在使用任何 OCSP URL 之前,必须删除 L“ocsp:”前缀。

对于 pvPara 参数:指向请求 OCSP URL 的CERT_CONTEXT 结构的指针。

URL_OID_CTL_ISSUER
提供从 PKCS #7 CTL 中每个签名者信息中编码的颁发机构信息访问属性方法中检索的 CTL 颁发者的 URL。

对于 pvPara 参数:指向签名者索引 CTL_CONTEXT 结构的指针,该结构由请求其 URL(由签名者索引标识)的颁发者颁发。

URL_OID_CTL_NEXT_UPDATE
提供从颁发机构信息访问 CTL 扩展、属性或签名者信息属性方法检索的 CTL 的下一个更新的 URL。

对于 pvPara 参数:指向请求其下一个更新 URL 的签名者索引CTL_CONTEXT结构的指针,以及可选的签名者索引(如果需要检查签名者信息属性)。

URL_OID_CRL_ISSUER
提供从 CRL 上的属性检索到的 CRL 颁发者的 URL,该属性继承自使用者证书 (使用者证书颁发者或使用者证书分发点扩展) 。 它被编码为颁发机构信息访问扩展方法。

对于 pvPara 参数:指向请求其 URL 的颁发者颁发的 CRL_CONTEXT 结构的指针。

URL_OID_CERTIFICATE_FRESHEST_CRL
检索证书的最新 CRL 扩展或属性。

对于 pvPara 参数:正在请求其最新 CRL 分发点的证书的PCCERT_CONTEXT。

URL_OID_CRL_FRESHEST_CRL
检索 CRL 的最新 CRL 扩展或属性。

对于 pvPara 参数:指向 CERT_CRL_CONTEXT_PAIR 结构的指针,该结构包含正在请求其最新 CRL 分发点的证书的基本 CRL。

URL_OID_CROSS_CERT_DIST_POINT
检索证书的跨证书分发点扩展或属性。

对于 pvPara 参数:正在请求其跨证书分发点的证书的PCCERT_CONTEXT。

URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS
检索证书的跨证书使用者信息访问扩展或属性。

对于 pvPara 参数:请求跨证书使用者信息访问的证书的PCCERT_CONTEXT。

[in] pvPara

pszUrlOid 的值确定的结构。 有关详细信息,请参阅 pszUrlOid 参数的说明。

[in] dwFlags

一组标志,用于获取对象的 URL 定位符。 这可以是零,也可以是以下一个或多个值的组合。

含义
CRYPT_GET_URL_FROM_PROPERTY
从 对象的 属性中找到 URL, (数据) 的位置。
CRYPT_GET_URL_FROM_EXTENSION
从 对象的扩展中找到 URL。
CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE
从签名者信息数据中找到未经身份验证的属性中的 URL。
CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE
从签名者信息数据中找到经过身份验证的属性中的 URL。

[out] pUrlArray

指向缓冲区的指针,用于接收值条目的数据。 此参数可以为 NULL ,以查找保存数据所需的缓冲区长度。

有关详细信息,请参阅 检索长度未知的数据

[in, out] pcbUrlArray

指向 DWORD 的指针,指定 pUrlArray 参数指向的缓冲区的大小(以字节为单位)。 函数返回时, DWORD 包含缓冲区中存储的字节数。 仅当 pUrlArrayNULL 时,此参数才能为 NULL

[out] pUrlInfo

指向接收值条目数据的 CRYPT_URL_INFO 结构的可选指针。

[in, out] pcbUrlInfo

指向 DWORD 的指针,指定 pUrlArray 参数指向的缓冲区的大小(以字节为单位)。 函数返回时, DWORD 包含缓冲区中存储的字节数。

注意 处理缓冲区中返回的数据时,应用程序必须使用返回的数据的实际大小。 实际大小可以略小于输入时指定的缓冲区的大小。 在输入时,缓冲区大小通常指定得足够大,以确保可能的最大输出数据将容纳在缓冲区中。 输出时,此参数指向的变量会更新,以反映复制到缓冲区的数据的实际大小。
 

pvReserved

保留供将来使用,必须为 NULL

返回值

如果函数成功,则函数) 返回非零 (TRUE

如果函数失败,则返回零 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 wincrypt.h
Library Cryptnet.lib
DLL Cryptnet.dll

另请参阅

远程对象检索函数