Ask for password before calling get_in_tkt. This makes it possible to

call key_proc more than once.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2465 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-07-19 07:54:21 +00:00
parent bb48e3930a
commit 7f13df2470

View File

@@ -80,6 +80,7 @@ main (int argc, char **argv)
krb5_preauthtype pre_auth_types[] = {KRB5_PADATA_ENC_TIMESTAMP}; krb5_preauthtype pre_auth_types[] = {KRB5_PADATA_ENC_TIMESTAMP};
int c; int c;
char *realm; char *realm;
char pwbuf[128];
union { union {
krb5_flags i; krb5_flags i;
@@ -125,13 +126,9 @@ main (int argc, char **argv)
krb5_get_err_text(context, ret)); krb5_get_err_text(context, ret));
if(argv[0]){ if(argv[0]){
char *p;
ret = krb5_parse_name (context, argv[0], &principal); ret = krb5_parse_name (context, argv[0], &principal);
if (ret) if (ret)
errx (1, "krb5_parse_name: %s", krb5_get_err_text(context, ret)); errx (1, "krb5_parse_name: %s", krb5_get_err_text(context, ret));
krb5_unparse_name(context, principal, &p);
fprintf (stderr, "%s's ", p);
free(p);
}else{ }else{
struct passwd *pw; struct passwd *pw;
@@ -142,7 +139,6 @@ main (int argc, char **argv)
if (ret) if (ret)
errx (1, "krb5_build_principal: %s", errx (1, "krb5_build_principal: %s",
krb5_get_err_text(context, ret)); krb5_get_err_text(context, ret));
fprintf (stderr, "%s@%s's ", pw->pw_name, realm);
} }
free(realm); free(realm);
@@ -173,15 +169,28 @@ main (int argc, char **argv)
cred.server = server; cred.server = server;
cred.times.endtime = 0; cred.times.endtime = 0;
{
char *p;
char *prompt;
krb5_unparse_name(context, principal, &p);
asprintf(&prompt, "%s's Password: ", p);
free(p);
des_read_pw_string(pwbuf, sizeof(pwbuf), prompt, 0);
free(prompt);
}
ret = krb5_get_in_tkt_with_password (context, ret = krb5_get_in_tkt_with_password (context,
options.i, options.i,
NULL, NULL,
NULL, NULL,
preauth ? pre_auth_types : NULL, preauth ? pre_auth_types : NULL,
NULL, pwbuf,
ccache, ccache,
&cred, &cred,
NULL); NULL);
memset(pwbuf, 0, sizeof(pwbuf));
if (ret) if (ret)
errx (1, "krb5_get_in_tkt_with_password: %s", errx (1, "krb5_get_in_tkt_with_password: %s",
krb5_get_err_text(context, ret)); krb5_get_err_text(context, ret));