SMB2Client: Always sign outgoing messages when dialect is 3.1.1

This commit is contained in:
Tal Aloni 2025-04-19 14:26:04 +03:00
parent 2ef0fb968e
commit 2c4e42d956

View file

@ -217,7 +217,10 @@ namespace SMBLibrary.Client
if (response != null && response.Header.Status == NTStatus.STATUS_SUCCESS) if (response != null && response.Header.Status == NTStatus.STATUS_SUCCESS)
{ {
m_dialect = response.DialectRevision; m_dialect = response.DialectRevision;
m_signingRequired = (response.SecurityMode & SecurityMode.SigningRequired) > 0; // [MS-SMB2] 3.3.5.7 If Connection.Dialect is "3.1.1" and Session.IsAnonymous and Session.IsGuest
// are set to FALSE and the request is not signed or not encrypted, then the server MUST disconnect the connection.
m_signingRequired = (response.SecurityMode & SecurityMode.SigningRequired) > 0 ||
response.DialectRevision == SMB2Dialect.SMB311;
m_maxTransactSize = Math.Min(response.MaxTransactSize, ClientMaxTransactSize); m_maxTransactSize = Math.Min(response.MaxTransactSize, ClientMaxTransactSize);
m_maxReadSize = Math.Min(response.MaxReadSize, ClientMaxReadSize); m_maxReadSize = Math.Min(response.MaxReadSize, ClientMaxReadSize);
m_maxWriteSize = Math.Min(response.MaxWriteSize, ClientMaxWriteSize); m_maxWriteSize = Math.Min(response.MaxWriteSize, ClientMaxWriteSize);