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 classNTLMEngineImpl.CipherGenDeprecated.(package private) static classNTLMEngineImpl.HandleDeprecated.(package private) static classNTLMEngineImpl.HMACMD5Deprecated.Cryptography support - HMACMD5 - algorithmically based on various web resources by Karl Wright(package private) static classNTLMEngineImpl.MD4Deprecated.Cryptography support - MD4.(package private) static classNTLMEngineImpl.ModeDeprecated.(package private) static classNTLMEngineImpl.NTLMMessageDeprecated.NTLM message generation, base class(package private) static classNTLMEngineImpl.Type1MessageDeprecated.Type 1 message assembly class(package private) static classNTLMEngineImpl.Type2MessageDeprecated.Type 2 message class(package private) static classNTLMEngineImpl.Type3MessageDeprecated.Type 3 message assembly class
-
Field Summary
Fields Modifier and Type Field Description private static java.nio.charset.CharsetDEFAULT_CHARSETDeprecated.Character encoding(package private) static intFLAG_DOMAIN_PRESENTDeprecated.(package private) static intFLAG_REQUEST_128BIT_KEY_EXCHDeprecated.(package private) static intFLAG_REQUEST_56BIT_ENCRYPTIONDeprecated.(package private) static intFLAG_REQUEST_ALWAYS_SIGNDeprecated.(package private) static intFLAG_REQUEST_EXPLICIT_KEY_EXCHDeprecated.(package private) static intFLAG_REQUEST_LAN_MANAGER_KEYDeprecated.(package private) static intFLAG_REQUEST_NTLM2_SESSIONDeprecated.(package private) static intFLAG_REQUEST_NTLMv1Deprecated.(package private) static intFLAG_REQUEST_OEM_ENCODINGDeprecated.(package private) static intFLAG_REQUEST_SEALDeprecated.(package private) static intFLAG_REQUEST_SIGNDeprecated.(package private) static intFLAG_REQUEST_TARGETDeprecated.(package private) static intFLAG_REQUEST_UNICODE_ENCODINGDeprecated.(package private) static intFLAG_REQUEST_VERSIONDeprecated.(package private) static intFLAG_TARGETINFO_PRESENTDeprecated.(package private) static intFLAG_WORKSTATION_PRESENTDeprecated.private static byte[]MAGIC_TLS_SERVER_ENDPOINTDeprecated.(package private) static intMSV_AV_CHANNEL_BINDINGSDeprecated.(package private) static intMSV_AV_DNS_COMPUTER_NAMEDeprecated.(package private) static intMSV_AV_DNS_DOMAIN_NAMEDeprecated.(package private) static intMSV_AV_DNS_TREE_NAMEDeprecated.(package private) static intMSV_AV_EOLDeprecated.(package private) static intMSV_AV_FLAGSDeprecated.(package private) static intMSV_AV_FLAGS_ACCOUNT_AUTH_CONSTAINEDDeprecated.(package private) static intMSV_AV_FLAGS_MICDeprecated.(package private) static intMSV_AV_FLAGS_UNTRUSTED_TARGET_SPNDeprecated.(package private) static intMSV_AV_NB_COMPUTER_NAMEDeprecated.(package private) static intMSV_AV_NB_DOMAIN_NAMEDeprecated.(package private) static intMSV_AV_SINGLE_HOSTDeprecated.(package private) static intMSV_AV_TARGET_NAMEDeprecated.(package private) static intMSV_AV_TIMESTAMPDeprecated.private static java.security.SecureRandomRND_GENDeprecated.Secure random generatorprivate static byte[]SEAL_MAGIC_CLIENTDeprecated.private static byte[]SEAL_MAGIC_SERVERDeprecated.private static byte[]SIGN_MAGIC_CLIENTDeprecated.private static byte[]SIGN_MAGIC_SERVERDeprecated.private static byte[]SIGNATUREDeprecated.The signature string as bytes in the default encodingprivate static java.lang.StringTYPE_1_MESSAGEDeprecated.private static java.nio.charset.CharsetUNICODE_LITTLE_UNMARKEDDeprecated.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.KeycreateDESKey(byte[] bytes, int offset)Deprecated.Creates a DES encryption key from the given key material.private static voidencodeLong(byte[] buf, int offset, int value)Deprecated.private static byte[]encodeLong(int value)Deprecated.(package private) static intF(int x, int y, int z)Deprecated.(package private) static intG(int x, int y, int z)Deprecated.java.lang.StringgenerateType1Msg(java.lang.String domain, java.lang.String workstation)Deprecated.Generates a Type1 message given the domain and workstation.java.lang.StringgenerateType3Msg(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.CharsetgetCharset(int flags)Deprecated.Find the character set based on the flags.(package private) static java.security.MessageDigestgetMD5()Deprecated.private static byte[]getNullTerminatedAsciiString(java.lang.String source)Deprecated.(package private) static java.lang.StringgetResponseFor(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.StringgetResponseFor(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.StringgetType1Message(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.StringgetType3Message(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.StringgetType3Message(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 intH(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 voidoddParity(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 intreadULong(byte[] src, int index)Deprecated.private static intreadUShort(byte[] src, int index)Deprecated.(package private) static introtintlft(int val, int numbits)Deprecated.(package private) static voidwriteULong(byte[] buffer, int value, int offset)Deprecated.(package private) static voidwriteUShort(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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.Calculates RC4- Throws:
NTLMEngineException
-
ntlm2SessionResponse
static byte[] ntlm2SessionResponse(byte[] ntlmHash, byte[] challenge, byte[] clientChallenge) throws NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.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 NTLMEngineExceptionDeprecated.Description copied from interface:NTLMEngineGenerates a Type1 message given the domain and workstation.- Specified by:
generateType1Msgin 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 NTLMEngineExceptionDeprecated.Description copied from interface:NTLMEngineGenerates a Type3 message given the user credentials and the authentication challenge.- Specified by:
generateType3Msgin interfaceNTLMEngine- Parameters:
username- Windows user namepassword- Passworddomain- Windows domain nameworkstation- Windows workstation namechallenge- Type2 challenge.- Returns:
- Type3 response.
- Throws:
NTLMEngineException
-
-