Akış Bağlamları
Akış bağlamları SSL veya PCT gibi güvenli akış odaklı protokolleri işler. SSPI, aynı arabirimi ve benzer kimlik bilgileri yönetimini paylaşma açısından akış bağlamları için destek sağlar. güvenlik protokolü hem akış kimlik doğrulama düzenini hem de kayıt biçimlerini içerir.
Akış odaklı protokoller sağlamak için, akış bağlamlarını destekleyengüvenlik paketleri aşağıdaki işlem özelliklerine sahiptir:
Paket, akış semantiğini desteklediğini belirtmek için SECPKG_FLAG_STREAM bayrağını ayarlar.
Aktarım uygulamaları, InitializeSecurityContext (Genel) ve AcceptSecurityContext (Genel)işlevlerine yapılan çağrılarda ISC_REQ_STREAMve ASC_REQ_STREAM bayraklarını ayarlayarak akış semantiği ister.
Uygulama, QueryContextAttributes (Genel) işlevini güvenlik bağlamı sağlanmış arabellek sayısı ve üst bilgiler veya fragmanlar için ayıracak boyutları sorgulamak için SecPkgContext_StreamSizes bir yapıyla çağırır.
Uygulama, verilerin gerçek işlenmesi sırasında yedeklenmesi için arabellek tanımlayıcıları sağlar. Çağıran, akış semantiğini belirterek, güvenlik paketinin iletilerin engellenmesini işleyebilmesi için ek işlem yapmaya istekli olduğunu belirtir. Özünde, MakeSignatureve VerifySignatureişlevleriiçin çağıran arabellek listesini geçirir. Akış odaklı bir kanaldan (TCP bağlantı noktası gibi) bir ileti alındığında, çağıran aşağıdaki gibi bir arabellek listesi geçirir.
Arabellek Uzunluk Arabellek türü 1 İleti Uzunluğu SECBUFFER_DATA 2 0 SECBUFFER_EMPTY 3 0 SECBUFFER_EMPTY 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY Güvenlik paketi daha sonra BLOBüzerinde çalışır. İşlev başarıyla döndürülüyorsa arabellek listesi aşağıdaki gibi görünür.
Arabellek Uzunluk Arabellek türü 1 Üst Bilgi Uzunluğu SECBUFFER_STREAM_HEADER 2 Veri Uzunluğu SECBUFFER_DATA 3 Treyler Uzunluğu SECBUFFER_STREAM_TRAILER 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY Paket ayrıca bu arabellekteki verilerin sonraki kaydın bir parçası olduğunu ve henüz işlenmediğini belirten x uzunluğuna ve arabellek türüne sahip #4 arabellek SECBUFFER_EXTRA döndürebilirdi. Buna karşılık, ileti işlevi SEC_E_INCOMPLETE_MESSAGE hata kodunu döndürürse, döndürülen arabellek listesi aşağıdaki gibi görünür.
Arabellek Uzunluk Arabellek türü 1 x SECBUFFER_MISSING Bu, kaydı işlemek için daha fazla veri gerektiğini gösterir. İleti işlevinden döndürülen hataların çoğundan farklı olarak, bu arabellek türü bağlamın ele geçirildiğini göstermez. Bunun yerine, daha fazla veri gerektiğini gösterir. güvenlik paketleri bu durumda durum güncelleştirmemelidir.
Benzer şekilde, iletişimin gönderen tarafında, çağıran MakeSignature işlevini çağırabilir. Güvenlik paketinin arabelleği yeniden ayırması veya nesneleri kopyalaması gerekebilir. Arayan, aşağıdaki gibi bir arabellek listesi sağlayarak daha verimli olabilir.
Arabellek Uzunluk Tür 1 Üst Bilgi Uzunluğu SECBUFFER_STREAM_HEADER 2 Veri Uzunluğu SECBUFFER_DATA 3 Treyler Uzunluğu SECBUFFER_STREAM_TRAILER Bu, çağıranın arabellekleri daha verimli bir şekilde kullanmasına olanak tanır. QueryContextAttributes işlevini çağırarak, MakeSignatureçağırmadan önce ayıracak alan miktarını belirleyerek, işlem uygulama ve güvenlik paketi için daha verimli olur.