ne_strhash

3

ne_strhash

ne_vstrhash

string hash interface

              #include <ne_string.h>

    	    char *ne_strhash
    	    unsigned int flags
    	    ...

    	    char *ne_vstrhash
    	    unsigned int flags
    	    va_list ap

## Description

The `ne_strhash` and `ne_vstrhash` functions can be used to create hashes. The varargs argument list must be `const char *` strings followed by a &null; terminator. The `flags` argument must select exactly one hash algorithm from the list below, which can be optionally bitwise-ORed with one of the formatting option. The hash is calculated for the concatenation of the argument list, without separators.

### Hash algorithms

The following hash algorithms are available:

`NE_HASH_MD5`

- MD5

`NE_HASH_SHA1`

- SHA-1

`NE_HASH_SHA256`

- SHA-256 (SHA-2)

`NE_HASH_SHA512`

- SHA-512 (SHA-2)

`NE_HASH_SHA512_256`

- SHA-512/256 (SHA-2)

### Formatting options

By default, the hash is returned as a hexadecimal lower-case character string. The following formatting options are available:

`NE_HASH_COLON`

- colon-separated hex pairs, e.g. `"aa:11:22..."`

`NE_HASH_SPACE`

- space-separated hex pairs, e.g. `"aa 11 22..."`

## Return value

The return value is the ASCII hexadecimal representation of the hash as a malloc-allocated, NUL-terminated string, or &null; if the hash cannot be created. The string length is determined by the hash algorithm (and formatting options used). Support for hash algorithms is specific to the SSL toolkit with which &neon; is compiled. Some systems will further restrict hash availability at runtime, e.g. due to FIPS mode.

## History

`ne_strhash` and `ne_vstrhash` are available in &neon; 0.32.0 and later.

The `NE_HASH_SHA1` flag is available in &neon; 0.37.0 and later.