** md5 patch by W. Campbell <wcampbel@botbay.net>
** Modernization, getopt, etc for the Hybrid IRCD team
** by W. Campbell
-**
-** /dev/random for salt generation added by
+**
+** /dev/random for salt generation added by
** Aaron Sethman <androsyn@ratbox.org>
**
** $Id: mkpasswd.c 26439 2009-02-01 15:27:24Z jilles $
static char saltChars[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
/* 0 .. 63, ascii - 64 */
-extern char *optarg;
-
-
#ifdef __MINGW32__
#include <conio.h>
#ifdef PASS_MAX
int c;
int i = 0;
- memset(getpassbuf, sizeof(getpassbuf), 0);
+ memset(getpassbuf, 0, sizeof(getpassbuf));
fputs(prompt, stderr);
for(;;)
{
int c;
char *saltpara = NULL;
char *salt;
+ char *hashed;
int flag = 0;
int length = 0; /* Not Set */
int rounds = 0; /* Not set, since extended DES needs 25 and blowfish needs
}
}
- if(flag & FLAG_BLOWFISH)
+ if(flag & FLAG_MD5)
+ {
+ if(length == 0)
+ length = 8;
+ if(flag & FLAG_SALT)
+ salt = make_md5_salt_para(saltpara);
+ else
+ salt = make_md5_salt(length);
+ }
+ else if(flag & FLAG_BLOWFISH)
{
if(length == 0)
length = 22;
else
salt = make_sha256_salt(length);
}
- else if(flag & FLAG_SHA512)
- {
- if(length == 0)
- length = 16;
- if(flag & FLAG_SALT)
- salt = make_sha512_salt_para(saltpara);
- else
- salt = make_sha512_salt(length);
- }
else if(flag & FLAG_EXT)
{
/* XXX - rounds needs to be done */
else
{
if(length == 0)
- length = 8;
+ length = 16;
if(flag & FLAG_SALT)
- salt = make_md5_salt_para(saltpara);
+ salt = make_sha512_salt_para(saltpara);
else
- salt = make_md5_salt(length);
+ salt = make_sha512_salt(length);
}
if(flag & FLAG_PASS)
{
if(!plaintext)
- printf("Please enter a valid password\n");
+ {
+ fprintf(stderr, "Please enter a valid password\n");
+ return 1;
+ }
+
+ hashed = rb_crypt(plaintext, salt);
}
else
{
- plaintext = getpass("plaintext: ");
+ hashed = strdup(rb_crypt(getpass("plaintext: "), salt));
+ plaintext = getpass("again: ");
+
+ if (strcmp(rb_crypt(plaintext, salt), hashed) != 0)
+ {
+ fprintf(stderr, "Passwords do not match\n");
+ return 1;
+ }
}
- printf("%s\n", rb_crypt(plaintext, salt));
+ printf("%s\n", hashed);
return 0;
}