KRB5_BUILD_PRINCIPAL(3)

NAME
krb5_build_principal, krb5_build_principal_ext, krb5_build_principal_va, krb5_build_principal_va_ext, krb5_make_principal - principal creation functions

LIBRARY
Kerberos 5 Library (libkrb5, -lkrb5)

SYNOPSIS
#include <krb5/krb5.h>
krb5_error_code
krb5_build_principal(krb5_context context, krb5_principal *principal, int realm_len, krb5_const_realm realm, ...);
krb5_error_code
krb5_build_principal_ext(krb5_context context, krb5_principal *principal, int realm_len, krb5_const_realm realm, ...);
krb5_error_code
krb5_build_principal_va(krb5_context context, krb5_principal *principal, int realm_len, krb5_const_realm realm, va_list ap);
krb5_error_code
krb5_build_principal_va_ext(krb5_context context, krb5_principal *principal, int realm_len, krb5_const_realm realm, va_list ap);
krb5_error_code
krb5_make_principal(krb5_context context, krb5_principal *principal, krb5_const_realm realm, ...);

DESCRIPTION
These functions create a Kerberos 5 principal from a realm and a list of components. All of these functions return an allocated principal in the principal parameter, this should be freed with krb5_free_principal() after use.

The “build” functions take a realm and the length of the realm. The krb5_build_principal() and krb5_build_principal_va() also takes a list of components (zero-terminated strings), terminated with NULL. The krb5_build_principal_ext() and krb5_build_principal_va_ext() takes a list of length-value pairs, the list is terminated with a zero length.

The krb5_make_principal() is a wrapper around krb5_build_principal(). If the realm is NULL, the default realm will be used.

SEE ALSO
krb5_425_conv_principal(3), krb5_free_principal(3), krb5_parse_name(3), krb5_sname_to_principal(3), krb5_unparse_name(3)

BUGS
You can not have a NUL in a component. Until someone can give a good example of where it would be a good idea to have NUL's in a component, this will not be fixed.