Ken Thomases : secur32: Use schan_imp_get_connection_info to get MAC size.

Alexandre Julliard julliard at winehq.org
Mon Mar 14 14:29:43 CDT 2011


Module: wine
Branch: master
Commit: 842e0a5316225accc75cf472a51de9c20efe4857
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=842e0a5316225accc75cf472a51de9c20efe4857

Author: Ken Thomases <ken at codeweavers.com>
Date:   Sun Mar 13 18:57:29 2011 -0500

secur32: Use schan_imp_get_connection_info to get MAC size.

---

 dlls/secur32/schannel.c |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c
index 7b00c1d..ae12b8e 100644
--- a/dlls/secur32/schannel.c
+++ b/dlls/secur32/schannel.c
@@ -1041,20 +1041,25 @@ static SECURITY_STATUS SEC_ENTRY schan_QueryContextAttributesW(
     {
         case SECPKG_ATTR_STREAM_SIZES:
         {
-            SecPkgContext_StreamSizes *stream_sizes = buffer;
-            gnutls_mac_algorithm_t mac = pgnutls_mac_get(ctx->session);
-            size_t mac_size = pgnutls_mac_get_key_size(mac);
-            unsigned int block_size = schan_imp_get_session_cipher_block_size(ctx->session);
-
-            TRACE("Using %zu mac bytes, block size %u\n", mac_size, block_size);
-
-            /* These are defined by the TLS RFC */
-            stream_sizes->cbHeader = 5;
-            stream_sizes->cbTrailer = mac_size + 256; /* Max 255 bytes padding + 1 for padding size */
-            stream_sizes->cbMaximumMessage = 1 << 14;
-            stream_sizes->cbBuffers = 4;
-            stream_sizes->cbBlockSize = block_size;
-            return SEC_E_OK;
+            SecPkgContext_ConnectionInfo info;
+            SECURITY_STATUS status = schan_imp_get_connection_info(ctx->session, &info);
+            if (status == SEC_E_OK)
+            {
+                SecPkgContext_StreamSizes *stream_sizes = buffer;
+                size_t mac_size = info.dwHashStrength;
+                unsigned int block_size = schan_imp_get_session_cipher_block_size(ctx->session);
+
+                TRACE("Using %zu mac bytes, block size %u\n", mac_size, block_size);
+
+                /* These are defined by the TLS RFC */
+                stream_sizes->cbHeader = 5;
+                stream_sizes->cbTrailer = mac_size + 256; /* Max 255 bytes padding + 1 for padding size */
+                stream_sizes->cbMaximumMessage = 1 << 14;
+                stream_sizes->cbBuffers = 4;
+                stream_sizes->cbBlockSize = block_size;
+            }
+
+            return status;
         }
         case SECPKG_ATTR_REMOTE_CERT_CONTEXT:
         {




More information about the wine-cvs mailing list