Class NTLMEngineImpl
- java.lang.Object
-
- org.apache.hc.client5.http.impl.auth.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
NTLMEngineImpl.CipherGen
Deprecated.(package private) static class
NTLMEngineImpl.Handle
Deprecated.(package private) static class
NTLMEngineImpl.HMACMD5
Deprecated.Cryptography support - HMACMD5 - algorithmically based on various web resources by Karl Wright(package private) static class
NTLMEngineImpl.MD4
Deprecated.Cryptography support - MD4.(package private) static class
NTLMEngineImpl.Mode
Deprecated.(package private) static class
NTLMEngineImpl.NTLMMessage
Deprecated.NTLM message generation, base class(package private) static class
NTLMEngineImpl.Type1Message
Deprecated.Type 1 message assembly class(package private) static class
NTLMEngineImpl.Type2Message
Deprecated.Type 2 message class(package private) static class
NTLMEngineImpl.Type3Message
Deprecated.Type 3 message assembly class
-
Field Summary
Fields Modifier and Type Field Description private static java.nio.charset.Charset
DEFAULT_CHARSET
Deprecated.Character encoding(package private) static int
FLAG_DOMAIN_PRESENT
Deprecated.(package private) static int
FLAG_REQUEST_128BIT_KEY_EXCH
Deprecated.(package private) static int
FLAG_REQUEST_56BIT_ENCRYPTION
Deprecated.(package private) static int
FLAG_REQUEST_ALWAYS_SIGN
Deprecated.(package private) static int
FLAG_REQUEST_EXPLICIT_KEY_EXCH
Deprecated.(package private) static int
FLAG_REQUEST_LAN_MANAGER_KEY
Deprecated.(package private) static int
FLAG_REQUEST_NTLM2_SESSION
Deprecated.(package private) static int
FLAG_REQUEST_NTLMv1
Deprecated.(package private) static int
FLAG_REQUEST_OEM_ENCODING
Deprecated.(package private) static int
FLAG_REQUEST_SEAL
Deprecated.(package private) static int
FLAG_REQUEST_SIGN
Deprecated.(package private) static int
FLAG_REQUEST_TARGET
Deprecated.(package private) static int
FLAG_REQUEST_UNICODE_ENCODING
Deprecated.(package private) static int
FLAG_REQUEST_VERSION
Deprecated.(package private) static int
FLAG_TARGETINFO_PRESENT
Deprecated.(package private) static int
FLAG_WORKSTATION_PRESENT
Deprecated.private static byte[]
MAGIC_TLS_SERVER_ENDPOINT
Deprecated.(package private) static int
MSV_AV_CHANNEL_BINDINGS
Deprecated.(package private) static int
MSV_AV_DNS_COMPUTER_NAME
Deprecated.(package private) static int
MSV_AV_DNS_DOMAIN_NAME
Deprecated.(package private) static int
MSV_AV_DNS_TREE_NAME
Deprecated.(package private) static int
MSV_AV_EOL
Deprecated.(package private) static int
MSV_AV_FLAGS
Deprecated.(package private) static int
MSV_AV_FLAGS_ACCOUNT_AUTH_CONSTAINED
Deprecated.(package private) static int
MSV_AV_FLAGS_MIC
Deprecated.(package private) static int
MSV_AV_FLAGS_UNTRUSTED_TARGET_SPN
Deprecated.(package private) static int
MSV_AV_NB_COMPUTER_NAME
Deprecated.(package private) static int
MSV_AV_NB_DOMAIN_NAME
Deprecated.(package private) static int
MSV_AV_SINGLE_HOST
Deprecated.(package private) static int
MSV_AV_TARGET_NAME
Deprecated.(package private) static int
MSV_AV_TIMESTAMP
Deprecated.private static java.security.SecureRandom
RND_GEN
Deprecated.Secure random generatorprivate static byte[]
SEAL_MAGIC_CLIENT
Deprecated.private static byte[]
SEAL_MAGIC_SERVER
Deprecated.private static byte[]
SIGN_MAGIC_CLIENT
Deprecated.private static byte[]
SIGN_MAGIC_SERVER
Deprecated.private static byte[]
SIGNATURE
Deprecated.The signature string as bytes in the default encodingprivate static java.lang.String
TYPE_1_MESSAGE
Deprecated.private static java.nio.charset.Charset
UNICODE_LITTLE_UNMARKED
Deprecated.Unicode encoding
-
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-MD5private 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 blockprivate 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 RC4private 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.
-
-
-
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_TARGET
static final int FLAG_REQUEST_TARGET
Deprecated.- See Also:
- Constant Field Values
-
FLAG_REQUEST_SIGN
static final int FLAG_REQUEST_SIGN
Deprecated.- See Also:
- Constant Field Values
-
FLAG_REQUEST_SEAL
static final int FLAG_REQUEST_SEAL
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_REQUEST_NTLMv1
static final int FLAG_REQUEST_NTLMv1
Deprecated.- See Also:
- Constant Field Values
-
FLAG_DOMAIN_PRESENT
static final int FLAG_DOMAIN_PRESENT
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_EOL
static final int MSV_AV_EOL
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_FLAGS
static final int MSV_AV_FLAGS
Deprecated.- See Also:
- Constant Field Values
-
MSV_AV_TIMESTAMP
static final int MSV_AV_TIMESTAMP
Deprecated.- See Also:
- Constant Field Values
-
MSV_AV_SINGLE_HOST
static final int MSV_AV_SINGLE_HOST
Deprecated.- See Also:
- Constant Field Values
-
MSV_AV_TARGET_NAME
static final int MSV_AV_TARGET_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_MIC
static final int MSV_AV_FLAGS_MIC
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.
-
-
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
- IfType3Message(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
-
RC4
static byte[] RC4(byte[] value, byte[] key) throws NTLMEngineException
Deprecated.Calculates RC4- Throws:
NTLMEngineException
-
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 interfaceNTLMEngine
- Parameters:
domain
- Optional Windows domain name. Can benull
.workstation
- Optional Windows workstation name. Can benull
.- 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 interfaceNTLMEngine
- Parameters:
username
- Windows user namepassword
- Passworddomain
- Windows domain nameworkstation
- Windows workstation namechallenge
- Type2 challenge.- Returns:
- Type3 response.
- Throws:
NTLMEngineException
-
-