tests: Move token faking code to its own file
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 20 Apr 2012 17:13:30 +0000 (18:13 +0100)
committerDerrick Brashear <shadow@dementix.org>
Sun, 22 Apr 2012 13:18:19 +0000 (06:18 -0700)
Move the token faking code out of superuser-t.c into its own file in
tests/common, so it can be used by other tests.

Change-Id: I7b420250ef974b4b80a8dde692d2666657bb82ca
Reviewed-on: http://gerrit.openafs.org/7259
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

tests/auth/Makefile.in
tests/auth/superuser-t.c
tests/common/Makefile.in
tests/common/common.h
tests/common/rxkad.c [new file with mode: 0644]

index d22c3d4..82fcc34 100644 (file)
@@ -22,8 +22,9 @@ authcon-t: authcon-t.o ../common/config.o
        $(AFS_LDRULE) authcon-t.o ../common/config.o \
                $(MODULE_LIBS)
 
-superuser-t: superuser-t.o ../common/config.o test.cs.o test.ss.o test.xdr.o
-       $(AFS_LDRULE) superuser-t.o ../common/config.o \
+superuser-t: superuser-t.o ../common/config.o ../common/rxkad.o \
+            test.cs.o test.ss.o test.xdr.o
+       $(AFS_LDRULE) superuser-t.o ../common/config.o ../common/rxkad.o \
                test.cs.o test.ss.o test.xdr.o \
                $(MODULE_LIBS)
 
index 93f50ec..a8ff0f5 100644 (file)
@@ -38,9 +38,6 @@
 #include <afs/afsutil.h>
 #include <afs/com_err.h>
 
-#define HC_DEPRECATED
-#include <hcrypto/des.h>
-
 #include <rx/rxkad.h>
 #include <rx/rx_identity.h>
 
@@ -74,43 +71,6 @@ testNewIterator(struct afsconf_dir *dir, int num, struct rx_identity *id) {
     rx_identity_free(&fileId);
 }
 
-struct rx_securityClass *
-fakeRXKADClass(struct afsconf_dir *dir,
-              char *name, char *instance, char *realm,
-              afs_uint32 startTime, afs_uint32 endTime)
-{
-    int code;
-    char buffer[256];
-    struct ktc_encryptionKey key, session;
-    afs_int32 kvno;
-    afs_int32 ticketLen;
-    struct rx_securityClass *class = NULL;
-
-    code = afsconf_GetLatestKey(dir, &kvno, &key);
-    if (code)
-       goto out;
-
-    DES_init_random_number_generator((DES_cblock *) &key);
-    code = DES_new_random_key((DES_cblock *) &session);
-    if (code)
-       goto out;
-
-    ticketLen = sizeof(buffer);
-    memset(buffer, 0, sizeof(buffer));
-    startTime = time(NULL);
-    endTime = startTime + 60 * 60;
-
-    code = tkt_MakeTicket(buffer, &ticketLen, &key, name, instance, realm,
-                         startTime, endTime, &session, 0, "afs", "");
-    if (code)
-       goto out;
-
-    class = rxkad_NewClientSecurityObject(rxkad_clear, &session, kvno,
-                                         ticketLen, buffer);
-out:
-    return class;
-}
-
 
 void
 startClient(char *configPath)
@@ -268,7 +228,8 @@ startClient(char *configPath)
      * here, sadly */
 
     startTime = time(NULL);
-    class = fakeRXKADClass(dir, "rpctest", "", "", startTime, startTime + 60* 60);
+    class = afstest_FakeRxkadClass(dir, "rpctest", "", "", startTime,
+                                  startTime + 60* 60);
 
     conn = rx_NewConnection(addr, htons(TEST_PORT), TEST_SERVICE_ID, class,
                            RX_SECIDX_KAD);
@@ -306,8 +267,8 @@ startClient(char *configPath)
 
     /* Now try with an admin principal */
     startTime = time(NULL);
-    class = fakeRXKADClass(dir, "rpctest", "admin", "", startTime,
-                     startTime + 60* 60);
+    class = afstest_FakeRxkadClass(dir, "rpctest", "admin", "", startTime,
+                                  startTime + 60* 60);
 
     conn = rx_NewConnection(addr, htons(TEST_PORT), TEST_SERVICE_ID, class,
                            RX_SECIDX_KAD);
index 7c6c9ab..11708e1 100644 (file)
@@ -6,7 +6,7 @@ include @TOP_OBJDIR@/src/config/Makefile.pthread
 
 MODULE_CFLAGS=-I$(srcdir)/..
 
-all check test tests:  config.o servers.o ubik.o
+all check test tests:  config.o servers.o ubik.o rxkad.o
 
 clean:
        rm -f *.o
index 7476840..4345470 100644 (file)
@@ -29,6 +29,12 @@ extern void afstest_UnlinkTestConfig(char *);
 struct afsconf_dir;
 extern int afstest_AddDESKeyFile(struct afsconf_dir *dir);
 
+/* rxkad.c */
+
+extern struct rx_securityClass
+       *afstest_FakeRxkadClass(struct afsconf_dir *dir,
+                               char *name, char *instance, char *realm,
+                               afs_uint32 startTime, afs_uint32 endTime);
 /* servers.c */
 
 extern int afstest_StartVLServer(char *dirname, pid_t *serverPid);
diff --git a/tests/common/rxkad.c b/tests/common/rxkad.c
new file mode 100644 (file)
index 0000000..5f180ba
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2012 Your File System Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <afsconfig.h>
+#include <afs/param.h>
+
+#include <roken.h>
+
+#define HC_DEPRECATED
+#include <hcrypto/des.h>
+
+#include <rx/rxkad.h>
+#include <afs/cellconfig.h>
+
+struct rx_securityClass *
+afstest_FakeRxkadClass(struct afsconf_dir *dir,
+                      char *name, char *instance, char *realm,
+                      afs_uint32 startTime, afs_uint32 endTime)
+{
+    int code;
+    char buffer[256];
+    struct ktc_encryptionKey key, session;
+    afs_int32 kvno;
+    afs_int32 ticketLen;
+    struct rx_securityClass *class = NULL;
+
+    code = afsconf_GetLatestKey(dir, &kvno, &key);
+    if (code)
+       goto out;
+
+    DES_init_random_number_generator((DES_cblock *) &key);
+    code = DES_new_random_key((DES_cblock *) &session);
+    if (code)
+       goto out;
+
+    ticketLen = sizeof(buffer);
+    memset(buffer, 0, sizeof(buffer));
+    startTime = time(NULL);
+    endTime = startTime + 60 * 60;
+
+    code = tkt_MakeTicket(buffer, &ticketLen, &key, name, instance, realm,
+                         startTime, endTime, &session, 0, "afs", "");
+    if (code)
+       goto out;
+
+    class = rxkad_NewClientSecurityObject(rxkad_clear, &session, kvno,
+                                         ticketLen, buffer);
+out:
+    return class;
+}