aboutsummaryrefslogtreecommitdiff
path: root/src/lib/krb5/asn.1/asn1_k_encode.c
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2015-01-26 18:38:16 -0500
committerGreg Hudson <ghudson@mit.edu>2015-02-02 12:11:18 -0500
commitb0661f9176f5eb2644ba459e1b1e87d3dd502174 (patch)
tree8a248da4a927172b7e7a7192f7ff3c3f84dc592f /src/lib/krb5/asn.1/asn1_k_encode.c
parent922f7d1230fe647821d9767fafef3774c5cfd2fc (diff)
downloadkrb5-b0661f9176f5eb2644ba459e1b1e87d3dd502174.zip
krb5-b0661f9176f5eb2644ba459e1b1e87d3dd502174.tar.gz
krb5-b0661f9176f5eb2644ba459e1b1e87d3dd502174.tar.bz2
Remove starttime hack in EncTicketPart decoder
The EncTicketPart decoder sets starttime to authtime if it wasn't included in the ASN.1 value. This is problematic for upcoming CAMMAC work, as we will need to re-encode a received EncTicketPart to check the KDC verifier. Remove that behavior and just use opt_kerberos_time for the starttime field. Adjust krb5_decode_test.c to match the new decoder behavior. Similarly, remove the process_tgs_req() code which sets starttime in the header ticket if it isn't set. Add a comment explaining the unrelated code adjacent to it. check_tgs_times() used the ticket starttime without checking if it was present. Add a fallback to times->authtime, and narrow the function contract to make the implementation more concise. There is a similar hack in the EncKDCRepPart decoder; leave that alone for now.
Diffstat (limited to 'src/lib/krb5/asn.1/asn1_k_encode.c')
-rw-r--r--src/lib/krb5/asn.1/asn1_k_encode.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/src/lib/krb5/asn.1/asn1_k_encode.c b/src/lib/krb5/asn.1/asn1_k_encode.c
index f6de0b7..25b825c 100644
--- a/src/lib/krb5/asn.1/asn1_k_encode.c
+++ b/src/lib/krb5/asn.1/asn1_k_encode.c
@@ -713,27 +713,13 @@ static const struct atype_info *authenticator_fields[] = {
DEFSEQTYPE(untagged_authenticator, krb5_authenticator, authenticator_fields);
DEFAPPTAGGEDTYPE(authenticator, 2, untagged_authenticator);
-static int
-is_enc_tkt_start_set(const void *p)
-{
- const krb5_enc_tkt_part *val = p;
- return (val->times.starttime != 0);
-}
-static void
-init_enc_tkt_start(void *p)
-{
- krb5_enc_tkt_part *val = p;
- val->times.starttime = val->times.authtime;
-}
DEFFIELD(enc_tkt_0, krb5_enc_tkt_part, flags, 0, krb5_flags);
DEFFIELD(enc_tkt_1, krb5_enc_tkt_part, session, 1, ptr_encryption_key);
DEFFIELD(enc_tkt_2, krb5_enc_tkt_part, client, 2, realm_of_principal);
DEFFIELD(enc_tkt_3, krb5_enc_tkt_part, client, 3, principal);
DEFFIELD(enc_tkt_4, krb5_enc_tkt_part, transited, 4, transited);
DEFFIELD(enc_tkt_5, krb5_enc_tkt_part, times.authtime, 5, kerberos_time);
-DEFFIELD(enc_tkt_6_def, krb5_enc_tkt_part, times.starttime, 6, kerberos_time);
-DEFOPTIONALTYPE(enc_tkt_6, is_enc_tkt_start_set, init_enc_tkt_start,
- enc_tkt_6_def);
+DEFFIELD(enc_tkt_6, krb5_enc_tkt_part, times.starttime, 6, opt_kerberos_time);
DEFFIELD(enc_tkt_7, krb5_enc_tkt_part, times.endtime, 7, kerberos_time);
DEFFIELD(enc_tkt_8, krb5_enc_tkt_part, times.renew_till, 8, opt_kerberos_time);
DEFFIELD(enc_tkt_9, krb5_enc_tkt_part, caddrs, 9,