# sasl_canon_user_t - Application-supplied user canonicalization function

## Synopsis

    #include <sasl/sasl.h>

    int sasl_canon_user_t(sasl_conn_t *conn, void *context, const char *user, unsigned ulen,
                          unsigned flags, const char *user_realm, char *out_user,
                          unsigned out_umax, unsigned *out_ulen)

## Description

int sasl_canon_user_t(sasl_conn_t *conn,
void *context,
const char *user,
unsigned ulen,
unsigned flags,
const char *user_realm,
char *out_user,
unsigned out_umax,
unsigned *out_ulen)

  sasl_canon_user_t is the callback for an application-supplied user canonicalization function. This function is subject to the requirements that all user canonicalization functions are: It must copy the result into the output buffers, but the output buffers and the input buffers may be the same.

  Parameters:

    - context – context from the callback record

    - user – un-canonicalized username

    - ulen – length of user

    - flags – Either SASL_CU_AUTHID (indicating the authentication ID is being canonicalized) or SASL_CU_AUTHZID (indicating the authorization ID is to be canonicalized) or a bitwise OR of the the two.

    - user_realm – Realm of authentication.

    - out_user – The output buffer for the canonicalized username

    - out_umax – Maximum length for out_user

    - out_ulen – Actual length of out_user

  Returns:

    `SASL_OK` indicates success. See sasl_errors(3) for a full list of SASL error codes.

## Conforming to

RFC 4422

## See Also

sasl(3), sasl_errors(3), sasl_callbacks(3)