version 1.5.2.7, 2010/04/13 20:23:21
|
version 1.7, 2006/05/11 01:09:40
|
Line 1
|
Line 1
|
/* $OpenLDAP: pkg/ldap/servers/slapd/slappasswd.c,v 1.5.2.6 2009/01/22 00:01:03 kurt Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/slappasswd.c,v 1.6 2006/05/10 22:12:54 ando Exp $ */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
* Copyright 1998-2010 The OpenLDAP Foundation. |
* Copyright 1998-2006 The OpenLDAP Foundation. |
* Portions Copyright 1998-2003 Kurt D. Zeilenga. |
* Portions Copyright 1998-2003 Kurt D. Zeilenga. |
* All rights reserved. |
* All rights reserved. |
* |
* |
Line 37
|
Line 37
|
#include <lutil_sha1.h> |
#include <lutil_sha1.h> |
|
|
#include "ldap_defaults.h" |
#include "ldap_defaults.h" |
#include "slap.h" |
|
|
|
static int verbose = 0; |
static int verbose = 0; |
|
|
Line 49 usage(const char *s)
|
Line 48 usage(const char *s)
|
" -c format\tcrypt(3) salt format\n" |
" -c format\tcrypt(3) salt format\n" |
" -g\t\tgenerate random password\n" |
" -g\t\tgenerate random password\n" |
" -h hash\tpassword scheme\n" |
" -h hash\tpassword scheme\n" |
" -n\t\tomit trailing newline\n" |
|
" -s secret\tnew password\n" |
" -s secret\tnew password\n" |
" -u\t\tgenerate RFC2307 values (default)\n" |
" -u\t\tgenerate RFC2307 values (default)\n" |
" -v\t\tincrease verbosity\n" |
" -v\t\tincrease verbosity\n" |
Line 75 slappasswd( int argc, char *argv[] )
|
Line 73 slappasswd( int argc, char *argv[] )
|
const char *progname = "slappasswd"; |
const char *progname = "slappasswd"; |
|
|
int i; |
int i; |
char *newline = "\n"; |
|
struct berval passwd = BER_BVNULL; |
struct berval passwd = BER_BVNULL; |
struct berval hash; |
struct berval hash; |
|
|
while( (i = getopt( argc, argv, |
while( (i = getopt( argc, argv, |
"c:d:gh:ns:T:vu" )) != EOF ) |
"c:d:gh:s:T:vu" )) != EOF ) |
{ |
{ |
switch (i) { |
switch (i) { |
case 'c': /* crypt salt format */ |
case 'c': /* crypt salt format */ |
Line 109 slappasswd( int argc, char *argv[] )
|
Line 106 slappasswd( int argc, char *argv[] )
|
return EXIT_FAILURE; |
return EXIT_FAILURE; |
|
|
} else { |
} else { |
scheme = ch_strdup( optarg ); |
scheme = strdup( optarg ); |
} |
} |
break; |
break; |
|
|
case 'n': |
|
newline = ""; |
|
break; |
|
|
|
case 's': /* new password (secret) */ |
case 's': /* new password (secret) */ |
if ( pwfile != NULL ) { |
if ( pwfile != NULL ) { |
fprintf( stderr, "Option -s incompatible with -T\n" ); |
fprintf( stderr, "Option -s incompatible with -T\n" ); |
Line 128 slappasswd( int argc, char *argv[] )
|
Line 121 slappasswd( int argc, char *argv[] )
|
|
|
} else { |
} else { |
char* p; |
char* p; |
newpw = ch_strdup( optarg ); |
newpw = strdup( optarg ); |
|
|
for( p = optarg; *p != '\0'; p++ ) { |
for( p = optarg; *p != '\0'; p++ ) { |
*p = '\0'; |
*p = '\0'; |
Line 173 slappasswd( int argc, char *argv[] )
|
Line 166 slappasswd( int argc, char *argv[] )
|
if( newpw == NULL ) { |
if( newpw == NULL ) { |
/* prompt for new password */ |
/* prompt for new password */ |
char *cknewpw; |
char *cknewpw; |
newpw = ch_strdup(getpassphrase("New password: ")); |
newpw = strdup(getpassphrase("New password: ")); |
cknewpw = getpassphrase("Re-enter new password: "); |
cknewpw = getpassphrase("Re-enter new password: "); |
|
|
if( strcmp( newpw, cknewpw )) { |
if( strcmp( newpw, cknewpw )) { |
Line 185 slappasswd( int argc, char *argv[] )
|
Line 178 slappasswd( int argc, char *argv[] )
|
passwd.bv_val = newpw; |
passwd.bv_val = newpw; |
passwd.bv_len = strlen(passwd.bv_val); |
passwd.bv_len = strlen(passwd.bv_val); |
} else { |
} else { |
hash = passwd; |
/* Omit trailing newline so it may be directed to a pwfile */ |
goto print_pw; |
printf( "%s", passwd.bv_val ); |
|
return EXIT_SUCCESS; |
} |
} |
|
|
lutil_passwd_hash( &passwd, scheme, &hash, &text ); |
lutil_passwd_hash( &passwd, scheme, &hash, &text ); |
Line 203 slappasswd( int argc, char *argv[] )
|
Line 197 slappasswd( int argc, char *argv[] )
|
return EXIT_FAILURE; |
return EXIT_FAILURE; |
} |
} |
|
|
print_pw:; |
printf( "%s\n" , hash.bv_val ); |
printf( "%s%s" , hash.bv_val, newline ); |
|
return EXIT_SUCCESS; |
return EXIT_SUCCESS; |
} |
} |