Use rxgk in afsconf_BuildServerSecurityObjects
[openafs.git] / tests / auth / superuser-t.c
index 93f50ec..bdba611 100644 (file)
 #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>
 
-#include <tap/basic.h>
+#include <hcrypto/des.h>
+#include <tests/tap/basic.h>
 
 #include "test.h"
 #include "common.h"
@@ -74,43 +72,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 +229,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 +268,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);
@@ -403,49 +365,23 @@ STEST_NewWhoAmI(struct rx_call *call, char **result)
    return 0;
 }
 
-void
-startServer(char *configPath)
-{
-    struct rx_securityClass **classes;
-    afs_int32 numClasses;
-    int code;
-    struct rx_service *service;
-
-    globalDir = afsconf_Open(configPath);
-    if (globalDir == NULL) {
-       fprintf(stderr, "Server: Unable to open config directory\n");
-       exit(1);
-    }
-
-    code = rx_Init(htons(TEST_PORT));
-    if (code != 0) {
-       fprintf(stderr, "Server: Unable to initialise RX\n");
-        exit(1);
-    }
-
-    afsconf_BuildServerSecurityObjects(globalDir, &classes, &numClasses);
-    service = rx_NewService(0, TEST_SERVICE_ID, "test", classes, numClasses,
-                           TEST_ExecuteRequest);
-    if (service == NULL) {
-       fprintf(stderr, "Server: Unable to start to test service\n");
-       exit(1);
-    }
-
-    rx_StartServer(1);
-}
-
 int main(int argc, char **argv)
 {
     struct afsconf_dir *dir;
     char *dirname;
     int serverPid, clientPid, waited, stat;
     int code;
+    int ret = 0;
+
+    afstest_SkipTestsIfBadHostname();
 
     /* Start the client and the server if requested */
 
     if (argc == 3 ) {
         if (strcmp(argv[1], "-server") == 0) {
-            startServer(argv[2]);
+           globalDir = afsconf_Open(argv[2]);
+           afstest_StartTestRPCService(argv[2], TEST_PORT, TEST_SERVICE_ID,
+                                       TEST_ExecuteRequest);
             exit(0);
         } else if (strcmp(argv[1], "-client") == 0) {
             startClient(argv[2]);
@@ -464,13 +400,15 @@ int main(int argc, char **argv)
     dir = afsconf_Open(dirname);
     if (dir == NULL) {
        fprintf(stderr, "Unable to configure directory.\n");
-       exit(1);
+       ret = 1;
+       goto out;
     }
 
     code = afstest_AddDESKeyFile(dir);
     if (code) {
        afs_com_err("superuser-t", code, "while adding new key\n");
-       exit(1);
+       ret = 1;
+       goto out;
     }
 
     printf("Config directory is %s\n", dirname);
@@ -479,13 +417,15 @@ int main(int argc, char **argv)
         /* Bang */
     } else if (serverPid == 0) {
         execl(argv[0], argv[0], "-server", dirname, NULL);
-        exit(1);
+       ret = 1;
+       goto out;
     }
     clientPid = fork();
     if (clientPid == -1) {
         kill(serverPid, SIGTERM);
         waitpid(serverPid, &stat, 0);
-        exit(1);
+       ret = 1;
+       goto out;
     } else if (clientPid == 0) {
         execl(argv[0], argv[0], "-client", dirname, NULL);
     }
@@ -501,9 +441,9 @@ int main(int argc, char **argv)
     }
     waitpid(0, &stat, 0);
 
+out:
     /* Client and server are both done, so cleanup after everything */
+    afstest_UnlinkTestConfig(dirname);
 
-    /* unlinkTestConfig(dirname); */
-
-    return 0;
+    return ret;
 }