FreeTDS API
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Classes | Macros | Typedefs | Functions | Variables
Authentication
LibTDS API

Functions for handling authentication. More...

Classes

struct  names_blob_prefix_t
 
struct  tds_answer
 
struct  tds_ntlm_auth
 

Macros

#define offsetof(st, m)   ((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))
 

Typedefs

typedef struct tds_answer TDSANSWER
 
typedef struct tds_ntlm_auth TDSNTLMAUTH
 

Functions

static void convert_to_upper (char *buf, size_t len)
 
static size_t convert_to_usc2le_string (TDSSOCKET *tds, const char *s, size_t len, char *out)
 
static void fill_names_blob_prefix (names_blob_prefix_t *prefix)
 
static void generate_random_buffer (unsigned char *out, int len)
 
static unsigned char * make_lm_v2_response (const unsigned char ntlm_v2_hash[16], const unsigned char *client_data, TDS_INT client_data_len, const unsigned char challenge[8])
 
static int make_ntlm_hash (TDSSOCKET *tds, const char *passwd, unsigned char ntlm_hash[16])
 
static int make_ntlm_v2_hash (TDSSOCKET *tds, const char *passwd, unsigned char ntlm_v2_hash[16])
 
static int tds7_send_auth (TDSSOCKET *tds, const unsigned char *challenge, TDS_UINT flags, const unsigned char *names_blob, TDS_INT names_blob_len)
 
static int tds_answer_challenge (TDSSOCKET *tds, TDSCONNECTION *connection, const unsigned char *challenge, TDS_UINT *flags, const unsigned char *names_blob, TDS_INT names_blob_len, TDSANSWER *answer, unsigned char **ntlm_v2_response)
 Crypt a given password using schema required for NTLMv1 or NTLM2 authentication.
 
static int tds_answer_challenge_ntlmv2 (TDSSOCKET *tds, TDSCONNECTION *connection, const unsigned char *challenge, TDS_UINT *flags, const unsigned char *names_blob, TDS_INT names_blob_len, TDSANSWER *answer, unsigned char **ntlm_v2_response)
 
static void tds_convert_key (const unsigned char *key_56, DES_KEY *ks)
 
static void tds_encrypt_answer (const unsigned char *hash, const unsigned char *challenge, unsigned char *answer)
 
static int tds_ntlm_free (TDSSOCKET *tds, TDSAUTHENTICATION *tds_auth)
 
TDSAUTHENTICATIONtds_ntlm_get_auth (TDSSOCKET *tds)
 Build a NTLMSPP packet to send to server.
 
static int tds_ntlm_handle_next (TDSSOCKET *tds, struct tds_authentication *auth, size_t len)
 
static void unix_to_nt_time (TDS_UINT8 *nt, time_t t)
 put a 8 byte filetime from a time_t This takes GMT as input
 

Variables

static const unsigned char ntlm_id [] = "NTLMSSP"
 

Detailed Description

Functions for handling authentication.

Function Documentation

static int tds_answer_challenge ( TDSSOCKET tds,
TDSCONNECTION connection,
const unsigned char *  challenge,
TDS_UINT *  flags,
const unsigned char *  names_blob,
TDS_INT  names_blob_len,
TDSANSWER answer,
unsigned char **  ntlm_v2_response 
)
static

Crypt a given password using schema required for NTLMv1 or NTLM2 authentication.

Parameters
passwdclear text domain password
challengechallenge data given by server
flagsNTLM flags from server side
answerbuffer where to store crypted password
TDSAUTHENTICATION* tds_ntlm_get_auth ( TDSSOCKET tds)

Build a NTLMSPP packet to send to server.

Parameters
tdsA pointer to the TDSSOCKET structure managing a client/server operation.
Returns
authentication info