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.