Skip to content

Commit

Permalink
HBSD: net/netatalk: Fix build problems with deprecated DES methods
Browse files Browse the repository at this point in the history
Obtained from:	OpenBSD ports
Signed-off-by: Bernard Spil <bernard.spil@hardenedbsd.org>
  • Loading branch information
Sp1l committed Dec 10, 2016
1 parent f94564a commit d6e2e95
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 0 deletions.
30 changes: 30 additions & 0 deletions net/netatalk/files/patch-bin_afppasswd_afppasswd.c
@@ -0,0 +1,30 @@
$OpenBSD: patch-bin_afppasswd_afppasswd_c,v 1.4 2014/04/15 16:12:21 naddy Exp $
--- bin/afppasswd/afppasswd.c.orig Tue Jul 23 11:10:55 2013
+++ bin/afppasswd/afppasswd.c Tue Apr 15 16:24:33 2014
@@ -70,7 +70,7 @@ static char buf[MAXPATHLEN + 1];
static void convert_passwd(char *buf, char *newpwd, const int keyfd)
{
u_int8_t key[HEXPASSWDLEN];
- Key_schedule schedule;
+ DES_key_schedule schedule;
unsigned int i, j;

if (!newpwd) {
@@ -89,14 +89,14 @@ static void convert_passwd(char *buf, char *newpwd, co
key[j] = (unhex(key[i]) << 4) | unhex(key[i + 1]);
if (j <= DES_KEY_SZ)
memset(key + j, 0, sizeof(key) - j);
- key_sched((C_Block *) key, schedule);
+ DES_key_sched((DES_cblock *) key, &schedule);
memset(key, 0, sizeof(key));
if (newpwd) {
- ecb_encrypt((C_Block *) newpwd, (C_Block *) newpwd, schedule,
+ DES_ecb_encrypt((DES_cblock *) newpwd, (DES_cblock *) newpwd, &schedule,
DES_ENCRYPT);
} else {
/* decrypt the password */
- ecb_encrypt((C_Block *) buf, (C_Block *) buf, schedule, DES_DECRYPT);
+ DES_ecb_encrypt((DES_cblock *) buf, (DES_cblock *) buf, &schedule, DES_DECRYPT);
}
memset(&schedule, 0, sizeof(schedule));
}
103 changes: 103 additions & 0 deletions net/netatalk/files/patch-etc_uams_uams_randnum.c
@@ -0,0 +1,103 @@
$OpenBSD: patch-etc_uams_uams_randnum_c,v 1.1 2014/04/15 16:12:21 naddy Exp $
--- etc/uams/uams_randnum.c.orig Tue Jul 23 11:10:55 2013
+++ etc/uams/uams_randnum.c Tue Apr 15 16:38:15 2014
@@ -55,8 +55,8 @@ char *strchr (), *strrchr ();

#define PASSWDLEN 8

-static C_Block seskey;
-static Key_schedule seskeysched;
+static DES_cblock seskey;
+static DES_key_schedule seskeysched;
static struct passwd *randpwd;
static u_int8_t randbuf[8];

@@ -146,7 +146,7 @@ static int afppasswd(const struct passwd *pwd,
{
u_int8_t key[DES_KEY_SZ*2];
char buf[MAXPATHLEN + 1], *p;
- Key_schedule schedule;
+ DES_key_schedule schedule;
FILE *fp;
unsigned int i, j;
int keyfd = -1, err = 0;
@@ -203,17 +203,17 @@ afppasswd_found:
key[j] = (unhex(key[i]) << 4) | unhex(key[i + 1]);
if (j <= DES_KEY_SZ)
memset(key + j, 0, sizeof(key) - j);
- key_sched((C_Block *) key, schedule);
+ DES_key_sched((DES_cblock *) key, &schedule);
memset(key, 0, sizeof(key));

if (set) {
/* NOTE: this takes advantage of the fact that passwd doesn't
* get used after this call if it's being set. */
- ecb_encrypt((C_Block *) passwd, (C_Block *) passwd, schedule,
+ DES_ecb_encrypt((DES_cblock *) passwd, (DES_cblock *) passwd, &schedule,
DES_ENCRYPT);
} else {
/* decrypt the password */
- ecb_encrypt((C_Block *) p, (C_Block *) p, schedule, DES_DECRYPT);
+ DES_ecb_encrypt((DES_cblock *) p, (DES_cblock *) p, &schedule, DES_DECRYPT);
}
memset(&schedule, 0, sizeof(schedule));
}
@@ -362,10 +362,10 @@ static int randnum_logincont(void *obj, struct passwd

/* encrypt. this saves a little space by using the fact that
* des can encrypt in-place without side-effects. */
- key_sched((C_Block *) seskey, seskeysched);
+ DES_key_sched((DES_cblock *) seskey, &seskeysched);
memset(seskey, 0, sizeof(seskey));
- ecb_encrypt((C_Block *) randbuf, (C_Block *) randbuf,
- seskeysched, DES_ENCRYPT);
+ DES_ecb_encrypt((DES_cblock *) randbuf, (DES_cblock *) randbuf,
+ &seskeysched, DES_ENCRYPT);
memset(&seskeysched, 0, sizeof(seskeysched));

/* test against what the client sent */
@@ -406,10 +406,10 @@ static int rand2num_logincont(void *obj, struct passwd
seskey[i] <<= 1;

/* encrypt randbuf */
- key_sched((C_Block *) seskey, seskeysched);
+ DES_key_sched((DES_cblock *) seskey, &seskeysched);
memset(seskey, 0, sizeof(seskey));
- ecb_encrypt( (C_Block *) randbuf, (C_Block *) randbuf,
- seskeysched, DES_ENCRYPT);
+ DES_ecb_encrypt( (DES_cblock *) randbuf, (DES_cblock *) randbuf,
+ &seskeysched, DES_ENCRYPT);

/* test against client's reply */
if (memcmp(randbuf, ibuf, sizeof(randbuf))) { /* != */
@@ -421,8 +421,8 @@ static int rand2num_logincont(void *obj, struct passwd
memset(randbuf, 0, sizeof(randbuf));

/* encrypt client's challenge and send back */
- ecb_encrypt( (C_Block *) ibuf, (C_Block *) rbuf,
- seskeysched, DES_ENCRYPT);
+ DES_ecb_encrypt( (DES_cblock *) ibuf, (DES_cblock *) rbuf,
+ &seskeysched, DES_ENCRYPT);
memset(&seskeysched, 0, sizeof(seskeysched));
*rbuflen = sizeof(randbuf);

@@ -457,15 +457,15 @@ static int randnum_changepw(void *obj, const char *use
return err;

/* use old passwd to decrypt new passwd */
- key_sched((C_Block *) seskey, seskeysched);
+ DES_key_sched((DES_cblock *) seskey, &seskeysched);
ibuf += PASSWDLEN; /* new passwd */
ibuf[PASSWDLEN] = '\0';
- ecb_encrypt( (C_Block *) ibuf, (C_Block *) ibuf, seskeysched, DES_DECRYPT);
+ DES_ecb_encrypt( (DES_cblock *) ibuf, (DES_cblock *) ibuf, &seskeysched, DES_DECRYPT);

/* now use new passwd to decrypt old passwd */
- key_sched((C_Block *) ibuf, seskeysched);
+ DES_key_sched((DES_cblock *) ibuf, &seskeysched);
ibuf -= PASSWDLEN; /* old passwd */
- ecb_encrypt((C_Block *) ibuf, (C_Block *) ibuf, seskeysched, DES_DECRYPT);
+ DES_ecb_encrypt((DES_cblock *) ibuf, (DES_cblock *) ibuf, &seskeysched, DES_DECRYPT);
if (memcmp(seskey, ibuf, sizeof(seskey)))
err = AFPERR_NOTAUTH;
else if (memcmp(seskey, ibuf + PASSWDLEN, sizeof(seskey)) == 0)

0 comments on commit d6e2e95

Please sign in to comment.