串流內容
數據流內容會處理安全的數據流導向通訊協定,例如 SSL 或 PCT。 為了共用相同的介面和類似的認證管理,SSPI 提供串流內容的支援。 安全性通訊協定 同時納入數據流驗證配置和記錄格式。
若要提供數據流導向的通訊協定,支援串流內容的安全性套件 具有下列程式特性:
封裝會設定SECPKG_FLAG_STREAM旗標,指出它支持數據流語意。
傳輸應用程式會藉由在呼叫 InitializeSecurityContext 和 AcceptSecurityContext (General) 函式中設定ISC_REQ_STREAM和ASC_REQ_STREAM旗標來要求數據流語意。
應用程式會呼叫具有 SecPkgContext_StreamSizes 結構的 QueryContextAttributes (一般) 函式,以查詢 安全性內容, 提供緩衝區數目,以及保留標頭或預告片的大小。
應用程式會在實際處理數據期間提供緩衝區描述元來備援。 藉由指定數據流語意,呼叫端會指出願意執行額外的處理,讓 安全性套件 可以處理訊息的封鎖。 基本上,針對 MakeSignature 和 VerifySignature 函式,呼叫端會傳入緩衝區清單。 從數據流導向的通道接收訊息時,呼叫端會傳入緩衝區清單,如下所示。
緩衝區 長度 緩衝區類型 1 訊息長度 SECBUFFER_DATA 2 0 SECBUFFER_EMPTY 3 0 SECBUFFER_EMPTY 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY 然後,安全性套件會在 BLOB上運作。 如果函式傳回成功,緩衝區清單看起來會像下面這樣。
緩衝區 長度 緩衝區類型 1 標頭長度 SECBUFFER_STREAM_HEADER 2 數據長度 SECBUFFER_DATA 3 預告片長度 SECBUFFER_STREAM_TRAILER 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY 封裝也可以傳回長度為 x 和緩衝區類型的緩衝區 #4,SECBUFFER_EXTRA表示此緩衝區中的數據是下一筆記錄的一部分,尚未處理。 相反地,如果訊息函式傳回SEC_E_INCOMPLETE_MESSAGE錯誤碼,傳回的緩衝區清單看起來會像下面這樣。
緩衝區 長度 緩衝區類型 1 x SECBUFFER_MISSING 這表示需要更多數據來處理記錄。 不同於訊息函式傳回的大部分錯誤,此緩衝區類型並不表示內容已遭入侵。 相反地,它表示需要更多數據。 安全性套件 在此條件中不得更新其 狀態。
同樣地,在通訊的傳送端,呼叫端可以呼叫makeSignature函式。 安全性套件可能需要重新配置緩衝區或複製周圍的專案。 藉由提供緩衝區清單,呼叫端可以更有效率,如下所示。
緩衝區 長度 類型 1 標頭長度 SECBUFFER_STREAM_HEADER 2 數據長度 SECBUFFER_DATA 3 預告片長度 SECBUFFER_STREAM_TRAILER 這可讓呼叫端更有效率地使用緩衝區。 藉由呼叫 QueryContextAttributes 函式來判斷在呼叫 MakeSignature 之前要保留的空間量,作業對應用程式和安全性套件更有效率。