Module: wine Branch: master Commit: 0903855456ccc2e12188a29a178810f398d33cf0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0903855456ccc2e12188a29a17...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Mon Oct 3 20:22:48 2011 +0200
secur32: Use gnutls_record_get_max_size() to get the maximum message size.
---
dlls/secur32/schannel.c | 6 ++++-- dlls/secur32/schannel_gnutls.c | 7 +++++++ dlls/secur32/schannel_macosx.c | 6 ++++++ dlls/secur32/secur32_priv.h | 1 + 4 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c index f12baaa..13353a7 100644 --- a/dlls/secur32/schannel.c +++ b/dlls/secur32/schannel.c @@ -821,13 +821,15 @@ static SECURITY_STATUS SEC_ENTRY schan_QueryContextAttributesW( SecPkgContext_StreamSizes *stream_sizes = buffer; SIZE_T mac_size = info.dwHashStrength; unsigned int block_size = schan_imp_get_session_cipher_block_size(ctx->session); + unsigned int message_size = schan_imp_get_max_message_size(ctx->session);
- TRACE("Using %lu mac bytes, block size %u\n", mac_size, block_size); + TRACE("Using %lu mac bytes, message size %u, block size %u\n", + mac_size, message_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->cbMaximumMessage = message_size; stream_sizes->cbBuffers = 4; stream_sizes->cbBlockSize = block_size; } diff --git a/dlls/secur32/schannel_gnutls.c b/dlls/secur32/schannel_gnutls.c index 782cc64..870c553 100644 --- a/dlls/secur32/schannel_gnutls.c +++ b/dlls/secur32/schannel_gnutls.c @@ -62,6 +62,7 @@ MAKE_FUNCPTR(gnutls_mac_get_key_size); MAKE_FUNCPTR(gnutls_perror); MAKE_FUNCPTR(gnutls_protocol_get_version); MAKE_FUNCPTR(gnutls_set_default_priority); +MAKE_FUNCPTR(gnutls_record_get_max_size); MAKE_FUNCPTR(gnutls_record_recv); MAKE_FUNCPTR(gnutls_record_send); MAKE_FUNCPTR(gnutls_transport_set_errno); @@ -289,6 +290,11 @@ unsigned int schan_imp_get_session_cipher_block_size(schan_imp_session session) return schannel_get_cipher_block_size(cipher); }
+unsigned int schan_imp_get_max_message_size(schan_imp_session session) +{ + return pgnutls_record_get_max_size((gnutls_session_t)session); +} + SECURITY_STATUS schan_imp_get_connection_info(schan_imp_session session, SecPkgContext_ConnectionInfo *info) { @@ -423,6 +429,7 @@ BOOL schan_imp_init(void) LOAD_FUNCPTR(gnutls_perror) LOAD_FUNCPTR(gnutls_protocol_get_version) LOAD_FUNCPTR(gnutls_set_default_priority) + LOAD_FUNCPTR(gnutls_record_get_max_size); LOAD_FUNCPTR(gnutls_record_recv); LOAD_FUNCPTR(gnutls_record_send); LOAD_FUNCPTR(gnutls_transport_set_errno) diff --git a/dlls/secur32/schannel_macosx.c b/dlls/secur32/schannel_macosx.c index fbaa432..1158b14 100644 --- a/dlls/secur32/schannel_macosx.c +++ b/dlls/secur32/schannel_macosx.c @@ -628,6 +628,12 @@ unsigned int schan_imp_get_session_cipher_block_size(schan_imp_session session) } }
+unsigned int schan_imp_get_max_message_size(schan_imp_session session) +{ + FIXME("Returning 1 << 14.\n"); + return 1 << 14; +} + SECURITY_STATUS schan_imp_get_connection_info(schan_imp_session session, SecPkgContext_ConnectionInfo *info) { diff --git a/dlls/secur32/secur32_priv.h b/dlls/secur32/secur32_priv.h index 2d2fc1e..3aa5af6 100644 --- a/dlls/secur32/secur32_priv.h +++ b/dlls/secur32/secur32_priv.h @@ -196,6 +196,7 @@ extern void schan_imp_set_session_transport(schan_imp_session session, struct schan_transport *t) DECLSPEC_HIDDEN; extern SECURITY_STATUS schan_imp_handshake(schan_imp_session session) DECLSPEC_HIDDEN; extern unsigned int schan_imp_get_session_cipher_block_size(schan_imp_session session) DECLSPEC_HIDDEN; +extern unsigned int schan_imp_get_max_message_size(schan_imp_session session) DECLSPEC_HIDDEN; extern SECURITY_STATUS schan_imp_get_connection_info(schan_imp_session session, SecPkgContext_ConnectionInfo *info) DECLSPEC_HIDDEN; extern SECURITY_STATUS schan_imp_get_session_peer_certificate(schan_imp_session session,