|
|
1.1 root 1: #include <sys/types.h>
2: #include <kerberos/krb.h>
3: #include <stdio.h>
4: #include <netdb.h>
5: #include <netinet/in.h>
6: #include <sys/file.h>
7: #include "register_proto.h"
8:
9: #define KFILE "update.key%s"
10:
11: main(argc, argv)
12: char **argv;
13: {
14: char namebuf[255];
15: int fd;
16: struct hostent *hp;
17: char *addr;
18: int i;
19: struct sockaddr_in sin;
20:
21: if(argc != 2) {
22: usage(argv[0]);
23: exit(1);
24: }
25:
26: hp = gethostbyname(argv[1]);
27: for(i = 0; addr = hp->h_addr_list[i]; i++) {
28: addr = hp->h_addr_list[i];
29: bcopy(addr, &sin.sin_addr, hp->h_length);
30:
31: printf("Making key for host %s (%s)\n",
32: argv[1], inet_ntoa(sin.sin_addr));
33: make_key(sin.sin_addr);
34: }
35: printf("==========\n");
36: printf("One copy of the each key should be put in /kerberos on the\n");
37: printf("Kerberos machine (mode 600, owner root).\n");
38: printf("Another copy of each key should be put on the named\n");
39: printf("client as /.update.keyXXX.XXX.XXX.XXX (same modes as above).\n");
40: fflush(stdout);
41: }
42:
43: make_key(addr)
44: struct in_addr addr;
45: {
46: struct keyfile_data kfile;
47: char namebuf[255];
48: int fd;
49:
50: sprintf(namebuf, KFILE, inet_ntoa(addr));
51: fd = open(namebuf, O_WRONLY|O_CREAT, 0600);
52: if(fd < 0) {
53: perror("open");
54: exit(1);
55: }
56: random_key(kfile.kf_key);
57: if(write(fd, &kfile, sizeof(kfile)) != sizeof(kfile)) {
58: fprintf(stderr, "error writing file %s\n", namebuf);
59: }
60: close(fd);
61: }
62: usage(name)
63: char *name;
64: {
65: fprintf(stderr, "usage: %s host\n", name);
66: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.