共用方式為


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 驗證通訊協定使用時,緩衝區應設定如下。

緩衝區 #/緩衝區類型 意義
0
SECBUFFER_TOKEN
空白。
1
SECBUFFER_PKG_PARAMS
方法。
2
SECBUFFER_PKG_PARAMS
Url。
3
SECBUFFER_PKG_PARAMS
HEntity。 如需詳細資訊,請參閱 摘要式挑戰回應的輸入緩衝區
4
SECBUFFER_PADDING
空白。 接收 簽章
 

當摘要式 SSP 做為 SASL 機制使用時,緩衝區應設定如下。

緩衝區 #/緩衝區類型 意義
0
SECBUFFER_TOKEN
空白。 接收簽章。 此緩衝區必須夠大,才能保存最大的可能簽章。 呼叫 QueryContextAttributes (General) 函式並指定SECPKG_ATTR_SIZES,以判斷所需的大小。 檢查傳回 SecPkgContext_Sizes 結構成員 cbMaxSignature
1
SECBUFFER_DATA
要簽署的訊息。
2
SECBUFFER_PADDING
空白。

[in] MessageSeqNo

傳輸應用程式指派給訊息的序號。 如果傳輸應用程式未維護序號,則此參數為零。

使用摘要 SSP 時,此參數必須設定為零。 摘要 SSP 會在內部管理序號。

傳回值

如果函式成功,函式會傳回SEC_E_OK。

如果函式失敗,它會傳回下列其中一個錯誤碼。

傳回碼 Description
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)
程式庫 Secur32.lib
Dll Secur32.dll

另請參閱

SSPI 函式

SecBuffer

SecBufferDesc

VerifySignature