Annotation of 43BSDReno/old/athena/register/make_keypair.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.