X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcutil.h;h=156d86661a528919ed64ce5f8f7b1def16c65a94;hb=1c1e27cc82d2cc4947b96db7c5512100768a4120;hp=03889e684926b2c4972f3466f9d4a163cd9f23e5;hpb=fc193ecef2b64d39906f07f7b226da14ef2883c6;p=silc.git diff --git a/lib/silcutil/silcutil.h b/lib/silcutil/silcutil.h index 03889e68..156d8666 100644 --- a/lib/silcutil/silcutil.h +++ b/lib/silcutil/silcutil.h @@ -1,6 +1,6 @@ /* - silcutil.h + silcutil.h Author: Pekka Riikonen @@ -17,58 +17,473 @@ */ +/****h* silcutil/SILC Utilities + * + * DESCRIPTION + * + * XXX + * + ***/ + #ifndef SILCUTIL_H #define SILCUTIL_H -/* Prototypes */ +/****f* silcutil/SilcUtilAPI/silc_gets + * + * SYNOPSIS + * + * int silc_gets(char *dest, int destlen, const char *src, int srclen, + * int begin); + * + * DESCRIPTION + * + * Gets line from a buffer. Stops reading when a newline or EOF occurs. + * This doesn't remove the newline sign from the destination buffer. The + * argument begin is returned and should be passed again for the function. + * + ***/ int silc_gets(char *dest, int destlen, const char *src, int srclen, int begin); + +/****f* silcutil/SilcUtilAPI/silc_check_line + * + * SYNOPSIS + * + * int silc_check_line(char *buf); + * + * DESCRIPTION + * + * Checks line for illegal characters. Return -1 when illegal character + * were found. This is used to check for bad lines when reading data from + * for example a configuration file. + * + ***/ int silc_check_line(char *buf); + +/****f* silcutil/SilcUtilAPI/silc_get_time + * + * SYNOPSIS + * + * char *silc_get_time(); + * + * DESCRIPTION + * + * Returns current time as string. + * + ***/ char *silc_get_time(); + +/****f* silcutil/SilcUtilAPI/silc_to_upper + * + * SYNOPSIS + * + * char *silc_to_upper(char *string); + * + * DESCRIPTION + * + * Converts string to capital characters. + * + ***/ char *silc_to_upper(char *string); + +/****f* silcutil/SilcUtilAPI/silc_encode_pem + * + * SYNOPSIS + * + * char *silc_encode_pem(unsigned char *data, SilcUInt32 len); + * + * DESCRIPTION + * + * Encodes data into PEM encoding. Returns NULL terminated PEM encoded + * data string. Note: This is originally public domain code and is + * still PD. + * + ***/ char *silc_encode_pem(unsigned char *data, SilcUInt32 len); + +/****f* silcutil/SilcUtilAPI/silc_encode_pem_file + * + * SYNOPSIS + * + * char *silc_encode_pem_file(unsigned char *data, SilcUInt32 data_len); + * + * DESCRIPTION + * + * Same as silc_encode_pem() but puts newline ('\n') every 72 characters. + * + ***/ char *silc_encode_pem_file(unsigned char *data, SilcUInt32 data_len); + +/****f* silcutil/SilcUtilAPI/silc_decode_pem + * + * SYNOPSIS + * + * unsigned char *silc_decode_pem(unsigned char *pem, SilcUInt32 pem_len, + * SilcUInt32 *ret_len); + * + * DESCRIPTION + * + * Decodes PEM into data. Returns the decoded data. Note: This is + * originally public domain code and is still PD. + * + ***/ unsigned char *silc_decode_pem(unsigned char *pem, SilcUInt32 pem_len, SilcUInt32 *ret_len); + +/****f* silcutil/SilcUtilAPI/silc_parse_userfqdn + * + * SYNOPSIS + * + * bool silc_parse_userfqdn(const char *string, char **left, char **right); + * + * DESCRIPTION + * + * Parse userfqdn string which is in user@fqdn format. + * + ***/ bool silc_parse_userfqdn(const char *string, char **left, char **right); -void silc_parse_command_line(unsigned char *buffer, + +/****f* silcutil/SilcUtilAPI/silc_parse_command_line + * + * SYNOPSIS + * + * void silc_parse_command_line(unsigned char *buffer, + * unsigned char ***parsed, + * SilcUInt32 **parsed_lens, + * SilcUInt32 **parsed_types, + * SilcUInt32 *parsed_num, + * SilcUInt32 max_args); + * + * DESCRIPTION + * + * Parses command line. At most `max_args' is taken. Rest of the line + * will be allocated as the last argument if there are more than `max_args' + * arguments in the line. Note that the command name is counted as one + * argument and is saved. + * + ***/ +void silc_parse_command_line(unsigned char *buffer, unsigned char ***parsed, SilcUInt32 **parsed_lens, SilcUInt32 **parsed_types, SilcUInt32 *parsed_num, SilcUInt32 max_args); + +/****f* silcutil/SilcUtilAPI/silc_format + * + * SYNOPSIS + * + * char *silc_format(char *fmt, ...); + * + * DESCRIPTION + * + * Formats arguments to a string and returns it after allocating memory + * for it. It must be remembered to free it later. + * + ***/ char *silc_format(char *fmt, ...); + +/****f* silcutil/SilcUtilAPI/silc_id_render + * + * SYNOPSIS + * + * char *silc_id_render(void *id, SilcUInt16 type); + * + * DESCRIPTION + * + * Renders ID to suitable to print for example to log file. + * + ***/ char *silc_id_render(void *id, SilcUInt16 type); + +/****f* silcutil/SilcUtilAPI/silc_string_compare + * + * SYNOPSIS + * + * int silc_string_compare(char *string1, char *string2); + * + * DESCRIPTION + * + * Compares two strings. Strings may include wildcards '*' and '?'. + * Returns TRUE if strings match. + * + ***/ int silc_string_compare(char *string1, char *string2); -char *silc_string_regexify(const char *string); -int silc_string_regex_match(const char *regex, const char *string); -int silc_string_match(const char *string1, const char *string2); -char *silc_get_username(); -char *silc_get_real_name(); + +/****f* silcutil/SilcUtilAPI/silc_hash_string + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_string(void *key, void *user_context); + * + * DESCRIPTION + * + * Basic has function to hash strings. May be used with the SilcHashTable. + * Note that this lowers the characters of the string (with tolower()) so + * this is used usually with nicknames, channel and server names to provide + * case insensitive keys. + * + ***/ SilcUInt32 silc_hash_string(void *key, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_uint + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_uint(void *key, void *user_context); + * + * DESCRIPTION + * + * Basic hash function to hash integers. May be used with the SilcHashTable. + * + ***/ SilcUInt32 silc_hash_uint(void *key, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_ptr + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_ptr(void *key, void *user_context); + * + * DESCRIPTION + * + * Basic hash funtion to hash pointers. May be used with the SilcHashTable. + * + ***/ SilcUInt32 silc_hash_ptr(void *key, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_id + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_id(void *key, void *user_context); + * + * DESCRIPTION + * + * Hash a ID. The `user_context' is the ID type. + * + ***/ SilcUInt32 silc_hash_id(void *key, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_data + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_data(void *key, void *user_context); + * + * DESCRIPTION + * + * Hash binary data. The `user_context' is the data length. + * + ***/ SilcUInt32 silc_hash_data(void *key, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_public_key + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_public_key(void *key, void *user_context); + * + * DESCRIPTION + * + * Hashed SILC Public key. + * + ***/ SilcUInt32 silc_hash_public_key(void *key, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_string_compare + * + * SYNOPSIS + * + * bool silc_hash_string_compare(void *key1, void *key2, + * void *user_context); + * + * DESCRIPTION + * + * Compares two strings. It may be used as SilcHashTable comparison + * function. + * + ***/ bool silc_hash_string_compare(void *key1, void *key2, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_id_compare + * + * SYNOPSIS + * + * bool silc_hash_id_compare(void *key1, void *key2, void *user_context); + * + * DESCRIPTION + * + * Compares two ID's. May be used as SilcHashTable comparison function. + * The Client ID's compares only the hash of the Client ID not any other + * part of the Client ID. Other ID's are fully compared. + * + ***/ bool silc_hash_id_compare(void *key1, void *key2, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_client_id_compare + * + * SYNOPSIS + * + * bool silc_hash_client_id_compare(void *key1, void *key2, void *user_context); + * + * DESCRIPTION + * + * Compare two Client ID's entirely and not just the hash from the ID. + * + ***/ bool silc_hash_client_id_compare(void *key1, void *key2, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_data_compare + * + * SYNOPSIS + * + * bool silc_hash_data_compare(void *key1, void *key2, void *user_context); + * + * DESCRIPTION + * + * Compares binary data. May be used as SilcHashTable comparison function. + * + ***/ bool silc_hash_data_compare(void *key1, void *key2, void *user_context); + +/****f* silcutil/SilcUtilAPI/silc_hash_public_key_compare + * + * SYNOPSIS + * + * bool silc_hash_public_key_compare(void *key1, void *key2, void *user_context); + * + * DESCRIPTION + * + * Compares two SILC Public keys. It may be used as SilcHashTable + * comparison function. + * + ***/ bool silc_hash_public_key_compare(void *key1, void *key2, void *user_context); -char *silc_client_chmode(SilcUInt32 mode, const char *cipher, + +/****f* silcutil/SilcUtilAPI/silc_client_chmode + * + * SYNOPSIS + * + * char *silc_client_chmode(SilcUInt32 mode, const char *cipher, + * const char *hmac); + * + * DESCRIPTION + * + * Parses mode mask and returns the mode as string. + * + ***/ +char *silc_client_chmode(SilcUInt32 mode, const char *cipher, const char *hmac); + +/****f* silcutil/SilcUtilAPI/silc_client_chumode + * + * SYNOPSIS + * + * char *silc_client_chumode(SilcUInt32 mode); + * + * DESCRIPTION + * + * Parses channel user mode mask and returns te mode as string. + * + ***/ char *silc_client_chumode(SilcUInt32 mode); + +/****f* silcutil/SilcUtilAPI/silc_client_chumode_char + * + * SYNOPSIS + * + * char *silc_client_chumode_char(SilcUInt32 mode); + * + * DESCRIPTION + * + * Parses channel user mode and returns it as special mode character. + * + ***/ char *silc_client_chumode_char(SilcUInt32 mode); -int silc_gettimeofday(struct timeval *p); + +/****f* silcutil/SilcUtilAPI/silc_fingerprint + * + * SYNOPSIS + * + * char *silc_fingerprint(const unsigned char *data, SilcUInt32 data_len); + * + * DESCRIPTION + * + * Creates fingerprint from data, usually used with SHA1 digests. + * + ***/ char *silc_fingerprint(const unsigned char *data, SilcUInt32 data_len); + +/****f* silcutil/SilcUtilAPI/silc_string_is_ascii + * + * SYNOPSIS + * + * bool silc_string_is_ascii(const unsigned char *data, + * SilcUInt32 data_len); + * + * DESCRIPTION + * + * Return TRUE if the `data' is ASCII string. + * + ***/ bool silc_string_is_ascii(const unsigned char *data, SilcUInt32 data_len); + +/****f* silcutil/SilcUtilAPI/silc_parse_version_string + * + * SYNOPSIS + * + * bool silc_parse_version_string(const char *version, + * SilcUInt32 *protocol_version, + * char **protocol_version_string, + * SilcUInt32 *software_version, + * char **software_version_string, + * char **vendor_version); + * + * DESCRIPTION + * + * Parses SILC protocol style version string. + * + ***/ bool silc_parse_version_string(const char *version, SilcUInt32 *protocol_version, char **protocol_version_string, - SilcUInt32 *software_version, + SilcUInt32 *software_version, char **software_version_string, char **vendor_version); + +/****f* silcutil/SilcUtilAPI/silc_version_to_num + * + * SYNOPSIS + * + * SilcUInt32 silc_version_to_num(const char *version); + * + * DESCRIPTION + * + * Converts version string x.x into number representation. + * + ***/ SilcUInt32 silc_version_to_num(const char *version); + +/****f* silcutil/SilcUtilAPI/silc_get_input + * + * SYNOPSIS + * + * char *silc_get_input(const char *prompt, bool echo_off); + * + * DESCRIPTION + * + * Displays input prompt on command line and takes input data from user. + * + ***/ char *silc_get_input(const char *prompt, bool echo_off); -#endif +/* XXX - System dependant prototypes */ + +int silc_gettimeofday(struct timeval *p); +char *silc_string_regexify(const char *string); +int silc_string_regex_match(const char *regex, const char *string); +int silc_string_match(const char *string1, const char *string2); +char *silc_get_username(); +char *silc_get_real_name(); + +#endif /* !SILCUTIL_H */