diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index 35e3b8b..29d8aae 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -48,6 +48,7 @@
 #include <malloc.h>             /* memalign() */
 #include <sys/ioctl.h>
 #include <sys/sysctl.h>
+#include <crypt.h>
 
 
 #include <ngx_auto_config.h>
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index d629e04..088fbd0 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -46,6 +46,7 @@
 #include <sys/systeminfo.h>
 #include <limits.h>             /* IOV_MAX */
 #include <inttypes.h>
+#include <crypt.h>
 
 #include <ngx_auto_config.h>
 
diff --git a/src/os/unix/ngx_user.c b/src/os/unix/ngx_user.c
new file mode 100644
index 0000000..fe2f794
--- /dev/null
+++ b/src/os/unix/ngx_user.c
@@ -0,0 +1,89 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ */
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+/*
+ * Solaris has thread-safe crypt()
+ * Linux has crypt_r(); "struct crypt_data" is more than 128K
+ * FreeBSD needs the mutex to protect crypt()
+ *
+ * TODO:
+ *     ngx_crypt_init() to init mutex
+ */
+
+
+#if (NGX_CRYPT)
+
+#if (NGX_LINUX)
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+    char               *value;
+    size_t              len;
+    struct crypt_data   cd;
+
+    value = crypt_r((char *) key, (char *) salt, &cd);
+
+    if (value) {
+        len = ngx_strlen(value);
+
+        *encrypted = ngx_palloc(pool, len);
+        if (*encrypted) {
+            ngx_memcpy(*encrypted, value, len + 1);
+            return NGX_OK;
+        }
+    }
+
+    return NGX_ERROR;
+}
+
+#else
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+    char       *value;
+    size_t      len;
+    ngx_int_t   rc;
+
+#if (NGX_THREADS && NGX_NONREENTRANT_CRYPT)
+
+    /* crypt() is a time consuming funtion, so we only try to lock */
+
+    if (ngx_mutex_trylock(ngx_crypt_mutex) != NGX_OK) {
+        return NGX_AGAIN;
+    }
+
+#endif
+
+    rc = NGX_ERROR;
+
+    value = crypt((char *) key, (char *) salt);
+
+    if (value) {
+        len = ngx_strlen(value);
+
+        *encrypted = ngx_palloc(pool, len);
+        if (*encrypted) {
+            ngx_memcpy(*encrypted, value, len + 1);
+            rc = NGX_OK;
+        }
+    }
+
+#if (NGX_THREADS && NGX_NONREENTRANT_CRYPT)
+    ngx_mutex_unlock(ngx_crypt_mutex);
+#endif
+
+    return rc;
+}
+
+#endif
+
+#endif /* NGX_CRYPT */
diff --git a/src/os/unix/ngx_user.h b/src/os/unix/ngx_user.h
index f939b84..a24a66b 100644
--- a/src/os/unix/ngx_user.h
+++ b/src/os/unix/ngx_user.h
@@ -16,4 +16,9 @@
 typedef gid_t  ngx_gid_t;
 
 
+ngx_int_t ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt,
+    u_char **encrypted);
+
+
+
 #endif /* _NGX_USER_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_gui.c b/src/os/win32/ngx_gui.c
index 5673820..36d3c49 100644
--- a/src/os/win32/ngx_gui.c
+++ b/src/os/win32/ngx_gui.c
@@ -11,8 +11,8 @@
 #define NGX_MAX_TEXT   2048
 
 
-void ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
-                     const char *fmt, ...)
+void ngx_cdecl ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
+    const char *fmt, ...)
 {
     va_list  args;
     u_char   text[NGX_MAX_TEXT], *p, *last;
@@ -59,8 +59,8 @@
 }
 
 
-ngx_int_t ngx_system_tray_icon(HWND window, u_long action,
-                               HICON icon, u_char *tip)
+ngx_int_t
+ngx_system_tray_icon(HWND window, u_long action, HICON icon, u_char *tip)
 {
     NOTIFYICONDATA  ni;
 
diff --git a/src/os/win32/ngx_gui.h b/src/os/win32/ngx_gui.h
index e44e6aa..0bff21c 100644
--- a/src/os/win32/ngx_gui.h
+++ b/src/os/win32/ngx_gui.h
@@ -13,11 +13,11 @@
 #include <ngx_gui_resources.h>
 
 
-void ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
-                     const char *fmt, ...);
+void ngx_cdecl ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
+    const char *fmt, ...);
 
 ngx_int_t ngx_system_tray_icon(HWND window, u_long action,
-                               HICON icon, u_char *tip);
+    HICON icon, u_char *tip);
 
 
 #endif /* _NGX_GUI_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_user.c b/src/os/win32/ngx_user.c
new file mode 100644
index 0000000..cc07603
--- /dev/null
+++ b/src/os/win32/ngx_user.c
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) Igor Sysoev
+ */
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+#if (NGX_CRYPT)
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+    /* STUB: a plain text password */
+
+    *encrypted = key;
+
+    return NGX_OK;
+}
+
+#endif /* NGX_CRYPT */
diff --git a/src/os/win32/ngx_user.h b/src/os/win32/ngx_user.h
index 452daa1..6e8c58b 100644
--- a/src/os/win32/ngx_user.h
+++ b/src/os/win32/ngx_user.h
@@ -17,4 +17,8 @@
 #define ngx_gid_t  ngx_int_t
 
 
+ngx_int_t ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt,
+    u_char **encrypted);
+
+
 #endif /* _NGX_USER_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h
index 02d4db5..f49a16c 100644
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -93,15 +93,23 @@
 
 
 #define ngx_inline        __inline
+#define ngx_cdecl         __cdecl
 
 
 #ifdef _MSC_VER
 typedef unsigned __int32  uint32_t;
 typedef __int32           int32_t;
+#define ngx_libc_cdecl    __cdecl
 
-#else /* __WATCOMC__ and __BORLANDC__ */
+#elif defined __WATCOMC__
 typedef unsigned int      uint32_t;
 typedef int               int32_t;
+#define ngx_libc_cdecl
+
+#else /* __BORLANDC__ */
+typedef unsigned int      uint32_t;
+typedef int               int32_t;
+#define ngx_libc_cdecl    __cdecl
 #endif
 
 typedef __int64           int64_t;
