Package com.hierynomus.smbj.session
Class Session
- java.lang.Object
-
- com.hierynomus.smbj.session.Session
-
- All Implemented Interfaces:
java.lang.AutoCloseable
public class Session extends java.lang.Object implements java.lang.AutoCloseable
A Session
-
-
Constructor Summary
Constructors Constructor Description Session(Connection connection, SmbConfig config, AuthenticationContext userCredentials, SMBEventBus bus, PathResolver pathResolver, PacketSignatory signatory, PacketEncryptor encryptor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Share
connectShare(java.lang.String shareName)
Connect to a share on the remote machine over the authenticated session.AuthenticationContext
getAuthenticationContext()
Connection
getConnection()
Session
getNestedSession(SmbPath resolvedSharePath)
SessionContext
getSessionContext()
long
getSessionId()
javax.crypto.SecretKey
getSigningKey(SMB2PacketHeader header, boolean signing)
If Connection.Dialect belongs to the SMB 3.x dialect family, and the received message is an SMB2 SESSION_SETUP Response without a status code equal to STATUS_SUCCESS in the header, the client MUST verify the signature of the message as specified in section 3.1.5.1, using Session.SigningKey as the signing key, and passing the response message.boolean
isAnonymous()
boolean
isGuest()
boolean
isSigningRequired()
void
logoff()
<T extends SMB2Packet>
TprocessSendResponse(SMB2CreateRequest packet)
<T extends SMB2Packet>
java.util.concurrent.Future<T>send(SMB2Packet packet)
send a packet.void
setSessionId(long sessionId)
boolean
shouldEncryptData()
Returns whether packets for this session should be encrypted.
-
-
-
Constructor Detail
-
Session
public Session(Connection connection, SmbConfig config, AuthenticationContext userCredentials, SMBEventBus bus, PathResolver pathResolver, PacketSignatory signatory, PacketEncryptor encryptor)
-
-
Method Detail
-
getSessionId
public long getSessionId()
-
setSessionId
public void setSessionId(long sessionId)
-
connectShare
public Share connectShare(java.lang.String shareName)
Connect to a share on the remote machine over the authenticated session. [MS-SMB2] 3.2.4.2 Application Requests a Connection to a Share [MS-SMB2] 3.2.4.2.4 Connecting to the Share [MS-SMB2] 3.2.5.5 Receiving an SMB2 TREE_CONNECT Response- Parameters:
shareName
- The name of the share to connect to.- Returns:
- the handle to the connected share.
-
logoff
public void logoff() throws TransportException
- Throws:
TransportException
-
isSigningRequired
public boolean isSigningRequired()
-
isGuest
public boolean isGuest()
-
isAnonymous
public boolean isAnonymous()
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Throws:
java.io.IOException
-
getConnection
public Connection getConnection()
-
send
public <T extends SMB2Packet> java.util.concurrent.Future<T> send(SMB2Packet packet) throws TransportException
send a packet. The packet will be signed or not depending on the session's flags.- Parameters:
packet
- SMBPacket to send- Returns:
- a Future to be used to retrieve the response packet
- Throws:
TransportException
-
processSendResponse
public <T extends SMB2Packet> T processSendResponse(SMB2CreateRequest packet) throws TransportException
- Throws:
TransportException
-
getSigningKey
public javax.crypto.SecretKey getSigningKey(SMB2PacketHeader header, boolean signing)
If Connection.Dialect belongs to the SMB 3.x dialect family, and the received message is an SMB2 SESSION_SETUP Response without a status code equal to STATUS_SUCCESS in the header, the client MUST verify the signature of the message as specified in section 3.1.5.1, using Session.SigningKey as the signing key, and passing the response message. For all other messages, the client MUST look up the Channel in Session.ChannelList, where the Channel.Connection matches the connection on which this message is received, and MUST use Channel.SigningKey for verifying the signature as specified in section 3.1.5.1. Otherwise, the client MUST verify the signature of the message as specified in section 3.1.5.1, using Session.SessionKey as the signing key, and passing the response message.- Parameters:
signing
- If true, check for signing mode, else get for verification mode- Returns:
-
shouldEncryptData
public boolean shouldEncryptData() throws TransportException
Returns whether packets for this session should be encrypted.- Returns:
- Throws:
TransportException
- When encryption is required and encryption key is missing.
-
getSessionContext
public SessionContext getSessionContext()
-
getAuthenticationContext
public AuthenticationContext getAuthenticationContext()
-
-