#ifndef PACKAGE_CORE_CUSTOM_CRYPT_H
#define PACKAGE_CORE_CUSTOM_CRYPT_H

/* Number of bytes in salt (raw, fully used, not printable-encoded bytes).
 * This is configurable, but don't set it too high (up to say 10). But 4
 * is plenty really, 2^32 salts possible (the DES-style crypt used only 4096).
 */
#define MD5_SALTLEN 4

/* Magic string, used in hashing. Configurable. */
#define MD5_MAGIC "xyzz"

/* Maximum length (in bytes) of digested data.
 * This is /not/ configurable! Don't change it.
 */
#define MD5_MAXLEN 55

/* This salt value is used in generating salts. It must
 * be a valid salt as returned by md5crypt(), or the
 * routine will go into an infinite loop when generating
 * a salt from an unrecognized string. Any value returned
 * from md5crypt("anything", NULL, NULL) is valid here.
 */

#define MD5_VALID_SALT "anhlklck!ggddl`l`lg`bjblodlfcljdcnhffib`c"

typedef unsigned char BytE;

char *custom_crypt(const char *key, const char *salt, unsigned char *rawout);

#endif
