summaryrefslogtreecommitdiff
path: root/lib/libcrypt/crypt.c
diff options
context:
space:
mode:
authorad <ad@NetBSD.org>2000-07-06 11:13:49 +0000
committerad <ad@NetBSD.org>2000-07-06 11:13:49 +0000
commitac9fc8f4e69ae151069e354b14562c2a88c64343 (patch)
treea2b4199a64c0fdc8a0727c7096c478ee736adf4d /lib/libcrypt/crypt.c
parent49de2aa1ceac28cb2e48685980740e6f3d5ba3ec (diff)
Handle non-DES encrypted passwords; currently only MD5.
Diffstat (limited to 'lib/libcrypt/crypt.c')
-rw-r--r--lib/libcrypt/crypt.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/libcrypt/crypt.c b/lib/libcrypt/crypt.c
index d50169e9e38..588631352e6 100644
--- a/lib/libcrypt/crypt.c
+++ b/lib/libcrypt/crypt.c
@@ -1,4 +1,4 @@
-/* $NetBSD: crypt.c,v 1.15 2000/06/16 16:27:32 thorpej Exp $ */
+/* $NetBSD: crypt.c,v 1.16 2000/07/06 11:13:49 ad Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -41,7 +41,7 @@
#if 0
static char sccsid[] = "@(#)crypt.c 8.1.1.1 (Berkeley) 8/18/93";
#else
-__RCSID("$NetBSD: crypt.c,v 1.15 2000/06/16 16:27:32 thorpej Exp $");
+__RCSID("$NetBSD: crypt.c,v 1.16 2000/07/06 11:13:49 ad Exp $");
#endif
#endif /* not lint */
@@ -480,6 +480,7 @@ crypt(key, setting)
const char *key;
const char *setting;
{
+ extern char *__md5crypt(const char *, const char *); /* XXX */
char *encp;
int32_t i;
int t;
@@ -487,6 +488,19 @@ crypt(key, setting)
int num_iter, salt_size;
C_block keyblock, rsltblock;
+ /* Non-DES encryption schemes hook in here. */
+ if (setting[0] == _PASSWORD_NONDES) {
+ switch (setting[1]) {
+#ifdef notyet
+ case '2':
+ return (__bcrypt(key, setting));
+#endif
+ case '1':
+ default:
+ return (__md5crypt(key, setting));
+ }
+ }
+
for (i = 0; i < 8; i++) {
if ((t = 2*(unsigned char)(*key)) != 0)
key++;