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#include <CoreFoundation/CoreFoundation.h> 30#include <Security/cssmtype.h> 31 32#ifdef __cplusplus 33extern "C" { 34#endif 35 36/* lengths of time strings without trailing NULL */ 37#define UTC_TIME_NOSEC_LEN 11 38#define UTC_TIME_STRLEN 13 39#define CSSM_TIME_STRLEN 14 /* no trailing 'Z' */ 40#define GENERALIZED_TIME_STRLEN 15 41#define LOCALIZED_UTC_TIME_STRLEN 17 42#define LOCALIZED_TIME_STRLEN 19 43 44/* 45 * Given a string containing either a UTC-style or "generalized time" 46 * time string, convert to a CFDateRef. Returns nonzero on 47 * error. 48 */ 49extern int timeStringToCfDate( 50 const char *str, 51 unsigned len, 52 CFDateRef *cfDate); 53 54/* 55 * Compare two times. Assumes they're both in GMT. Returns: 56 * -1 if t1 < t2 57 * 0 if t1 == t2 58 * 1 if t1 > t2 59 */ 60extern int compareTimes( 61 CFDateRef t1, 62 CFDateRef t2); 63 64/* 65 * Create a time string, in either UTC (2-digit) or or Generalized (4-digit) 66 * year format. Caller mallocs the output string whose length is at least 67 * (UTC_TIME_STRLEN+1), (GENERALIZED_TIME_STRLEN+1), or (CSSM_TIME_STRLEN+1) 68 * respectively. Caller must hold tpTimeLock. 69 */ 70typedef enum { 71 TIME_UTC, 72 TIME_GEN, 73 TIME_CSSM 74} TpTimeSpec; 75 76void timeAtNowPlus(unsigned secFromNow, 77 TpTimeSpec timeSpec, 78 char *outStr); 79 80/* 81 * Convert a time string, which can be in any of three forms (UTC, 82 * generalized, or CSSM_TIMESTRING) into a CSSM_TIMESTRING. Caller 83 * mallocs the result, which must be at least (CSSM_TIME_STRLEN+1) bytes. 84 * Returns nonzero if incoming time string is badly formed. 85 */ 86int tpTimeToCssmTimestring( 87 const char *inStr, // not necessarily NULL terminated 88 unsigned inStrLen, // not including possible NULL 89 char *outTime); // caller mallocs 90 91#ifdef __cplusplus 92} 93#endif 94 95#endif /* _TP_TIME_H_*/ 96