1 /* gztime.c convert into GeneralizedTime
2 * Copyright (C) 2002, 2003 Simon Josefsson
4 * This file is part of Shishi.
6 * Shishi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * Shishi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with Shishi; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 * shishi_generalize_time:
27 * @handle: shishi handle as allocated by shishi_init().
28 * @t: C time to convert.
30 * Convert C time to KerberosTime. The string must not be deallocate
33 * Return value: Return a KerberosTime time string corresponding to C time t.
36 shishi_generalize_time (Shishi
* handle
, time_t t
)
41 strftime (handle
->gztime_buf
, sizeof (handle
->gztime_buf
),
44 return handle
->gztime_buf
;
48 * shishi_generalize_now:
49 * @handle: shishi handle as allocated by shishi_init().
51 * Convert current time to KerberosTime. The string must not be
52 * deallocate by caller.
54 * Return value: Return a KerberosTime time string corresponding to
58 shishi_generalize_now (Shishi
* handle
)
60 time_t t
= xtime (NULL
);
62 return shishi_generalize_time (handle
, t
);
66 * shishi_generalize_ctime:
67 * @handle: shishi handle as allocated by shishi_init().
68 * @t: KerberosTime to convert.
70 * Convert KerberosTime to C time.
72 * Return value: Returns C time corresponding to KerberosTime t.
75 shishi_generalize_ctime (Shishi
* handle
, const char *t
)
80 memset (&tm
, 0, sizeof (tm
));
82 sscanf (t
, "%4u%2u%2u%2u%2u%2uZ",
83 &tm
.tm_year
, &tm
.tm_mon
, &tm
.tm_mday
,
84 &tm
.tm_hour
, &tm
.tm_min
, &tm
.tm_sec
);
95 * @handle: shishi handle as allocated by shishi_init().
96 * @node: ASN.1 node to get time from.
97 * @field: Name of field in ASN.1 node to get time from.
98 * @time: newly allocated output array with zero terminated time string.
100 * Extract time from ASN.1 structure.
102 * Return value: Returns SHISHI_OK iff successful.
105 shishi_time (Shishi
* handle
, Shishi_asn1 node
,
106 const char *field
, char **time
)
111 len
= GENERALIZEDTIME_TIME_LEN
+ 1;
112 *time
= xmalloc (len
);
114 res
= shishi_asn1_read (handle
, node
, field
, *time
, &len
);
115 if (res
!= SHISHI_OK
)
118 if (len
== GENERALIZEDTIME_TIME_LEN
)
120 shishi_error_printf (handle
, "Read time too short (%s)", *time
);
121 return SHISHI_ASN1_ERROR
;