kio Library API Documentation

KNTLM Class Reference

KNTLM class implements the NTLM authentication protocol. More...

#include <kntlm.h>

List of all members.

Public Types

enum  Flags {
  Negotiate_Unicode = 0x00000001, Negotiate_OEM = 0x00000002, Request_Target = 0x00000004, Negotiate_Sign = 0x00000010,
  Negotiate_Seal = 0x00000020, Negotiate_Datagram_Style = 0x00000040, Negotiate_LM_Key = 0x00000080, Negotiate_Netware = 0x00000100,
  Negotiate_NTLM = 0x00000200, Negotiate_Domain_Supplied = 0x00001000, Negotiate_WS_Supplied = 0x00002000, Negotiate_Local_Call = 0x00004000,
  Negotiate_Always_Sign = 0x00008000, Target_Type_Domain = 0x00010000, Target_Type_Server = 0x00020000, Target_Type_Share = 0x00040000,
  Negotiate_NTLM2_Key = 0x00080000, Request_Init_Response = 0x00100000, Request_Accept_Response = 0x00200000, Request_NonNT_Key = 0x00400000,
  Negotiate_Target_Info = 0x00800000, Negotiate_128 = 0x20000000, Negotiate_Key_Exchange = 0x40000000, Negotiate_56 = 0x80000000
}

Static Public Member Functions

static bool getNegotiate (QByteArray &negotiate, const QString &domain=QString::null, const QString &workstation=QString::null, Q_UINT32 flags=Negotiate_Unicode|Request_Target|Negotiate_NTLM)
static bool getAuth (QByteArray &auth, const QByteArray &challenge, const QString &user, const QString &password, const QString &domain=QString::null, const QString &workstation=QString::null, bool forceNTLM=false, bool forceNTLMv2=false)
static QByteArray getLMResponse (const QString &password, const unsigned char *challenge)
static QByteArray lmHash (const QString &password)
static QByteArray lmResponse (const QByteArray &hash, const unsigned char *challenge)
static QByteArray getNTLMResponse (const QString &password, const unsigned char *challenge)
static QByteArray ntlmHash (const QString &password)
static QByteArray getNTLMv2Response (const QString &target, const QString &user, const QString &password, const QByteArray &targetInformation, const unsigned char *challenge)
static QByteArray getLMv2Response (const QString &target, const QString &user, const QString &password, const unsigned char *challenge)
static QByteArray ntlmv2Hash (const QString &target, const QString &user, const QString &password)
static QByteArray lmv2Response (const QByteArray &hash, const QByteArray &clientData, const unsigned char *challenge)
static QString getString (const QByteArray &buf, const SecBuf &secbuf, bool unicode)
static QByteArray getBuf (const QByteArray &buf, const SecBuf &secbuf)
static QByteArray createBlob (const QByteArray &targetinfo)
static QByteArray hmacMD5 (const QByteArray &data, const QByteArray &key)

Classes

struct  Auth
 The NTLM Type 3 structure. More...
struct  Challenge
 The NTLM Type 2 structure. More...
struct  Negotiate
 The NTLM Type 1 structure. More...


Detailed Description

KNTLM class implements the NTLM authentication protocol.

The KNTLM class is useful for creating the authentication structures which can be used for various servers which implements NTLM type authentication. A comprehensive description of the NTLM authentication protocol can be found at http://davenport.sourceforge.net/ntlm.html The class also contains methods to create the LanManager and NT (MD4) hashes of a password. This class doesn't maintain any state information, so all methods are static.

Definition at line 41 of file kntlm.h.


Member Function Documentation

bool KNTLM::getNegotiate QByteArray negotiate,
const QString domain = QString::null,
const QString workstation = QString::null,
Q_UINT32  flags = Negotiate_Unicode|Request_Target|Negotiate_NTLM
[static]
 

Creates the initial message (type 1) which should be sent to the server.

Parameters:
negotiate - a buffer where the Type 1 message will returned.
domain - the domain name which should be send with the message.
workstation - the workstation name which should be send with the message.
flags - various flags, in most cases the defaults will good.
Returns:
true if creating the structure succeeds, false otherwise.

Definition at line 87 of file kntlm.cpp.

References KFromToLittleEndian().

bool KNTLM::getAuth QByteArray auth,
const QByteArray challenge,
const QString user,
const QString password,
const QString domain = QString::null,
const QString workstation = QString::null,
bool  forceNTLM = false,
bool  forceNTLMv2 = false
[static]
 

Creates the type 3 message which should be sent to the server after the challenge (type 2) received.

Parameters:
auth - a buffer where the Type 3 message will returned.
challenge - the Type 2 message returned by the server.
user - user's name.
password - user's password.
domain - the target domain. If left empty, it will be extracted from the challenge.
workstation - the user's workstation.
forceNTLM - force the use of NTLM authentication (either v1 or v2).
forceNTLMv2 - force the use of NTLMv2 or LMv2 authentication. If false, NTLMv2 support is autodetected from the challenge.
Returns:
true if auth filled with the Type 3 message, false if an error occured (challenge data invalid, or NTLM authentication forced, but the challenge data says no NTLM supported).

Definition at line 107 of file kntlm.cpp.

References KNTLM::Challenge::challengeData, KNTLM::Challenge::flags, getBuf(), getLMResponse(), getLMv2Response(), getNTLMResponse(), getNTLMv2Response(), getString(), KFromToLittleEndian(), KNTLM::Challenge::targetInfo, and KNTLM::Challenge::targetName.

QByteArray KNTLM::getLMResponse const QString password,
const unsigned char *  challenge
[static]
 

Returns the LanManager response from the password and the server challenge.

Definition at line 168 of file kntlm.cpp.

References lmHash(), and lmResponse().

Referenced by getAuth().

QByteArray KNTLM::lmHash const QString password  )  [static]
 

Calculates the LanManager hash of the specified password.

Definition at line 180 of file kntlm.cpp.

Referenced by getLMResponse().

QByteArray KNTLM::lmResponse const QByteArray hash,
const unsigned char *  challenge
[static]
 

Calculates the LanManager response from the LanManager hash and the server challenge.

Definition at line 202 of file kntlm.cpp.

Referenced by getLMResponse(), and getNTLMResponse().

QByteArray KNTLM::getNTLMResponse const QString password,
const unsigned char *  challenge
[static]
 

Returns the NTLM response from the password and the server challenge.

Definition at line 220 of file kntlm.cpp.

References lmResponse(), and ntlmHash().

Referenced by getAuth().

QByteArray KNTLM::ntlmHash const QString password  )  [static]
 

Returns the NTLM hash (MD4) from the password.

Definition at line 232 of file kntlm.cpp.

References KMD4::rawDigest().

Referenced by getNTLMResponse(), and ntlmv2Hash().

QByteArray KNTLM::getNTLMv2Response const QString target,
const QString user,
const QString password,
const QByteArray targetInformation,
const unsigned char *  challenge
[static]
 

Calculates the NTLMv2 response.

Definition at line 244 of file kntlm.cpp.

References lmv2Response(), and ntlmv2Hash().

Referenced by getAuth().

QByteArray KNTLM::getLMv2Response const QString target,
const QString user,
const QString password,
const unsigned char *  challenge
[static]
 

Calculates the LMv2 response.

Definition at line 253 of file kntlm.cpp.

References lmv2Response(), ntlmv2Hash(), and KApplication::random().

Referenced by getAuth().

QByteArray KNTLM::ntlmv2Hash const QString target,
const QString user,
const QString password
[static]
 

Returns the NTLMv2 hash.

Definition at line 264 of file kntlm.cpp.

References ntlmHash().

Referenced by getLMv2Response(), and getNTLMv2Response().

QByteArray KNTLM::lmv2Response const QByteArray hash,
const QByteArray clientData,
const unsigned char *  challenge
[static]
 

Calculates the LMv2 response.

Definition at line 274 of file kntlm.cpp.

Referenced by getLMv2Response(), and getNTLMv2Response().

QString KNTLM::getString const QByteArray buf,
const SecBuf &  secbuf,
bool  unicode
[static]
 

Extracts a string field from an NTLM structure.

Definition at line 35 of file kntlm.cpp.

Referenced by getAuth().

QByteArray KNTLM::getBuf const QByteArray buf,
const SecBuf &  secbuf
[static]
 

Extracts a byte array from an NTLM structure.

Definition at line 52 of file kntlm.cpp.

Referenced by getAuth().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for kio Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Jul 21 13:14:32 2006 by doxygen 1.4.0 written by Dimitri van Heesch, © 1997-2003