Move radius_attr_{,un}hide() to radius_subr.c.
authoryasuoka <yasuoka@openbsd.org>
Sun, 14 Jul 2024 15:31:49 +0000 (15:31 +0000)
committeryasuoka <yasuoka@openbsd.org>
Sun, 14 Jul 2024 15:31:49 +0000 (15:31 +0000)
usr.sbin/radiusd/radius_subr.c [new file with mode: 0644]
usr.sbin/radiusd/radius_subr.h [new file with mode: 0644]
usr.sbin/radiusd/radiusd.c
usr.sbin/radiusd/radiusd/Makefile
usr.sbin/radiusd/radiusd_local.h

diff --git a/usr.sbin/radiusd/radius_subr.c b/usr.sbin/radiusd/radius_subr.c
new file mode 100644 (file)
index 0000000..eae99e3
--- /dev/null
@@ -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 (file)
index 0000000..b3260d1
--- /dev/null
@@ -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
index c3e8382..31afc0e 100644 (file)
@@ -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)
 {
index 1598e9e..e2cf0be 100644 (file)
@@ -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}
 
index 32feca0..b4ce9b1 100644 (file)
@@ -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 *);