114extern void setkey(
const char *);
115extern void encrypt(
char *,
int);
125static void ChallengeResponse(
130static void ChapMS_NT(
135 MS_ChapResponse *response
143ChallengeResponse(
u_char *challenge,
149 BZERO(ZPasswordHash,
sizeof(ZPasswordHash));
150 BCOPY(pwHash, ZPasswordHash, 16);
153 log_packet(ZPasswordHash,
sizeof(ZPasswordHash),
"ChallengeResponse - ZPasswordHash",
LOG_DEBUG);
156 DesEncrypt(challenge, ZPasswordHash + 0, response + 0);
157 DesEncrypt(challenge, ZPasswordHash + 7, response + 8);
158 DesEncrypt(challenge, ZPasswordHash + 14, response + 16);
161 log_packet(response, 24,
"ChallengeResponse - response",
LOG_DEBUG);
179 setkey((
char*)crypt_key);
182 CHAPDEBUG(
LOG_INFO, (
"DesEncrypt: 8 octet input : %02X%02X%02X%02X%02X%02X%02X%02X\n",
183 clear[0], clear[1], clear[2], clear[3], clear[4], clear[5], clear[6], clear[7]));
186 Expand(clear, des_input);
187 encrypt((
char*)des_input, 0);
188 Collapse(des_input,
cipher);
191 CHAPDEBUG(
LOG_INFO, (
"DesEncrypt: 8 octet output: %02X%02X%02X%02X%02X%02X%02X%02X\n",
204 des_key_schedule key_schedule;
208 des_set_key(&
des_key, key_schedule);
211 CHAPDEBUG(
LOG_INFO, (
"DesEncrypt: 8 octet input : %02X%02X%02X%02X%02X%02X%02X%02X\n",
212 clear[0], clear[1], clear[2], clear[3], clear[4], clear[5], clear[6], clear[7]));
218 CHAPDEBUG(
LOG_INFO, (
"DesEncrypt: 8 octet output: %02X%02X%02X%02X%02X%02X%02X%02X\n",
229 register unsigned int word;
234 word >>= 15 - (startBit % 8 + 7);
251 for(
i = 0;
i < 64;
in++){
253 for(
j = 7;
j >= 0;
j--) {
254 *
out++ = (
c >>
j) & 01;
269 for (
i = 0;
i < 64;
i += 8,
out++) {
271 for (
j = 7;
j >= 0;
j--,
in++) {
293 des_set_odd_parity((des_cblock *)
des_key);
299 CHAPDEBUG(
LOG_INFO, (
"MakeKey: 64-bit output: %02X%02X%02X%02X%02X%02X%02X%02X\n",
305ChapMS_NT(
char *rchallenge,
309 MS_ChapResponse *response)
314 static int low_byte_first = -1;
320 BZERO(unicodePassword,
sizeof(unicodePassword));
321 for (
i = 0;
i < secret_len;
i++) {
324 MDbegin(&md4Context);
325 MDupdate(&md4Context, unicodePassword, secret_len * 2 * 8);
327 if (low_byte_first == -1) {
328 low_byte_first = (
PP_HTONS((
unsigned short int)1) != 1);
330 if (low_byte_first == 0) {
332 MDreverse((
unsigned int*)&md4Context);
335 MDupdate(&md4Context,
NULL, 0);
337 ChallengeResponse((
u_char*)rchallenge, (
u_char*)md4Context.buffer, response->NTResp);
344ChapMS_LANMan(
char *rchallenge,
348 MS_ChapResponse *response)
355 BZERO(UcasePassword,
sizeof(UcasePassword));
356 for (
i = 0;
i < secret_len;
i++) {
359 DesEncrypt( StdText, UcasePassword + 0, PasswordHash + 0 );
360 DesEncrypt( StdText, UcasePassword + 7, PasswordHash + 8 );
361 ChallengeResponse(rchallenge, PasswordHash, response->LANManResp);
368 MS_ChapResponse response;
370 extern int ms_lanman;
376 BZERO(&response,
sizeof(response));
379 ChapMS_NT(rchallenge, rchallenge_len,
secret, secret_len, &response);
382 ChapMS_LANMan(rchallenge, rchallenge_len,
secret, secret_len, &response);
385 response.UseNT = !ms_lanman;
#define LWIP_UNUSED_ARG(x)
#define MS_CHAP_RESPONSE_LEN
void ChapMS(chap_state *, char *, int, char *, int)
void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, const des_key *des)
struct tag_des_key des_key
GLenum GLenum GLenum input
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static DATA_BLOB CRYPTPROTECT_PROMPTSTRUCT DATA_BLOB *static LPWSTR DATA_BLOB CRYPTPROTECT_PROMPTSTRUCT DATA_BLOB *static char secret[]
static unsigned(__cdecl *hash_bstr)(bstr_t s)