8
main(int argc, char *argv[]) {
13
unsigned char *cknewpw;
21
if (argc>1) newpw=strdup(argv[1]);
24
newpw = strdup(getpass("New password: "));
25
cknewpw = getpass("Re-enter new password: ");
27
if( strcmp( newpw, cknewpw ))
29
fprintf( stderr, "Password values do not match\n" );
32
for (i=0;i<strlen(cknewpw);i++) cknewpw[i]=0;
35
td = mcrypt_module_open("twofish", NULL, "cfb", NULL);
36
if (td==MCRYPT_FAILED) return 1;
38
IVsize=mcrypt_enc_get_iv_size(td);
41
fprintf(stderr,"Can't allocate memory!\n");
45
f=fopen("/dev/urandom","r");
46
if (!f) f=fopen("/dev/random","r");
48
for (i=0; i<IVsize; i++)
54
i=mcrypt_generic_init( td, tmpkey, tmpkeysize, IV);
61
mcrypt_generic (td, newpw, ssize);
63
sout=(char*)malloc(2*(1+IVsize+ssize)+1);
65
fprintf(stderr,"Can't allocate memory!\n");
68
sprintf(sout,"%lx",IVsize);
69
for(j=2,i=0;i<IVsize;i++,j+=2)
71
if (IV[i]<0x10) sprintf(sout+j,"0%x",IV[i]);
72
else sprintf(sout+j,"%x",IV[i]);
75
for(i=0;i<ssize;i++,j+=2)
77
if (newpw[i]<0x10) sprintf(sout+j,"0%x",newpw[i]);
78
else sprintf(sout+j,"%x",newpw[i]);
83
mcrypt_generic_end(td);