Interface SessionContext

    • Field Detail

      • MAX_VERSION_LINE_LENGTH

        static final int MAX_VERSION_LINE_LENGTH
        Maximum number of characters for any single line sent as part of the initial handshake - according to RFC 4253 - section 4.2:

        The maximum length of the string is 255 characters, including the Carriage Return and Line Feed.

        See Also:
        Constant Field Values
    • Method Detail

      • getSessionId

        byte[] getSessionId()
        Returns:
        A clone of the established session identifier - null if not yet established
      • isServerSession

        boolean isServerSession()
        Quick indication if this is a server or client session (instead of having to ask instanceof).
        Returns:
        true if this is a server session
      • getClientVersion

        java.lang.String getClientVersion()
        Retrieve the client version for this session.
        Returns:
        the client version - may be null/empty if versions not yet exchanged
      • getClientKexProposals

        java.util.Map<KexProposalOption,​java.lang.String> getClientKexProposals()
        Returns:
        An un-modifiable map of the latest KEX client proposal options May be empty if KEX not yet completed or re-keying in progress
        See Also:
        getKexState()
      • getServerVersion

        java.lang.String getServerVersion()
        Retrieve the server version for this session.
        Returns:
        the server version - may be null/empty if versions not yet exchanged
      • getServerKexProposals

        java.util.Map<KexProposalOption,​java.lang.String> getServerKexProposals()
        Returns:
        An un-modifiable map of the latest KEX client proposal options. May be empty if KEX not yet completed or re-keying in progress
        See Also:
        getKexState()
      • getKexNegotiationResult

        java.util.Map<KexProposalOption,​java.lang.String> getKexNegotiationResult()
      • getNegotiatedKexParameter

        java.lang.String getNegotiatedKexParameter​(KexProposalOption paramType)
        Retrieve one of the negotiated values during the KEX stage
        Parameters:
        paramType - The request KexProposalOption value - ignored if null
        Returns:
        The negotiated parameter value - null if invalid parameter or no negotiated value.
        See Also:
        getKexState()
      • getCipherInformation

        CipherInformation getCipherInformation​(boolean incoming)
        Retrieves current cipher information - Note: may change if key re-exchange executed
        Parameters:
        incoming - If true then the cipher for the incoming data, otherwise for the outgoing data
        Returns:
        The CipherInformation - or null if not negotiated yet.
      • getCompressionInformation

        CompressionInformation getCompressionInformation​(boolean incoming)
        Retrieves current compression information - Note: may change if key re-exchange executed
        Parameters:
        incoming - If true then the compression for the incoming data, otherwise for the outgoing data
        Returns:
        The CompressionInformation - or null if not negotiated yet.
      • getMacInformation

        MacInformation getMacInformation​(boolean incoming)
        Retrieves current MAC information - Note: may change if key re-exchange executed
        Parameters:
        incoming - If true then the MAC for the incoming data, otherwise for the outgoing data
        Returns:
        The MacInformation - or null if not negotiated yet.
      • isAuthenticated

        boolean isAuthenticated()
        Returns:
        true if session has successfully completed the authentication phase
      • isValidVersionPrefix

        static boolean isValidVersionPrefix​(java.lang.String version)
        Parameters:
        version - The reported client/server version
        Returns:
        true if version not empty and starts with either "SSH-2.0-" or "SSH-1.99-"
      • isValidSessionPayloadSize

        static boolean isValidSessionPayloadSize​(long value)
      • validateSessionPayloadSize

        static long validateSessionPayloadSize​(long value,
                                               java.lang.String format)