3.2.1.3 Per Session

The client MUST implement the following:

Session.SessionId: An 8-byte identifier returned by the server to identify this session on this SMB2 transport connection.

Session.TreeConnectTable: A table of tree connects, as specified in section 3.2.1.4. The table MUST allow lookup by both TreeConnect.TreeConnectId and by share name.

Session.SessionKey: The first 16 bytes of the cryptographic key for this authenticated context. If the cryptographic key is less than 16 bytes, it is right-padded with zero bytes.

Session.SigningRequired: A Boolean that, if set, indicates that all of the messages for this session MUST be signed.

Session.Connection: A reference to the connection on which this session was established.

Session.UserCredentials: An opaque implementation-specific entity that identifies the credentials that were used to authenticate to the server.

Session.OpenTable: A table of opens, as specified in section 3.2.1.6. The table MUST allow lookup by either file name or by Open.FileId.

Session.IsAnonymous: A Boolean that, if set, indicates that the session is for an anonymous user.

Session.IsGuest: A Boolean that, if set, indicates that the session is for a guest user.

If the client implements the SMB 3.x dialect family, it MUST also implement the following:

Session.ChannelList: A list of channels, as specified in section 3.2.1.8.

Session.ChannelSequence: A 16-bit identifier incremented on a network disconnect that indicates to the server the client's Channel change.

Session.EncryptData: A Boolean that, if set, indicates that all messages for this session MUST be encrypted.

Session.EncryptionKey: For AES-128-CCM and AES-128-GCM encryption algorithms, this is a 128-bit key used for encrypting the messages. For AES-256-CCM and AES-256-GCM encryption algorithms, this is a 256-bit key used for encrypting the messages.

Session.DecryptionKey: For AES-128-CCM and AES-128-GCM encryption algorithms, this is a 128-bit key used for decrypting the messages. For AES-256-CCM and AES-256-GCM encryption algorithms, this is a 256-bit key used for decrypting the messages.

Session.SigningKey: A 128-bit key used for signing the SMB2 messages.

Session.ApplicationKey: A 128-bit key, for the authenticated context, that is queried by the higher-layer applications.

If the client implements the SMB 3.1.1 dialect, it MUST also implement the following:

Session.PreauthIntegrityHashValue: The preauthentication integrity hash value that was computed for the exchange of SMB2 SESSION_SETUP request and response messages for this session.

Session.FullSessionKey: Cryptographic key for this authenticated context as returned by the underlying authentication protocol.