1 /*- 2 * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved. 3 * Redistribution and modifications are permitted subject to BSD license. 4 */ 5 #ifndef _GeneralizedTime_H_ 6 #define _GeneralizedTime_H_ 7 8 #include "asn1/asn1c/OCTET_STRING.h" 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 typedef OCTET_STRING_t GeneralizedTime_t; /* Implemented via OCTET STRING */ 15 16 extern asn_TYPE_descriptor_t asn_DEF_GeneralizedTime; 17 extern asn_TYPE_operation_t asn_OP_GeneralizedTime; 18 19 asn_struct_print_f GeneralizedTime_print; 20 asn_struct_compare_f GeneralizedTime_compare; 21 asn_constr_check_f GeneralizedTime_constraint; 22 der_type_encoder_f GeneralizedTime_encode_der; 23 xer_type_encoder_f GeneralizedTime_encode_xer; 24 asn_random_fill_f GeneralizedTime_random_fill; 25 26 #define GeneralizedTime_free OCTET_STRING_free 27 #define GeneralizedTime_decode_ber OCTET_STRING_decode_ber 28 #define GeneralizedTime_decode_xer OCTET_STRING_decode_xer_utf8 29 #define GeneralizedTime_decode_uper OCTET_STRING_decode_uper 30 #define GeneralizedTime_encode_uper OCTET_STRING_encode_uper 31 32 /*********************** 33 * Some handy helpers. * 34 ***********************/ 35 36 struct tm; /* <time.h> */ 37 38 /* 39 * Convert a GeneralizedTime structure into time_t 40 * and optionally into struct tm. 41 * If as_gmt is given, the resulting _optional_tm4fill will have a GMT zone, 42 * instead of default local one. 43 * On error returns -1 and errno set to EINVAL 44 */ 45 time_t asn_GT2time(const GeneralizedTime_t *, struct tm *_optional_tm4fill, 46 int as_gmt); 47 48 /* A version of the above function also returning the fractions of seconds */ 49 time_t asn_GT2time_frac(const GeneralizedTime_t *, 50 int *frac_value, int *frac_digits, /* (value / (10 ^ digits)) */ 51 struct tm *_optional_tm4fill, int as_gmt); 52 53 /* 54 * Another version returning fractions with defined precision 55 * For example, parsing of the time ending with ".1" seconds 56 * with frac_digits=3 (msec) would yield frac_value = 100. 57 */ 58 time_t asn_GT2time_prec(const GeneralizedTime_t *, 59 int *frac_value, int frac_digits, 60 struct tm *_optional_tm4fill, int as_gmt); 61 62 /* 63 * Convert a struct tm into GeneralizedTime. 64 * If _optional_gt is not given, this function will try to allocate one. 65 * If force_gmt is given, the resulting GeneralizedTime will be forced 66 * into a GMT time zone (encoding ends with a "Z"). 67 * On error, this function returns 0 and sets errno. 68 */ 69 GeneralizedTime_t *asn_time2GT(GeneralizedTime_t *_optional_gt, 70 const struct tm *, int force_gmt); 71 GeneralizedTime_t *asn_time2GT_frac(GeneralizedTime_t *_optional_gt, 72 const struct tm *, int frac_value, int frac_digits, int force_gmt); 73 74 #ifdef __cplusplus 75 } 76 #endif 77 78 #endif /* _GeneralizedTime_H_ */ 79