/*
 * passgen - prompt for a password and generate a crypted string
 */

#include <stdio.h>
#include <sys/types.h>

char	*getpass(), *crypt(), *saltgen();

int	quiet = 0;
extern int	optind;
extern char	*optarg;

main(argc,argv)
	int	argc;
	char	**argv;
{
	char	*password, *salt=NULL, tmp[9];
	char	*encrypted;
	int	c;
	time_t	salty;

	while ((c = getopt(argc,argv,"qs:")) != EOF)
	switch (c) {
	case 'q':
		quiet++;
		break;
	case 's':
		salt=optarg;
		break;
	default:
		fprintf(stderr,"Usage: passgen [-q] [-s SALT]\n");
		exit(1);
	}

	if (!salt)
		salt = saltgen();
	do {
		password=getpass("Password: ");
		strncpy(tmp,password,9);
		password=getpass("Again: ");
	} while (strcmp(password,tmp));
	bzero(tmp,8);
	encrypted = crypt(password, salt);
	bzero(password,strlen(password));
	if (quiet)
		printf("%s\n",encrypted);
	else
		printf("Crpyted string: %s\n",encrypted);
	exit(0);
}

char	*saltgen()
{
	time_t		salty;
	static char	saltc[2];
	register char	c;
	register int	i;

	
	(void) time(&salty);
	salty *= getpid();
	saltc[0] = salty & 077;
	saltc[1] = (salty >> 6) & 077;
	for (i=0; i < 2; i++) {
		c = saltc[i] + '.';
		if (c > '9')
			c += 7;
		if (c > 'Z')
			c += 6;
		saltc[i] = c;
	}
	saltc[2]='\0';
	return(saltc);
}

	
	
	

	
