diff options
author | Danilo Almeida <dalmeida@mit.edu> | 2000-03-16 00:47:21 +0000 |
---|---|---|
committer | Danilo Almeida <dalmeida@mit.edu> | 2000-03-16 00:47:21 +0000 |
commit | a14e6157d20cbf91c313762965ff32bc55b6eea8 (patch) | |
tree | d73bd77b2360a058c1e1734c8b48eafc74237899 /src/lib/krb5/krb/gic_pwd.c | |
parent | 77f6ac1618d819b4039c8f05d6acec86449726b7 (diff) | |
download | krb5-a14e6157d20cbf91c313762965ff32bc55b6eea8.tar.gz krb5-a14e6157d20cbf91c313762965ff32bc55b6eea8.tar.xz krb5-a14e6157d20cbf91c313762965ff32bc55b6eea8.zip |
Add krb5_get_prompt_types() functionality
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@12118 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/krb/gic_pwd.c')
-rw-r--r-- | src/lib/krb5/krb/gic_pwd.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/lib/krb5/krb/gic_pwd.c b/src/lib/krb5/krb/gic_pwd.c index c2ee423cc0..7ca43430e8 100644 --- a/src/lib/krb5/krb/gic_pwd.c +++ b/src/lib/krb5/krb/gic_pwd.c @@ -19,6 +19,7 @@ krb5_get_as_key_password(context, client, etype, prompter, prompter_data, char *clientstr; char promptstr[1024]; krb5_prompt prompt; + krb5_prompt_type prompt_type; password = (krb5_data *) gak_data; @@ -53,10 +54,16 @@ krb5_get_as_key_password(context, client, etype, prompter, prompter_data, prompt.prompt = promptstr; prompt.hidden = 1; prompt.reply = password; + prompt_type = KRB5_PROMPT_TYPE_PASSWORD; + /* PROMPTER_INVOCATION */ + krb5int_set_prompt_types(context, &prompt_type); if (ret = (((*prompter)(context, prompter_data, NULL, NULL, - 1, &prompt)))) + 1, &prompt)))) { + krb5int_set_prompt_types(context, 0); return(ret); + } + krb5int_set_prompt_types(context, 0); } if ((salt->length == -1) && (salt->data == NULL)) { @@ -98,6 +105,7 @@ krb5_get_init_creds_password(context, creds, client, password, prompter, data, krb5_data pw0, pw1; char banner[1024], pw0array[1024], pw1array[1024]; krb5_prompt prompt[2]; + krb5_prompt_type prompt_types[sizeof(prompt)/sizeof(prompt[0])]; master = 0; as_reply = NULL; @@ -193,10 +201,12 @@ krb5_get_init_creds_password(context, creds, client, password, prompter, data, prompt[0].prompt = "Enter new password"; prompt[0].hidden = 1; prompt[0].reply = &pw0; + prompt_types[0] = KRB5_PROMPT_TYPE_NEW_PASSWORD; prompt[1].prompt = "Enter it again"; prompt[1].hidden = 1; prompt[1].reply = &pw1; + prompt_types[1] = KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN; strcpy(banner, "Password expired. You must change it now."); @@ -204,9 +214,13 @@ krb5_get_init_creds_password(context, creds, client, password, prompter, data, pw0.length = sizeof(pw0array); pw1.length = sizeof(pw1array); + /* PROMPTER_INVOCATION */ + krb5int_set_prompt_types(context, prompt_types); if (ret = ((*prompter)(context, data, 0, banner, sizeof(prompt)/sizeof(prompt[0]), prompt))) goto cleanup; + krb5int_set_prompt_types(context, 0); + if (strcmp(pw0.data, pw1.data) != 0) { ret = KRB5_LIBOS_BADPWDMATCH; @@ -271,6 +285,7 @@ krb5_get_init_creds_password(context, creds, client, password, prompter, data, &master, &as_reply); cleanup: + krb5int_set_prompt_types(context, 0); /* if getting the password was successful, then check to see if the password is about to expire, and warn if so */ @@ -300,6 +315,7 @@ cleanup: hours/24); /* ignore an error here */ + /* PROMPTER_INVOCATION */ (*prompter)(context, data, 0, banner, 0, 0); } } |