ASN1_TIME_diff (3)
Leading comments
Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) Standard preamble: ========================================================================
NAME
ASN1_TIME_set, ASN1_TIME_adj, ASN1_TIME_check, ASN1_TIME_set_string, ASN1_TIME_print, ASN1_TIME_diff - ASN.1 Time functions.SYNOPSIS
ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, int offset_day, long offset_sec); int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); int ASN1_TIME_check(const ASN1_TIME *t); int ASN1_TIME_print(BIO *b, const ASN1_TIME *s); int ASN1_TIME_diff(int *pday, int *psec, const ASN1_TIME *from, const ASN1_TIME *to);
DESCRIPTION
The function ASN1_TIME_set() sets theASN1_TIME_adj() sets the
ASN1_TIME_set_string() sets
ASN1_TIME_check() checks the syntax of
ASN1_TIME_print() prints out the time s to
ASN1_TIME_diff() sets *pday and *psec to the time difference between from and to. If to represents a time later than from then one or both (depending on the time difference) of *pday and *psec will be positive. If to represents a time earlier than from then one or both of *pday and *psec will be negative. If to and from represent the same time then *pday and *psec will both be zero. If both *pday and *psec are non-zero they will always have the same sign. The value of *psec will always be less than the number of seconds in a day. If from or to is
NOTES
TheThe
The
Some applications add offset times directly to a time_t value and pass the results to ASN1_TIME_set() (or equivalent). This can cause problems as the time_t value can overflow on some systems resulting in unexpected results. New applications should use ASN1_TIME_adj() instead and pass the offset value in the offset_sec and offset_day parameters instead of directly manipulating a time_t value.
BUGS
ASN1_TIME_print() currently does not print out the time zone: it either prints out ``EXAMPLES
Set a time structure to one hour after the current time and print it out:
#include <time.h> #include <openssl/asn1.h> ASN1_TIME *tm; time_t t; BIO *b; t = time(NULL); tm = ASN1_TIME_adj(NULL, t, 0, 60 * 60); b = BIO_new_fp(stdout, BIO_NOCLOSE); ASN1_TIME_print(b, tm); ASN1_STRING_free(tm); BIO_free(b);
Determine if one time is later or sooner than the current time:
int day, sec; if (!ASN1_TIME_diff(&day, &sec, NULL, to)) /* Invalid time format */ if (day > 0 || sec > 0) printf("Later\n"); else if (day < 0 || sec < 0) printf("Sooner\n"); else printf("Same\n");
RETURN VALUES
ASN1_TIME_set() and ASN1_TIME_adj() return a pointer to anASN1_TIME_set_string() returns 1 if the time value is successfully set and 0 otherwise.
ASN1_TIME_check() returns 1 if the structure is syntactically correct and 0 otherwise.
ASN1_TIME_print() returns 1 if the time is successfully printed out and 0 if an error occurred (I/O error or invalid time format).
ASN1_TIME_diff() returns 1 for sucess and 0 for failure. It can fail if the pass