summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYASUOKA Masahiko <yasuoka@cvs.openbsd.org>2024-07-14 15:31:50 +0000
committerYASUOKA Masahiko <yasuoka@cvs.openbsd.org>2024-07-14 15:31:50 +0000
commit9714fac7d3dec9df4713d409c321995e7742f42d (patch)
tree7ee60b0f9a37c074e33ea0922c4326c2b614d56d
parent46a491c8e3e4cc9acbea6d053b6a1fc6496dea18 (diff)
Move radius_attr_{,un}hide() to radius_subr.c.
-rw-r--r--usr.sbin/radiusd/radius_subr.c75
-rw-r--r--usr.sbin/radiusd/radius_subr.h30
-rw-r--r--usr.sbin/radiusd/radiusd.c55
-rw-r--r--usr.sbin/radiusd/radiusd/Makefile5
-rw-r--r--usr.sbin/radiusd/radiusd_local.h6
5 files changed, 111 insertions, 60 deletions
diff --git a/usr.sbin/radiusd/radius_subr.c b/usr.sbin/radiusd/radius_subr.c
new file mode 100644
index 00000000000..eae99e396f1
--- /dev/null
+++ b/usr.sbin/radiusd/radius_subr.c
@@ -0,0 +1,75 @@
+/* $OpenBSD: radius_subr.c,v 1.1 2024/07/14 15:31:49 yasuoka Exp $ */
+
+/*
+ * Copyright (c) 2013, 2023 Internet Initiative Japan Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+
+#include <md5.h>
+#include <string.h>
+
+#include "radius_subr.h"
+
+void
+radius_attr_hide(const char *secret, const char *authenticator,
+ const u_char *salt, u_char *plain, int plainlen)
+{
+ int i, j;
+ u_char b[16];
+ MD5_CTX md5ctx;
+
+ i = 0;
+ do {
+ MD5Init(&md5ctx);
+ MD5Update(&md5ctx, secret, strlen(secret));
+ if (i == 0) {
+ MD5Update(&md5ctx, authenticator, 16);
+ if (salt != NULL)
+ MD5Update(&md5ctx, salt, 2);
+ } else
+ MD5Update(&md5ctx, plain + i - 16, 16);
+ MD5Final(b, &md5ctx);
+
+ for (j = 0; j < 16 && i < plainlen; i++, j++)
+ plain[i] ^= b[j];
+ } while (i < plainlen);
+}
+
+void
+radius_attr_unhide(const char *secret, const char *authenticator,
+ const u_char *salt, u_char *crypt0, int crypt0len)
+{
+ int i, j;
+ u_char b[16];
+ MD5_CTX md5ctx;
+
+ i = 16 * ((crypt0len - 1) / 16);
+ while (i >= 0) {
+ MD5Init(&md5ctx);
+ MD5Update(&md5ctx, secret, strlen(secret));
+ if (i == 0) {
+ MD5Update(&md5ctx, authenticator, 16);
+ if (salt != NULL)
+ MD5Update(&md5ctx, salt, 2);
+ } else
+ MD5Update(&md5ctx, crypt0 + i - 16, 16);
+ MD5Final(b, &md5ctx);
+
+ for (j = 0; j < 16 && i + j < crypt0len; j++)
+ crypt0[i + j] ^= b[j];
+ i -= 16;
+ }
+}
diff --git a/usr.sbin/radiusd/radius_subr.h b/usr.sbin/radiusd/radius_subr.h
new file mode 100644
index 00000000000..b3260d14174
--- /dev/null
+++ b/usr.sbin/radiusd/radius_subr.h
@@ -0,0 +1,30 @@
+/* $OpenBSD: radius_subr.h,v 1.1 2024/07/14 15:31:49 yasuoka Exp $ */
+
+/*
+ * Copyright (c) 2013, 2023 Internet Initiative Japan Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#ifndef RADIUS_UTIL_H
+#define RADIUS_UTIL_H 1
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+void radius_attr_hide(const char *, const char *, const u_char *, u_char *,
+ int);
+void radius_attr_unhide(const char *, const char *, const u_char *,
+ u_char *, int);
+
+__END_DECLS
+#endif
diff --git a/usr.sbin/radiusd/radiusd.c b/usr.sbin/radiusd/radiusd.c
index c3e8382d559..31afc0e2795 100644
--- a/usr.sbin/radiusd/radiusd.c
+++ b/usr.sbin/radiusd/radiusd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radiusd.c,v 1.49 2024/07/14 15:27:57 yasuoka Exp $ */
+/* $OpenBSD: radiusd.c,v 1.50 2024/07/14 15:31:49 yasuoka Exp $ */
/*
* Copyright (c) 2013, 2023 Internet Initiative Japan Inc.
@@ -31,7 +31,6 @@
#include <fcntl.h>
#include <fnmatch.h>
#include <imsg.h>
-#include <md5.h>
#include <netdb.h>
#include <paths.h>
#include <pwd.h>
@@ -47,6 +46,7 @@
#include "radiusd.h"
#include "radiusd_local.h"
+#include "radius_subr.h"
#include "log.h"
#include "util.h"
#include "imsg_subr.h"
@@ -1126,57 +1126,6 @@ radiusd_access_response_fixup(struct radius_query *q, struct radius_query *q0,
return (0);
}
-void
-radius_attr_hide(const char *secret, const char *authenticator,
- const u_char *salt, u_char *plain, int plainlen)
-{
- int i, j;
- u_char b[16];
- MD5_CTX md5ctx;
-
- i = 0;
- do {
- MD5Init(&md5ctx);
- MD5Update(&md5ctx, secret, strlen(secret));
- if (i == 0) {
- MD5Update(&md5ctx, authenticator, 16);
- if (salt != NULL)
- MD5Update(&md5ctx, salt, 2);
- } else
- MD5Update(&md5ctx, plain + i - 16, 16);
- MD5Final(b, &md5ctx);
-
- for (j = 0; j < 16 && i < plainlen; i++, j++)
- plain[i] ^= b[j];
- } while (i < plainlen);
-}
-
-void
-radius_attr_unhide(const char *secret, const char *authenticator,
- const u_char *salt, u_char *crypt0, int crypt0len)
-{
- int i, j;
- u_char b[16];
- MD5_CTX md5ctx;
-
- i = 16 * ((crypt0len - 1) / 16);
- while (i >= 0) {
- MD5Init(&md5ctx);
- MD5Update(&md5ctx, secret, strlen(secret));
- if (i == 0) {
- MD5Update(&md5ctx, authenticator, 16);
- if (salt != NULL)
- MD5Update(&md5ctx, salt, 2);
- } else
- MD5Update(&md5ctx, crypt0 + i - 16, 16);
- MD5Final(b, &md5ctx);
-
- for (j = 0; j < 16 && i + j < crypt0len; j++)
- crypt0[i + j] ^= b[j];
- i -= 16;
- }
-}
-
static struct radius_query *
radiusd_find_query(struct radiusd *radiusd, u_int q_id)
{
diff --git a/usr.sbin/radiusd/radiusd/Makefile b/usr.sbin/radiusd/radiusd/Makefile
index 1598e9ed314..e2cf0be2eb7 100644
--- a/usr.sbin/radiusd/radiusd/Makefile
+++ b/usr.sbin/radiusd/radiusd/Makefile
@@ -1,8 +1,9 @@
-# $OpenBSD: Makefile,v 1.2 2024/07/09 17:26:14 yasuoka Exp $
+# $OpenBSD: Makefile,v 1.3 2024/07/14 15:31:49 yasuoka Exp $
PROG= radiusd
BINDIR= /usr/sbin
MAN= radiusd.8 radiusd.conf.5
-SRCS= radiusd.c parse.y log.c util.c imsg_subr.c control.c
+SRCS= radiusd.c radius_subr.c parse.y log.c util.c imsg_subr.c
+SRCS+= control.c
LDADD+= -lradius -lcrypto -levent -lutil
DPADD= ${LIBRADIUS} ${LIBCRYPTO} ${LIBEVENT} ${LIBUTIL}
diff --git a/usr.sbin/radiusd/radiusd_local.h b/usr.sbin/radiusd/radiusd_local.h
index 32feca0ca40..b4ce9b15a9f 100644
--- a/usr.sbin/radiusd/radiusd_local.h
+++ b/usr.sbin/radiusd/radiusd_local.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: radiusd_local.h,v 1.14 2024/07/14 15:27:57 yasuoka Exp $ */
+/* $OpenBSD: radiusd_local.h,v 1.15 2024/07/14 15:31:49 yasuoka Exp $ */
/*
* Copyright (c) 2013 Internet Initiative Japan Inc.
@@ -205,10 +205,6 @@ void radiusd_access_request_next(struct radius_query *, RADIUS_PACKET *);
void radiusd_access_request_aborted(struct radius_query *);
int radiusd_imsg_compose_module(struct radiusd *, const char *,
uint32_t, uint32_t, pid_t, int, void *, size_t);
-void radius_attr_hide(const char *, const char *, const u_char *,
- u_char *, int);
-void radius_attr_unhide(const char *, const char *, const u_char *,
- u_char *, int);
int radiusd_module_set(struct radiusd_module *, const char *, int,
char * const *);