makeSignature 函数 (sspi.h)

MakeSignature 函数生成消息的加密校验和,还包括防止消息丢失或插入的排序信息。 MakeSignature 允许应用程序在多种加密算法之间进行选择(如果所选机制支持)。 MakeSignature 函数使用上下文句柄引用的安全上下文。

Schannel 安全支持提供程序 (SSP) 不支持此函数。

语法

KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
  [in]      PCtxtHandle    phContext,
  [in]      unsigned long  fQOP,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo
);

参数

[in] phContext

用于对消息进行签名的安全上下文的句柄。

[in] fQOP

指示保护质量的特定标志。 安全包可以使用此参数来启用加密算法的选择。

使用摘要 SSP 时,此参数必须设置为零。

[in, out] pMessage

指向 SecBufferDesc 结构的指针。 输入时, 结构引用包含要签名的消息的一个或多个 SecBuffer 结构。 函数不处理具有 SECBUFFER_READONLY_WITH_CHECKSUM 属性的缓冲区。

SecBufferDesc 结构还引用接收签名SECBUFFER_TOKEN类型的 SecBuffer 结构。

将摘要 SSP 用作 HTTP 身份验证协议时,应按如下所示配置缓冲区。

Buffer #/buffer type 含义
0
SECBUFFER_TOKEN
空白。
1
SECBUFFER_PKG_PARAMS
方法。
2
SECBUFFER_PKG_PARAMS
Url。
3
SECBUFFER_PKG_PARAMS
HEntity。 有关详细信息,请参阅 摘要质询响应的输入缓冲区
4
SECBUFFER_PADDING
空白。 接收 签名
 

将摘要 SSP 用作 SASL 机制时,应按如下所示配置缓冲区。

Buffer #/buffer type 含义
0
SECBUFFER_TOKEN
空白。 接收签名。 此缓冲区必须足够大,以容纳可能的最大签名。 通过调用 QueryContextAttributes (General) 函数并指定SECPKG_ATTR_SIZES来确定所需的大小。 检查返回 SecPkgContext_Sizes 结构成员 cbMaxSignature
1
SECBUFFER_DATA
要签名的消息。
2
SECBUFFER_PADDING
空白。

[in] MessageSeqNo

传输应用程序分配给消息的序列号。 如果传输应用程序不保留序列号,则此参数为零。

使用摘要 SSP 时,此参数必须设置为零。 摘要 SSP 在内部管理序列号。

返回值

如果函数成功,该函数将返回SEC_E_OK。

如果该函数失败,它将返回以下错误代码之一。

返回代码 说明
SEC_I_RENEGOTIATE
远程方需要新的握手序列,或者应用程序刚刚启动关闭。 返回到协商循环并再次调用 AcceptSecurityContext (General) InitializeSecurityContext (General) 。 在第一次调用中传递空的输入缓冲区。
SEC_E_INVALID_HANDLE
phContext 指定的上下文句柄无效。
SEC_E_INVALID_TOKEN
pMessage 不包含有效的SECBUFFER_TOKEN缓冲区或包含的缓冲区太少。
SEC_E_OUT_OF_SEQUENCE
nonce 计数不符合顺序。
SEC_E_NO_AUTHENTICATING_AUTHORITY
必须重新验证 phContext) (安全上下文
STATUS_INVALID_PARAMETER
nonce 计数不是数值。
SEC_E_QOP_NOT_SUPPORTED
客户端和服务器之间协商的保护质量不包括 完整性 检查。

注解

MakeSignature 函数生成基于上下文的消息和会话密钥的签名。

VerifySignature 函数验证由 MakeSignature 函数签名的消息。

如果传输应用程序创建了安全上下文以支持序列检测,并且调用方提供了序列号,则函数在签名中包括此信息。 这可以防止消息的回复、插入和抑制。 安全包包含从传输应用程序向下传递的序列号。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 sspi.h (包括 Security.h)
Library Secur32.lib
DLL Secur32.dll

另请参阅

SSPI 函数

SecBuffer

SecBufferDesc

VerifySignature