Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
135 | magnus | 1 | Description: Modify lsh-krb-checkpw to work with MIT Kerberos instead of Heimdal. |
2 | Building with the latest release of Heimdal (as of February 2016) |
||
3 | fails and their maintainers want to orphan it. |
||
4 | Bug: https://bugs.debian.org/812813 |
||
5 | |||
6 | --- a/configure.ac |
||
7 | +++ b/configure.ac |
||
8 | @@ -475,7 +475,7 @@ if test x$enable_kerberos = xyes; then |
||
9 | LSH_CHECK_KRB_LIB(asn1, der_get_octet_string) |
||
10 | # Check for krb5_cc_gen_new too? |
||
11 | # krb5_verify_user_lrealm seems to be unique to heimdal |
||
12 | - LSH_CHECK_KRB_LIB(krb5, krb5_verify_user_lrealm,, [enable_kerberos=no]) |
||
13 | + LSH_CHECK_KRB_LIB(krb5, krb5_get_init_creds_password,, [enable_kerberos=no]) |
||
14 | fi |
||
15 | |||
16 | AH_TEMPLATE([WITH_KERBEROS], [For kerberos]) |
||
17 | --- a/src/lsh-krb-checkpw.c |
||
18 | +++ b/src/lsh-krb-checkpw.c |
||
19 | @@ -97,6 +97,8 @@ main(int argc, char **argv) |
||
20 | krb5_context context; |
||
21 | krb5_ccache ccache; |
||
22 | krb5_principal p; |
||
23 | + krb5_creds creds; |
||
24 | + krb5_principal server; |
||
25 | char *name; |
||
26 | char *pw; |
||
27 | |||
28 | @@ -121,18 +123,31 @@ main(int argc, char **argv) |
||
29 | if (krb5_init_context (&context)) |
||
30 | die("krb5_init_context failed."); |
||
31 | |||
32 | - if (krb5_make_principal(context, &p, NULL, name, NULL)) |
||
33 | - die("krb5_make_principal failed."); |
||
34 | + if (krb5_parse_name(context, name, &p)) { |
||
35 | + die("krb5_parse_name failed."); |
||
36 | + } |
||
37 | + |
||
38 | + if (krb5_get_init_creds_password(context, &creds, p, pw, |
||
39 | + NULL, NULL, 0, NULL, NULL)) { |
||
40 | + die("krb5_get_init_creds_password failed."); |
||
41 | + } |
||
42 | + |
||
43 | + if (krb5_verify_init_creds(context, &creds, server, |
||
44 | + NULL, NULL, NULL)) { |
||
45 | + die("krb5_verify_init_creds failed"); |
||
46 | + } |
||
47 | |||
48 | if (!krb5_kuserok(context, p, name)) |
||
49 | die("krb5_kuserok doesn't know the user."); |
||
50 | |||
51 | + /* |
||
52 | if (krb5_cc_gen_new(context, &krb5_mcc_ops, &ccache)) |
||
53 | die("krb5_cc_gen_new failed."); |
||
54 | |||
55 | if (krb5_verify_user_lrealm(context, p, ccache, pw, TRUE, NULL)) |
||
56 | die("krb5_verify_user_lrealm failed."); |
||
57 | |||
58 | + */ |
||
59 | /* Authentication successful. */ |
||
60 | |||
61 | /* TODO: Keep the credential cache in some way. Perhaps write it to |