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 |