-#ifdef GDSS
- if (q->vcnt == U_MODTIME && *argv[U_SIGNATURE + 1])
- {
- login = malloc(0);
- status = id_to_name(id, USERS_TABLE, &login);
- sprintf(databuf, "%s:%s", login, argv[U_MITID + 1]);
- free(login);
- /* skip bytes for timestamp & kname */
- si.rawsig = (unsigned char *) rawsig;
- status = GDSS_Verify(databuf, strlen(databuf), argv[U_SIGNATURE + 1],
- &si);
- if (strlen(rawsig) > mr_sig_length)
- {
- com_err(whoami, 0, "GDSS signature would be truncated.");
- return MR_INTERNAL;
- }
- if (status == 0)
- {
- name = kname_unparse(si.pname, si.pinst, si.prealm);
- status = name_to_id(name, STRINGS_TABLE, &sigwho);
- if (status == MR_NO_MATCH)
- sigwho = add_string(name);
- else if (status)
- return status;
- timestamp = si.timestamp;
- }
- else
- return gdss2et(status);
- }
- else
- {
- rawsig[0] = '\0';
- sigwho = 0;
- timestamp = 0;
- }
-#endif /* GDSS */
-
- /* create finger entry, pobox & set modtime on user */
-
-#ifdef GDSS
- EXEC SQL UPDATE users SET modtime = SYSDATE, modby = :who, modwith = :entity,
- signature = NVL(:rawsig, CHR(0)), sigdate = :timestamp, sigwho = :sigwho
- WHERE users_id = :id;
-#else /* GDSS */
- EXEC SQL UPDATE users SET modtime = SYSDATE, modby = :who, modwith = :entity
- WHERE users_id = :id;
-#endif /* GDSS */