kauth: Catch ka_KeyCheckSum failures
[openafs.git] / tests / common / config.c
index 1170240..faefc00 100644 (file)
 #include <afs/param.h>
 #include <roken.h>
 
+#include <afs/cellconfig.h>
 #include <afs/afsutil.h>
 
+#include <hcrypto/des.h>
+
+#include <tests/tap/basic.h>
 #include "common.h"
 
 static FILE *
@@ -71,6 +75,9 @@ char *
 afstest_BuildTestConfig(void) {
     char *dir = NULL;
     FILE *file;
+    struct hostent *host;
+    char hostname[255];
+    struct in_addr iaddr;
 
     if (asprintf(&dir, "%s/afs_XXXXXX", gettmpdir()) == -1)
        goto fail;
@@ -78,10 +85,20 @@ afstest_BuildTestConfig(void) {
     if (mkdtemp(dir) == NULL)
        goto fail;
 
-    /* Create a CellServDB */
+    /* Work out which IP address to use in our CellServDB. We figure this out
+     * according to the IP address which ubik is most likely to pick for one of
+     * our db servers */
+
+    gethostname(hostname, sizeof(hostname));
+    host = gethostbyname(hostname);
+    if (!host)
+       return NULL;
+
+    memcpy(&iaddr, host->h_addr, 4);
+
     file = openConfigFile(dir, "CellServDB");
     fprintf(file, ">example.org # An example cell\n");
-    fprintf(file, "127.0.0.1 #test.example.org\n");
+    fprintf(file, "%s #test.example.org\n", inet_ntoa(iaddr));
     fclose(file);
 
     /* Create a ThisCell file */
@@ -104,9 +121,25 @@ fail:
 void
 afstest_UnlinkTestConfig(char *dir)
 {
-    unlinkConfigFile(dir, "KeyFile");
-    unlinkConfigFile(dir, "CellServDB");
-    unlinkConfigFile(dir, "ThisCell");
-    unlinkConfigFile(dir, "UserList");
-    rmdir(dir);
+    if (getenv("MAKECHECK") != NULL) {
+       unlinkConfigFile(dir, "KeyFile");
+       unlinkConfigFile(dir, "KeyFileExt");
+       unlinkConfigFile(dir, "CellServDB");
+       unlinkConfigFile(dir, "ThisCell");
+       unlinkConfigFile(dir, "UserList");
+       unlinkConfigFile(dir, "krb.conf");
+       unlinkConfigFile(dir, "krb.excl");
+       rmdir(dir);
+    }
+}
+
+int
+afstest_AddDESKeyFile(struct afsconf_dir *dir)
+{
+    char keymaterial[]="\x19\x17\xff\xe6\xbb\x77\x2e\xfc";
+
+    /* Make sure that it is actually a valid key */
+    DES_set_odd_parity((DES_cblock *)keymaterial);
+
+    return afsconf_AddKey(dir, 1, keymaterial, 1);
 }