| Function silc_identifier_check
 
 SYNOPSIS
 
    unsigned char *
    silc_identifier_check(const unsigned char *identifier,
                          SilcUInt32 identifier_len,
                          SilcStringEncoding identifier_encoding,
                          SilcUInt32 max_allowed_length,
                          SilcUInt32 *out_len);
DESCRIPTION
    Checks that the 'identifier' string is valid identifier string
    and does not contain any unassigned or prohibited character.  This
    function is used to check for valid nicknames, server names,
    usernames, hostnames, service names, algorithm names, other security
    property names, and SILC Public Key name.
    If the 'max_allowed_length' is non-zero the identifier cannot be
    longer than that, and NULL is returned if it is.  If zero (0), no
    length limit exist.  For nicknames the max length must be 128 bytes.
    Other identifiers has no default limit, but application may choose
    one anyway.
    Returns the validated string, that the caller must free.  Returns
    NULL if the identifier string is not valid or contain unassigned or
    prohibited characters.  Such identifier strings must not be used
    SILC protocol.  The returned string is always in UTF-8 encoding.
    The length of the returned string is in 'out_len'.
NOTES
    In addition of validating the identifier string, this function
    may map characters to other characters or remove characters from the
    original string.  This is done as defined in the SILC protocol.  Error
    is returned only if the string contains unassigned or prohibited
    characters.  The original 'identifier' is not modified at any point.
 
 
 
 |