/**************************************************************************/
// password.cpp - handles password checking
/***************************************************************************
* The Dawn of Time v1.69r (c)1997-2004 Michael Garratt *
* >> A number of people have contributed to the Dawn codebase, with the *
* majority of code written by Michael Garratt - www.dawnoftime.org *
* >> To use this source code, you must fully comply with the dawn license *
* in licenses.txt... In particular, you may not remove this copyright *
* notice. *
**************************************************************************/
#include "include.h"
/**************************************************************************/
char *ey_crypt(char *buf,char *salt); // in crypt.c
/**************************************************************************/
char *dot_crypt(const char *buf, const char *salt)
{
#ifdef NOCRYPT
return (char *)buf;
#endif
char crypt_buf[25];
memset(crypt_buf, 0, 25);
strncpy(crypt_buf, buf, 24);
char salt_buf[1024];
memset(salt_buf, 0, 1024);
strncpy(salt_buf, salt, 2);
return ey_crypt(crypt_buf,salt_buf);
};
/**************************************************************************/
// return true if the password is considered correct
bool is_valid_password(const char *attempt, const char *password, connection_data *c)
{
if(strcmp( dot_crypt( attempt, password ), password) ){
// check if it is a password which was created before
// LONGCRYPT was defined in ey_crypt... if so, see if
// the first 8 characters of the 'attempt' parameter
// match dot_crypt, if so then they have the
// password correct
if(str_len(attempt)>8 && str_len(password)==13){
char first_eight[9];
strncpy(first_eight, attempt, 8);
first_eight[8]='\0';
if(!strcmp( dot_crypt( first_eight, password ), password)){
return true;
}
}
return false;
}
return true;
}
/**************************************************************************/