char *server; /* null-terminated */
char *client; /* null-terminated */
char *msghash; /* null-terminated */
+ krb5_data tag;
krb5_int32 cusec;
krb5_timestamp ctime;
} krb5_donot_replay;
tktauthent.ticket = req->ticket;
tktauthent.authenticator = (*auth_context)->authentp;
if (!(retval = krb5_auth_to_rep(context, &tktauthent, &rep))) {
- retval = krb5_rc_hash_message(context,
- &req->authenticator.ciphertext,
- &rep.msghash);
+ retval = k5_rc_tag_from_ciphertext(context, &req->authenticator,
+ &rep.tag);
+ if (!retval) {
+ retval = krb5_rc_hash_message(context,
+ &req->authenticator.ciphertext,
+ &rep.msghash);
+ }
if (!retval) {
retval = krb5_rc_store(context, (*auth_context)->rcache, &rep);
free(rep.msghash);
{
krb5_donot_replay r;
krb5_error_code err;
- char buf[100], buf2[100];
+ char buf[100], buf2[100], tag[8];
krb5_rcache my_rcache;
snprintf(buf, sizeof(buf), "host/all-in-one.mit.edu/%p@ATHENA.MIT.EDU",
r.server = buf;
r.client = (t->my_cusec & 7) + "abcdefgh@ATHENA.MIT.EDU";
r.msghash = NULL;
+ r.tag = empty_data();
if (t->now != t->my_ctime) {
if (t->my_ctime != 0) {
snprintf(buf2, sizeof(buf2), "%3d: %ld %5d\n", t->idx,
t->my_cusec++;
r.ctime = t->my_ctime;
r.cusec = t->my_cusec;
+ store_32_be(r.ctime, tag);
+ store_32_be(r.cusec, tag + 4);
+ r.tag = make_data(tag, 8);
if (!init_once) {
err = krb5_get_server_rcache(ctx, &piece, &my_rcache);
if (err) {