1/* 2 * Copyright (c) 2002 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. 7 * Please obtain a copy of the License at http://www.apple.com/publicsource 8 * and read it before 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 12 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 13 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 14 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 15 * Please see the License for the specific language governing rights 16 * and limitations under the License. 17 */ 18 19/* 20 * cuTimeStr.h = Time string utilities. 21 */ 22 23#ifndef _TIME_STR_H_ 24#define _TIME_STR_H_ 25 26#include <time.h> 27#include <Security/x509defs.h> 28 29#define UTC_TIME_NOSEC_LEN 11 30#define UTC_TIME_STRLEN 13 31#define CSSM_TIME_STRLEN 14 /* no trailing 'Z' */ 32#define GENERALIZED_TIME_STRLEN 15 33 34#ifdef __cplusplus 35extern "C" { 36#endif 37 38/* 39 * Given a string containing either a UTC-style or "generalized time" 40 * time string, convert to a struct tm (in GMT/UTC). Returns nonzero on 41 * error. 42 */ 43int cuTimeStringToTm( 44 const char *str, 45 unsigned len, 46 struct tm *tmp); 47 48typedef enum { 49 TIME_UTC, 50 TIME_CSSM, 51 TIME_GEN 52} timeSpec; 53 54/* 55 * Return an APP_MALLOCd time string, specified format and time relative 56 * to 'now' in seconds. 57 */ 58char *cuTimeAtNowPlus( 59 int secFromNow, 60 timeSpec spec); 61 62/* 63 * Convert a CSSM_X509_TIME, which can be in any of three forms (UTC, 64 * generalized, or CSSM_TIMESTRING) into a CSSM_TIMESTRING. Caller 65 * must free() the result. Returns NULL if x509time is badly formed. 66 */ 67char *cuX509TimeToCssmTimestring( 68 const CSSM_X509_TIME *x509Time, 69 unsigned *rtnLen); // for caller's convenience 70 71#ifdef __cplusplus 72} 73#endif 74 75#endif /* _TIME_STR_H_ */ 76