Class NTLMEngineImpl

  • All Implemented Interfaces:
    NTLMEngine

    @Deprecated
    final class NTLMEngineImpl
    extends java.lang.Object
    implements NTLMEngine
    Deprecated.
    Do not use.
    Provides an implementation for NTLMv1, NTLMv2, and NTLM2 Session forms of the NTLM authentication protocol.
    Since:
    4.1
    • Constructor Summary

      Constructors 
      Constructor Description
      NTLMEngineImpl()
      Deprecated.
       
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private static byte[] createBlob​(byte[] clientChallenge, byte[] targetInformation, byte[] timestamp)
      Deprecated.
      Creates the NTLMv2 blob from the given target information block and client challenge.
      private static java.security.Key createDESKey​(byte[] bytes, int offset)
      Deprecated.
      Creates a DES encryption key from the given key material.
      private static void encodeLong​(byte[] buf, int offset, int value)
      Deprecated.
       
      private static byte[] encodeLong​(int value)
      Deprecated.
       
      (package private) static int F​(int x, int y, int z)
      Deprecated.
       
      (package private) static int G​(int x, int y, int z)
      Deprecated.
       
      java.lang.String generateType1Msg​(java.lang.String domain, java.lang.String workstation)
      Deprecated.
      Generates a Type1 message given the domain and workstation.
      java.lang.String generateType3Msg​(java.lang.String username, char[] password, java.lang.String domain, java.lang.String workstation, java.lang.String challenge)
      Deprecated.
      Generates a Type3 message given the user credentials and the authentication challenge.
      private static java.nio.charset.Charset getCharset​(int flags)
      Deprecated.
      Find the character set based on the flags.
      (package private) static java.security.MessageDigest getMD5()
      Deprecated.
       
      private static byte[] getNullTerminatedAsciiString​(java.lang.String source)
      Deprecated.
       
      (package private) static java.lang.String getResponseFor​(java.lang.String message, java.lang.String username, char[] password, java.lang.String host, java.lang.String domain)
      Deprecated.
      Returns the response for the given message.
      (package private) static java.lang.String getResponseFor​(java.lang.String message, java.lang.String username, char[] password, java.lang.String host, java.lang.String domain, java.security.cert.Certificate peerServerCertificate)
      Deprecated.
      Returns the response for the given message.
      (package private) static java.lang.String getType1Message​(java.lang.String host, java.lang.String domain)
      Deprecated.
      Creates the first message (type 1 message) in the NTLM authentication sequence.
      (package private) static java.lang.String getType3Message​(java.lang.String user, char[] password, java.lang.String host, java.lang.String domain, byte[] nonce, int type2Flags, java.lang.String target, byte[] targetInformation)
      Deprecated.
      Creates the type 3 message using the given server nonce.
      (package private) static java.lang.String getType3Message​(java.lang.String user, char[] password, java.lang.String host, java.lang.String domain, byte[] nonce, int type2Flags, java.lang.String target, byte[] targetInformation, java.security.cert.Certificate peerServerCertificate, byte[] type1Message, byte[] type2Message)
      Deprecated.
      Creates the type 3 message using the given server nonce.
      (package private) static int H​(int x, int y, int z)
      Deprecated.
       
      (package private) static byte[] hmacMD5​(byte[] value, byte[] key)
      Deprecated.
      Calculates HMAC-MD5
      private static byte[] lmHash​(char[] password)
      Deprecated.
      Creates the LM Hash of the user's password.
      private static byte[] lmResponse​(byte[] hash, byte[] challenge)
      Deprecated.
      Creates the LM Response from the given hash and Type 2 challenge.
      private static byte[] lmv2Hash​(java.lang.String domain, java.lang.String user, byte[] ntlmHash)
      Deprecated.
      Creates the LMv2 Hash of the user's password.
      private static byte[] lmv2Response​(byte[] hash, byte[] challenge, byte[] clientData)
      Deprecated.
      Creates the LMv2 Response from the given hash, client data, and Type 2 challenge.
      private static byte[] makeRandomChallenge​(java.util.Random random)
      Deprecated.
      Calculate a challenge block
      private static byte[] makeSecondaryKey​(java.util.Random random)
      Deprecated.
      Calculate a 16-byte secondary key
      (package private) static byte[] ntlm2SessionResponse​(byte[] ntlmHash, byte[] challenge, byte[] clientChallenge)
      Deprecated.
      Calculates the NTLM2 Session Response for the given challenge, using the specified password and client challenge.
      private static byte[] ntlmHash​(char[] password)
      Deprecated.
      Creates the NTLM Hash of the user's password.
      private static byte[] ntlmv2Hash​(java.lang.String domain, java.lang.String user, byte[] ntlmHash)
      Deprecated.
      Creates the NTLMv2 Hash of the user's password.
      private static void oddParity​(byte[] bytes)
      Deprecated.
      Applies odd parity to the given byte array.
      (package private) static byte[] RC4​(byte[] value, byte[] key)
      Deprecated.
      Calculates RC4
      private static byte[] readSecurityBuffer​(byte[] src, int index)
      Deprecated.
       
      private static int readULong​(byte[] src, int index)
      Deprecated.
       
      private static int readUShort​(byte[] src, int index)
      Deprecated.
       
      (package private) static int rotintlft​(int val, int numbits)
      Deprecated.
       
      (package private) static void writeULong​(byte[] buffer, int value, int offset)
      Deprecated.
       
      (package private) static void writeUShort​(byte[] buffer, int value, int offset)
      Deprecated.
       
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • UNICODE_LITTLE_UNMARKED

        private static final java.nio.charset.Charset UNICODE_LITTLE_UNMARKED
        Deprecated.
        Unicode encoding
      • DEFAULT_CHARSET

        private static final java.nio.charset.Charset DEFAULT_CHARSET
        Deprecated.
        Character encoding
      • FLAG_REQUEST_UNICODE_ENCODING

        static final int FLAG_REQUEST_UNICODE_ENCODING
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_OEM_ENCODING

        static final int FLAG_REQUEST_OEM_ENCODING
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_LAN_MANAGER_KEY

        static final int FLAG_REQUEST_LAN_MANAGER_KEY
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_WORKSTATION_PRESENT

        static final int FLAG_WORKSTATION_PRESENT
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_ALWAYS_SIGN

        static final int FLAG_REQUEST_ALWAYS_SIGN
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_NTLM2_SESSION

        static final int FLAG_REQUEST_NTLM2_SESSION
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_VERSION

        static final int FLAG_REQUEST_VERSION
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_TARGETINFO_PRESENT

        static final int FLAG_TARGETINFO_PRESENT
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_128BIT_KEY_EXCH

        static final int FLAG_REQUEST_128BIT_KEY_EXCH
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_EXPLICIT_KEY_EXCH

        static final int FLAG_REQUEST_EXPLICIT_KEY_EXCH
        Deprecated.
        See Also:
        Constant Field Values
      • FLAG_REQUEST_56BIT_ENCRYPTION

        static final int FLAG_REQUEST_56BIT_ENCRYPTION
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_NB_COMPUTER_NAME

        static final int MSV_AV_NB_COMPUTER_NAME
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_NB_DOMAIN_NAME

        static final int MSV_AV_NB_DOMAIN_NAME
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_DNS_COMPUTER_NAME

        static final int MSV_AV_DNS_COMPUTER_NAME
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_DNS_DOMAIN_NAME

        static final int MSV_AV_DNS_DOMAIN_NAME
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_DNS_TREE_NAME

        static final int MSV_AV_DNS_TREE_NAME
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_CHANNEL_BINDINGS

        static final int MSV_AV_CHANNEL_BINDINGS
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_FLAGS_ACCOUNT_AUTH_CONSTAINED

        static final int MSV_AV_FLAGS_ACCOUNT_AUTH_CONSTAINED
        Deprecated.
        See Also:
        Constant Field Values
      • MSV_AV_FLAGS_UNTRUSTED_TARGET_SPN

        static final int MSV_AV_FLAGS_UNTRUSTED_TARGET_SPN
        Deprecated.
        See Also:
        Constant Field Values
      • RND_GEN

        private static final java.security.SecureRandom RND_GEN
        Deprecated.
        Secure random generator
      • SIGNATURE

        private static final byte[] SIGNATURE
        Deprecated.
        The signature string as bytes in the default encoding
      • SIGN_MAGIC_SERVER

        private static final byte[] SIGN_MAGIC_SERVER
        Deprecated.
      • SIGN_MAGIC_CLIENT

        private static final byte[] SIGN_MAGIC_CLIENT
        Deprecated.
      • SEAL_MAGIC_SERVER

        private static final byte[] SEAL_MAGIC_SERVER
        Deprecated.
      • SEAL_MAGIC_CLIENT

        private static final byte[] SEAL_MAGIC_CLIENT
        Deprecated.
      • MAGIC_TLS_SERVER_ENDPOINT

        private static final byte[] MAGIC_TLS_SERVER_ENDPOINT
        Deprecated.
      • TYPE_1_MESSAGE

        private static final java.lang.String TYPE_1_MESSAGE
        Deprecated.
    • Constructor Detail

      • NTLMEngineImpl

        NTLMEngineImpl()
        Deprecated.
    • Method Detail

      • getNullTerminatedAsciiString

        private static byte[] getNullTerminatedAsciiString​(java.lang.String source)
        Deprecated.
      • getResponseFor

        static java.lang.String getResponseFor​(java.lang.String message,
                                               java.lang.String username,
                                               char[] password,
                                               java.lang.String host,
                                               java.lang.String domain)
                                        throws NTLMEngineException
        Deprecated.
        Returns the response for the given message.
        Parameters:
        message - the message that was received from the server.
        username - the username to authenticate with.
        password - the password to authenticate with.
        host - The host.
        domain - the NT domain to authenticate in.
        Returns:
        The response.
        Throws:
        NTLMEngineException
      • getResponseFor

        static java.lang.String getResponseFor​(java.lang.String message,
                                               java.lang.String username,
                                               char[] password,
                                               java.lang.String host,
                                               java.lang.String domain,
                                               java.security.cert.Certificate peerServerCertificate)
                                        throws NTLMEngineException
        Deprecated.
        Returns the response for the given message.
        Parameters:
        message - the message that was received from the server.
        username - the username to authenticate with.
        password - the password to authenticate with.
        host - The host.
        domain - the NT domain to authenticate in.
        Returns:
        The response.
        Throws:
        NTLMEngineException
      • getType1Message

        static java.lang.String getType1Message​(java.lang.String host,
                                                java.lang.String domain)
        Deprecated.
        Creates the first message (type 1 message) in the NTLM authentication sequence. This message includes the user name, domain and host for the authentication session.
        Parameters:
        host - the computer name of the host requesting authentication.
        domain - The domain to authenticate with.
        Returns:
        String the message to add to the HTTP request header.
      • getType3Message

        static java.lang.String getType3Message​(java.lang.String user,
                                                char[] password,
                                                java.lang.String host,
                                                java.lang.String domain,
                                                byte[] nonce,
                                                int type2Flags,
                                                java.lang.String target,
                                                byte[] targetInformation)
                                         throws NTLMEngineException
        Deprecated.
        Creates the type 3 message using the given server nonce. The type 3 message includes all the information for authentication, host, domain, username and the result of encrypting the nonce sent by the server using the user's password as the key.
        Parameters:
        user - The user name. This should not include the domain name.
        password - The password.
        host - The host that is originating the authentication request.
        domain - The domain to authenticate within.
        nonce - the 8 byte array the server sent.
        Returns:
        The type 3 message.
        Throws:
        NTLMEngineException - If Type3Message(String, String, String, char[], byte[], int, String, byte[]) fails.
      • getType3Message

        static java.lang.String getType3Message​(java.lang.String user,
                                                char[] password,
                                                java.lang.String host,
                                                java.lang.String domain,
                                                byte[] nonce,
                                                int type2Flags,
                                                java.lang.String target,
                                                byte[] targetInformation,
                                                java.security.cert.Certificate peerServerCertificate,
                                                byte[] type1Message,
                                                byte[] type2Message)
                                         throws NTLMEngineException
        Deprecated.
        Creates the type 3 message using the given server nonce. The type 3 message includes all the information for authentication, host, domain, username and the result of encrypting the nonce sent by the server using the user's password as the key.
        Parameters:
        user - The user name. This should not include the domain name.
        password - The password.
        host - The host that is originating the authentication request.
        domain - The domain to authenticate within.
        nonce - the 8 byte array the server sent.
        Returns:
        The type 3 message.
        Throws:
        NTLMEngineException
      • readULong

        private static int readULong​(byte[] src,
                                     int index)
        Deprecated.
      • readUShort

        private static int readUShort​(byte[] src,
                                      int index)
        Deprecated.
      • readSecurityBuffer

        private static byte[] readSecurityBuffer​(byte[] src,
                                                 int index)
        Deprecated.
      • makeRandomChallenge

        private static byte[] makeRandomChallenge​(java.util.Random random)
        Deprecated.
        Calculate a challenge block
      • makeSecondaryKey

        private static byte[] makeSecondaryKey​(java.util.Random random)
        Deprecated.
        Calculate a 16-byte secondary key
      • hmacMD5

        static byte[] hmacMD5​(byte[] value,
                              byte[] key)
        Deprecated.
        Calculates HMAC-MD5
      • ntlm2SessionResponse

        static byte[] ntlm2SessionResponse​(byte[] ntlmHash,
                                           byte[] challenge,
                                           byte[] clientChallenge)
                                    throws NTLMEngineException
        Deprecated.
        Calculates the NTLM2 Session Response for the given challenge, using the specified password and client challenge.
        Returns:
        The NTLM2 Session Response. This is placed in the NTLM response field of the Type 3 message; the LM response field contains the client challenge, null-padded to 24 bytes.
        Throws:
        NTLMEngineException
      • lmHash

        private static byte[] lmHash​(char[] password)
                              throws NTLMEngineException
        Deprecated.
        Creates the LM Hash of the user's password.
        Parameters:
        password - The password.
        Returns:
        The LM Hash of the given password, used in the calculation of the LM Response.
        Throws:
        NTLMEngineException
      • ntlmHash

        private static byte[] ntlmHash​(char[] password)
                                throws NTLMEngineException
        Deprecated.
        Creates the NTLM Hash of the user's password.
        Parameters:
        password - The password.
        Returns:
        The NTLM Hash of the given password, used in the calculation of the NTLM Response and the NTLMv2 and LMv2 Hashes.
        Throws:
        NTLMEngineException
      • lmv2Hash

        private static byte[] lmv2Hash​(java.lang.String domain,
                                       java.lang.String user,
                                       byte[] ntlmHash)
                                throws NTLMEngineException
        Deprecated.
        Creates the LMv2 Hash of the user's password.
        Returns:
        The LMv2 Hash, used in the calculation of the NTLMv2 and LMv2 Responses.
        Throws:
        NTLMEngineException
      • ntlmv2Hash

        private static byte[] ntlmv2Hash​(java.lang.String domain,
                                         java.lang.String user,
                                         byte[] ntlmHash)
                                  throws NTLMEngineException
        Deprecated.
        Creates the NTLMv2 Hash of the user's password.
        Returns:
        The NTLMv2 Hash, used in the calculation of the NTLMv2 and LMv2 Responses.
        Throws:
        NTLMEngineException
      • lmResponse

        private static byte[] lmResponse​(byte[] hash,
                                         byte[] challenge)
                                  throws NTLMEngineException
        Deprecated.
        Creates the LM Response from the given hash and Type 2 challenge.
        Parameters:
        hash - The LM or NTLM Hash.
        challenge - The server challenge from the Type 2 message.
        Returns:
        The response (either LM or NTLM, depending on the provided hash).
        Throws:
        NTLMEngineException
      • lmv2Response

        private static byte[] lmv2Response​(byte[] hash,
                                           byte[] challenge,
                                           byte[] clientData)
        Deprecated.
        Creates the LMv2 Response from the given hash, client data, and Type 2 challenge.
        Parameters:
        hash - The NTLMv2 Hash.
        clientData - The client data (blob or client challenge).
        challenge - The server challenge from the Type 2 message.
        Returns:
        The response (either NTLMv2 or LMv2, depending on the client data).
      • encodeLong

        private static byte[] encodeLong​(int value)
        Deprecated.
      • encodeLong

        private static void encodeLong​(byte[] buf,
                                       int offset,
                                       int value)
        Deprecated.
      • createBlob

        private static byte[] createBlob​(byte[] clientChallenge,
                                         byte[] targetInformation,
                                         byte[] timestamp)
        Deprecated.
        Creates the NTLMv2 blob from the given target information block and client challenge.
        Parameters:
        targetInformation - The target information block from the Type 2 message.
        clientChallenge - The random 8-byte client challenge.
        Returns:
        The blob, used in the calculation of the NTLMv2 Response.
      • createDESKey

        private static java.security.Key createDESKey​(byte[] bytes,
                                                      int offset)
        Deprecated.
        Creates a DES encryption key from the given key material.
        Parameters:
        bytes - A byte array containing the DES key material.
        offset - The offset in the given byte array at which the 7-byte key material starts.
        Returns:
        A DES encryption key created from the key material starting at the specified offset in the given byte array.
      • oddParity

        private static void oddParity​(byte[] bytes)
        Deprecated.
        Applies odd parity to the given byte array.
        Parameters:
        bytes - The data whose parity bits are to be adjusted for odd parity.
      • getCharset

        private static java.nio.charset.Charset getCharset​(int flags)
                                                    throws NTLMEngineException
        Deprecated.
        Find the character set based on the flags.
        Parameters:
        flags - is the flags.
        Returns:
        the character set.
        Throws:
        NTLMEngineException
      • writeUShort

        static void writeUShort​(byte[] buffer,
                                int value,
                                int offset)
        Deprecated.
      • writeULong

        static void writeULong​(byte[] buffer,
                               int value,
                               int offset)
        Deprecated.
      • F

        static int F​(int x,
                     int y,
                     int z)
        Deprecated.
      • G

        static int G​(int x,
                     int y,
                     int z)
        Deprecated.
      • H

        static int H​(int x,
                     int y,
                     int z)
        Deprecated.
      • rotintlft

        static int rotintlft​(int val,
                             int numbits)
        Deprecated.
      • getMD5

        static java.security.MessageDigest getMD5()
        Deprecated.
      • generateType1Msg

        public java.lang.String generateType1Msg​(java.lang.String domain,
                                                 java.lang.String workstation)
                                          throws NTLMEngineException
        Deprecated.
        Description copied from interface: NTLMEngine
        Generates a Type1 message given the domain and workstation.
        Specified by:
        generateType1Msg in interface NTLMEngine
        Parameters:
        domain - Optional Windows domain name. Can be null.
        workstation - Optional Windows workstation name. Can be null.
        Returns:
        Type1 message
        Throws:
        NTLMEngineException
      • generateType3Msg

        public java.lang.String generateType3Msg​(java.lang.String username,
                                                 char[] password,
                                                 java.lang.String domain,
                                                 java.lang.String workstation,
                                                 java.lang.String challenge)
                                          throws NTLMEngineException
        Deprecated.
        Description copied from interface: NTLMEngine
        Generates a Type3 message given the user credentials and the authentication challenge.
        Specified by:
        generateType3Msg in interface NTLMEngine
        Parameters:
        username - Windows user name
        password - Password
        domain - Windows domain name
        workstation - Windows workstation name
        challenge - Type2 challenge.
        Returns:
        Type3 response.
        Throws:
        NTLMEngineException