CryptRetrieveTimeStamp 函数 (wincrypt.h)

CryptRetrieveTimeStamp 函数对时间戳请求进行编码,并从 URL 指定的位置检索时间戳令牌,该位置指向时间戳机构 (TSA) 。

语法

BOOL CryptRetrieveTimeStamp(
  [in]            LPCWSTR                    wszUrl,
                  DWORD                      dwRetrievalFlags,
                  DWORD                      dwTimeout,
  [in]            LPCSTR                     pszHashId,
  [in, optional]  const CRYPT_TIMESTAMP_PARA *pPara,
  [in]            const BYTE                 *pbData,
                  DWORD                      cbData,
  [out]           PCRYPT_TIMESTAMP_CONTEXT   *ppTsContext,
  [out, optional] PCCERT_CONTEXT             *ppTsSigner,
  [out, optional] HCERTSTORE                 *phStore
);

参数

[in] wszUrl

指向以 null 结尾的宽字符串的指针,该字符串包含要向其发送请求的 TSA 的 URL。

dwRetrievalFlags

一组指定如何检索时间戳的标志。

含义
TIMESTAMP_DONT_HASH_DATA
0x00000001
禁止对 pbData 参数指向的字节数组进行哈希计算。
TIMESTAMP_VERIFY_CONTEXT_SIGNATURE
0x00000020
对检索到的时间戳强制实施签名验证。
注意仅当 pPara 参数指向CRYPT_TIMESTAMP_PARAfRequestCerts 成员设置为 TRUE 时,TIMESTAMP_VERIFY_CONTEXT_SIGNATURE标志才有效。
 
TIMESTAMP_NO_AUTH_RETRIEVAL
0x00020000
设置此标志以禁止自动身份验证处理。

dwTimeout

一个 DWORD 值,该值指定等待检索的最大毫秒数。 如果此参数设置为零,则此函数不会超时。

[in] pszHashId

指向以 null 结尾的字符串的指针,该字符串包含 OID) (哈希算法 对象标识符

[in, optional] pPara

指向包含请求的其他参数 的 CRYPT_TIMESTAMP_PARA 结构的指针。

[in] pbData

指向要标记时间戳的字节数组的指针。

cbData

pbData 参数指向的数组的大小(以字节为单位)。

[out] ppTsContext

指向 PCRYPT_TIMESTAMP_CONTEXT 结构的指针。 使用完上下文后,必须通过调用 CryptMemFree 函数来释放它。

[out, optional] ppTsSigner

指向接收签名者证书 的PCERT_CONTEXT 的指针。 使用此结构后,必须通过将此指针传递给 CertFreeCertificateContext 函数来释放它。

如果不需要 TSA 签名者的证书,请将此参数设置为 NULL

[out, optional] phStore

使用时间戳响应中的证书初始化的证书存储的句柄。 此存储可用于验证时间戳响应的签名者证书。

如果不需要 TSA 支持证书,此参数可以为 NULL 。 完成使用此句柄后,将其传递给 CertCloseStore 函数以释放它。

返回值

如果函数无法检索、解码和验证时间戳上下文,则返回 FALSE。 有关扩展的错误信息,请调用 GetLastError 函数。

要求

   
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 wincrypt.h
DLL Crypt32.dll

另请参阅

CryptVerifyTimeStampSignature