]> git.saurik.com Git - apple/security.git/blob - AppleX509TP/tpTime.h
Security-163.tar.gz
[apple/security.git] / AppleX509TP / tpTime.h
1 /*
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 /*
20 * tpTime.h - cert related time functions
21 *
22 * Written 10/10/2000 by Doug Mitchell.
23 */
24
25 #ifndef _TP_TIME_H_
26 #define _TP_TIME_H_
27
28 #include <time.h>
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 /* lengths of time strings without trailing NULL */
35 #define UTC_TIME_STRLEN 13
36 #define CSSM_TIME_STRLEN 14 /* no trailing 'Z' */
37 #define GENERALIZED_TIME_STRLEN 15
38
39 /*
40 * Given a string containing either a UTC-style or "generalized time"
41 * time string, convert to a struct tm (in GMT/UTC). Returns nonzero on
42 * error.
43 */
44 extern int timeStringToTm(
45 const char *str,
46 unsigned len,
47 struct tm *tmp);
48
49 /*
50 * Return current GMT time as a struct tm.
51 * Caller must hold tpTimeLock.
52 */
53 extern void nowTime(
54 struct tm *now);
55
56 /*
57 * Compare two times. Assumes they're both in GMT. Returns:
58 * -1 if t1 < t2
59 * 0 if t1 == t2
60 * 1 if t1 > t2
61 */
62 extern int compareTimes(
63 const struct tm *t1,
64 const struct tm *t2);
65
66 /*
67 * Create a time string, in either UTC (2-digit) or or Generalized (4-digit)
68 * year format. Caller mallocs the output string whose length is at least
69 * (UTC_TIME_STRLEN+1), (GENERALIZED_TIME_STRLEN+1), or (CSSM_TIME_STRLEN+1)
70 * respectively. Caller must hold tpTimeLock.
71 */
72 typedef enum {
73 TIME_UTC,
74 TIME_GEN,
75 TIME_CSSM
76 } TpTimeSpec;
77
78 void timeAtNowPlus(unsigned secFromNow,
79 TpTimeSpec timeSpec,
80 char *outStr);
81
82 /*
83 * Convert a time string, which can be in any of three forms (UTC,
84 * generalized, or CSSM_TIMESTRING) into a CSSM_TIMESTRING. Caller
85 * mallocs the result, which must be at least (CSSM_TIME_STRLEN+1) bytes.
86 * Returns nonzero if incoming time string is badly formed.
87 */
88 int tpTimeToCssmTimestring(
89 const char *inStr, // not necessarily NULL terminated
90 unsigned inStrLen, // not including possible NULL
91 char *outTime); // caller mallocs
92
93 #ifdef __cplusplus
94 }
95 #endif
96
97 #endif /* _TP_TIME_H_*/