1#include <crypt.h>
2#include <unistd.h>
3
4char* __crypt_r(const char*, const char*, struct crypt_data*);
5
6char* crypt(const char* key, const char* salt) {
7    /* This buffer is sufficiently large for all
8     * currently-supported hash types. It needs to be updated if
9     * longer hashes are added. The cast to struct crypt_data * is
10     * purely to meet the public API requirements of the crypt_r
11     * function; the implementation of crypt_r uses the object
12     * purely as a char buffer. */
13    static char buf[128];
14    return __crypt_r(key, salt, (struct crypt_data*)buf);
15}
16