PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC回调函数 (wincrypt.h)

调用 PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC 回调函数来对计算的哈希进行签名和编码。

语法

PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC PfnCryptSignAndEncodeHashFunc;

BOOL PfnCryptSignAndEncodeHashFunc(
  [in]      NCRYPT_KEY_HANDLE hKey,
  [in]      DWORD dwCertEncodingType,
  [in]      PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
  [in]      void *pvDecodedSignPara,
  [in]      LPCWSTR pwszCNGPubKeyAlgid,
  [in]      LPCWSTR pwszCNGHashAlgid,
  [in]      BYTE *pbComputedHash,
  [in]      DWORD cbComputedHash,
  [out]     BYTE *pbSignature,
  [in, out] DWORD *pcbSignature
)
{...}

参数

[in] hKey

加密 API 的句柄:下一代 (CNG) 私钥 ,用于对哈希进行签名。

[in] dwCertEncodingType

指定使用的编码类型。 始终可以通过将证书和 消息编码类型 与按位 OR 操作结合使用来指定它们,如以下示例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING当前定义的编码类型为:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pSignatureAlgorithm

指向 CRYPT_ALGORITHM_IDENTIFIER 结构的指针,该结构包含签名 对象标识符 (OID) 及其可选编码参数。

[in] pvDecodedSignPara

指向先前由 PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC 函数返回的解码签名参数数据结构的可选指针。

[in] pwszCNGPubKeyAlgid

一个 Unicode 字符串,其中包含对应于 pSignatureAlgorithm-pszObjId> 的 CNG 公钥算法标识符。

[in] pwszCNGHashAlgid

一个 Unicode 字符串,其中包含对应于 pSignatureAlgorithm-pszObjId> 或 pvDecodedSignPara 中的哈希算法标识符的 CNG 哈希算法标识符。

[in] pbComputedHash

指向 BCryptFinishHash 函数返回的计算哈希字节的指针,对应于 pwszCNGHashAlgid

[in] cbComputedHash

一个 值,该值表示计算哈希的长度(以字节为单位)。

[out] pbSignature

指向编码签名字节的指针。

[in, out] pcbSignature

一个 值,该值表示编码签名的长度(以字节为单位)。

返回值

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

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

如果此回调函数不支持签名算法,则必须返回 FALSE 并使用 ERROR_NOT_SUPPORTED调用 SetLastError

注解

可以使用 OID 支持函数 来部署此回调函数。 Wincrypt.h 为此定义了以下常量。

一直 定义
CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC “CryptDllSignAndEncodeHash”

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wincrypt.h