1 .\" Copyright (c) 1997-2002 Kungliga Tekniska Högskolan
2 .\" $Id: krb5_425_conv_principal.3,v 1.8 2002/08/28 15:30:46 joda Exp $
4 .Dt KRB5_425_CONV_PRINCIPAL 3
7 .Nm krb5_425_conv_principal ,
8 .Nm krb5_425_conv_principal_ext ,
9 .Nm krb5_524_conv_principal
10 .Nd converts to and from version 4 principals
12 Kerberos 5 Library (libkrb5, -lkrb5)
16 .Fn krb5_425_conv_principal "krb5_context context" "const char *name" "const char *instance" "const char *realm" "krb5_principal *principal"
18 .Fn krb5_425_conv_principal_ext "krb5_context context" "const char *name" "const char *instance" "const char *realm" "krb5_boolean (*func)(krb5_context, krb5_principal)" "krb5_boolean resolve" "krb5_principal *principal"
20 .Fn krb5_524_conv_principal "krb5_context context" "const krb5_principal principal" "char *name" "char *instance" "char *realm"
22 Converting between version 4 and version 5 principals can at best be
25 A version 4 principal consists of a name, an instance, and a realm. A
26 version 5 principal consists of one or more components, and a
27 realm. In some cases also the first component/name will differ between
28 version 4 and version 5. Furthermore the second component of a host
29 principal will be the fully qualified domain name of the host in
30 question, while the instance of a version 4 principal will only
31 contain the first part (short hostname). Because of these problems
32 the conversion between principals will have to be site customized.
34 .Fn krb5_425_conv_principal_ext
35 will try to convert a version 4 principal, given by
40 to a version 5 principal. This can result in several possible
43 is non-NULL, it will be called for each candidate principal.
45 should return true if the principal was
48 .Fn krb5_425_conv_principal_ext
49 will look up the name in
52 .Li v4_name_convert/host
53 subsection, which should contain a list of version 4 names whose
54 instance should be treated as a hostname. This list can be specified
55 for each realm (in the
59 section. If the name is found the resulting name of the principal
60 will be the value of this binding. The instance is then first looked
62 .Li v4_instance_convert
63 for the specified realm. If found the resulting value will be used as
64 instance (this can be used for special cases), no further attempts
65 will be made to find a conversion if this fails (with
69 parameter is true, the instance will be looked up with
71 This can be a time consuming, error prone, and unsafe operation. Next
72 a list of hostnames will be created from the instance and the
74 variable, which should contain a list of possible domains for the
77 On the other hand, if the name is not found in a
79 section, it is looked up in a
80 .Li v4_name_convert/plain
81 binding. If found here the name will be converted, but the instance
84 This list of default host-type conversions is compiled-in:
85 .Bd -literal -offset indent
98 It will only be used if there isn't an entry for these names in the
99 config file, so you can override these defaults.
101 .Fn krb5_425_conv_principal
103 .Fn krb5_425_conv_principal_ext
109 .Li v4_instance_resolve
115 .Fn krb5_524_conv_principal
116 basically does the opposite of
117 .Fn krb5_425_conv_principal ,
118 it just doesn't have to look up any names, but will instead truncate
119 instances found to belong to a host principal. The
124 should be at least 40 characters long.
126 Since this is confusing an example is in place.
128 Assume that we have the
132 domains that have shared a single version 4 realm, FOO.COM. The version 4
135 .Bd -literal -offset indent
143 file that covers this case might look like:
144 .Bd -literal -offset indent
146 v4_instance_resolve = yes
149 kdc = kerberos.foo.com
150 v4_instance_convert = {
157 With this setup and the following host table:
158 .Bd -literal -offset indent
163 the following conversions will be made:
164 .Bd -literal -offset indent
165 rcmd.a-host \(-> host/a-host.foo.com
166 ftp.b-host \(-> ftp/b-host.bar.com
167 pop.foo \(-> pop/foo.com
168 ftp.other \(-> ftp/other.foo.com
169 other.a-host \(-> other/a-host
172 The first three are what you expect. If you remove the
174 the fourth entry will result in an error (since the host
176 can't be found). Even if
178 is a valid host name, the last entry will not be converted, since the
180 name is not known to represent a host-type principal.
182 .Dq v4_instance_resolve
183 the second example will result in
184 .Dq ftp/b-host.foo.com
185 (because of the default domain). And all of this is of course only
186 valid if you have working name resolving.
188 .Xr krb5_build_principal 3 ,
189 .Xr krb5_free_principal 3 ,
190 .Xr krb5_parse_name 3 ,
191 .Xr krb5_sname_to_principal 3 ,
192 .Xr krb5_unparse_name 3 ,