diff Wnn/etc/pwd.c @ 0:bbc77ca4def5

initial import
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Thu, 13 Dec 2007 04:30:14 +0900
parents
children ed4bb01eb317
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Wnn/etc/pwd.c	Thu Dec 13 04:30:14 2007 +0900
@@ -0,0 +1,102 @@
+/*
+ *  $Id: pwd.c,v 1.6 2004/07/12 17:53:02 hiroo Exp $
+ */
+
+/*
+ * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
+ * This file is part of FreeWnn.
+ * 
+ * Copyright Kyoto University Research Institute for Mathematical Sciences
+ *                 1987, 1988, 1989, 1990, 1991, 1992
+ * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
+ * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992
+ * Copyright FreeWnn Project 1999, 2000, 2002
+ *
+ * Maintainer:  FreeWnn Project   <freewnn@tomo.gr.jp>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+  eval(crypt(PWD, "HA")) routine.
+*/
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifndef JS
+#include <stdio.h>
+#if STDC_HEADERS
+#  include <string.h>
+#elif HAVE_STRINGS_H
+#  include <strings.h>
+#endif /* STDC_HEADERS */
+#if HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+#include "commonhd.h"
+#include "jslib.h"
+#include "wnn_os.h"
+#endif /* !JS */
+
+#ifdef JS
+# define JS_STATIC static
+#else  /* !JS */
+# define JS_STATIC
+#endif /* !JS */
+
+/* etc/pwd.c */
+JS_STATIC void new_pwd (char* src, char* encd);
+JS_STATIC int check_pwd (char* src, char* encd);
+
+JS_STATIC void
+new_pwd (char* src, char* encd)
+{
+  int i, x, c;
+  char xx[3];
+  char *cr;
+
+  if (encd == NULL)
+    encd = src;
+  if (strcmp (src, "") == 0)
+    {
+      bzero (encd, WNN_PASSWD_LEN);
+      return;
+    }
+  x = time (NULL);
+  xx[0] = x & 0x3f;
+  xx[1] = (x & 0x3f00) >> 8;
+  xx[2] = '\0';                 /* for MD5 (that requires terminator) */
+  for (i = 0; i < 2; i++)
+    {
+      c = xx[i] + '.';
+      if (c > '9')
+        c += 7;
+      if (c > 'Z')
+        c += 6;
+      xx[i] = c;
+    }
+  cr = crypt (src, xx);
+  bzero (encd, WNN_PASSWD_LEN);
+  strncpy (encd, cr, WNN_PASSWD_LEN);
+}
+
+JS_STATIC int
+check_pwd (char* src, char* encd)
+{
+  if (strcmp (encd, "") == 0)
+    return (1);                 /* No passwd */
+  return (!strncmp (encd, crypt (src, encd), WNN_PASSWD_LEN));
+}