3 * This program will bulk sign user records in the database.
11 #include <moira_site.h>
24 char buf[BUFSIZ], *data, *p;
25 struct save_queue *sq;
27 int found, status, i, wait;
28 ## char login[10], mid[32], rawsig[256];
29 ## int id, timestamp, sms;
35 for (i = 1; i < argc; i++) {
36 if (!strcmp(argv[i], "-w"))
38 else if (!strcmp(argv[i], "-D"))
39 setenv("ING_SET", "set printqry");
41 fprintf(stderr, "Usage: %s [-w] [-D]\n", argv[0]);
44 /* Set the name of our kerberos ticket file */
45 krb_set_tkt_string("/tmp/tkt_sign");
48 printf("Authenticating as moira.extra:\n");
49 status = krb_get_pw_in_tkt("moira", "extra", "ATHENA.MIT.EDU",
50 "krbtgt", "ATHENA.MIT.EDU",
53 com_err(program, status + krb_err_base, " in krb_get_pw_in_tkt");
57 ## range of u is users
58 ## range of s is strings
61 ## retrieve (sms = s.string_id) where s.string="moira.extra@ATHENA.MIT.EDU"
63 com_err(program, 0, " failed to find string moira.extra@ATHENA.MIT.EDU in database");
71 ## retrieve (id = u.users_id, login = u.#login, mid = u.mit_id)
72 ## where u.signature = "" and u.xmodtime > date("01-jul-92") {
73 if (login[0] == '#' || !isdigit(mid[0]))
75 sprintf(buf, "%d:%s:%s", id, strtrim(login), strtrim(mid));
76 sq_save_data(sq, strsave(buf));
80 printf("Found %d users to sign.\n", found);
82 si.rawsig = (unsigned char *) &rawsig[0];
84 while (sq_get_data(sq, &data)) {
87 com_err(program, 0, " malformatted data");
93 status = GDSS_Sign(data, strlen(data), buf);
95 com_err(program, gdss2et(status), "signing data");
98 status = GDSS_Verify(data, strlen(data), buf, &si);
100 com_err(program, gdss2et(status), "verifying data");
104 timestamp = si.timestamp;
105 ## replace u (signature = rawsig, sigwho = sms, sigdate = timestamp)
106 ## where u.users_id = id