ASN1_TIME_set(3) ASN1_TIME_set_string,

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

La fonction ASN1_TIME_set() définit la structure ASN1_TIME s à l’heure représentée par la valeur time_t t. Si s est NULL, une nouvelle structure ASN1_TIME est allouée et renvoyée.

ASN1_TIME_adj() définit la structure ASN1_TIME s à l’heure représentée par la valeur time_t t. Les valeurs de offset_day ou offset_sec peuvent être négatives pour définir une heure avant t. La valeur offset_sec peut aussi dépasser le nombre de secondes dans un jour. Si s est NULL, une nouvelle structure ASN1_TIME est allouée et renvoyée.

ASN1_TIME_set_string() définit la structure ASN1_TIME s à l’heure représentée par la chaîne str qui doit être dans un format d’heure ASN.1 approprié (par exemple AAMMJJHHMMSSZ ou AAAAMMJJHHMMSSZ).

ASN1_TIME_check() vérifie la syntaxe de la structure ASN1_TIME s.

ASN1_TIME_print() affiche l’heure s dans le BIO b en format lisible. Le format est Mmm JJ HH:MM:SS AAAA [GMT], par exemple « Feb 3 00:55:52 2015 GMT », sans changement de ligne. Si la structure de temps a un format incorrect, elle affiche « Bad time value » et renvoie une erreur.

ASN1_TIME_diff() définit *pday et *psec à la différence d’heure entre from et to. Si to représente une heure suivant from, *pday ou *psec ou les deux (en fonction de la différence d’heure) seront positives. Si to représente une heure précédent from, *pday ou *psec ou les deux seront négatives. Si to et from représentent la même heure, *pday et *psec seront toutes deux nulles. Si *pday et *psec ne sont pas nulles, elles seront toujours de même signe. La valeur de *psec sera toujours inférieure au nombre de secondes dans une journée. Si from ou to sont NULL, l’heure actuelle est utilisée.

NOTES

La structure ASN1_TIME correspond à la structure ASN.1 Time définie dans la RFC 5280 et suivantes. Les fonctions de définition d’heure obéissent aux règles soulignées dans la RFC 5280 : si la date peut être représentée par UTCTime, c’est ce qui est utilisé, sinon GeneralizedTime est utilisé.

La structure ASN1_TIME est représentée par une ASN1_STRING en interne et peut être libérée en utilisant ASN1_STRING_free().

La structure ASN1_TIME peut représenter des années entre 0000 et 9999 mais aucune correction des modifications de calendrier ancien n’est tentée (par exemple, de calendrier julien en grégorien).

Certaines applications ajoutent des heures de décalage directement dans une valeur time_t et passent le résultat à ASN1_TIME_set() (ou équivalent). Cela peut poser des problèmes car la valeur time_t peut déborder sur certains systèmes avec pour conséquence des résultats inattendus. Les nouvelles applications devraient utiliser ASN1_TIME_adj() à la place et passer la valeur de décalage dans les paramètres offset_sec et offset_day au lieu de manipuler directement une valeur time_t.

BOGUES

ASN1_TIME_print() n’affiche actuellement pas le fuseau horaire : elle affiche soit « GMT », soit rien. Tous les certificats sont compatibles avec la RFC 5280 et utilisent tous GMT de toute façon.

EXEMPLES

Définir une structure de temps à une heure après l’heure actuelle et l’afficher :

    #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);

Déterminer si une heure est après ou avant l’heure actuelle :

    int day, sec;
    if (!ASN1_TIME_diff(&day, &sec, NULL, to))
        /* Format d’heure incorrect */
    if (day > 0 || sec > 0)
        printf("Après\n");
    else if (day < 0 || sec < 0)
        printf("Avant\n");
    else
        printf("Identique\n");

VALEURS DE RETOUR

ASN1_TIME_set() et ASN1_TIME_adj() renvoient un pointeur vers une structure ASN1_TIME, ou NULL si une erreur est survenue.

ASN1_TIME_set_string() renvoie 1 si la valeur de temps est définie correctement et 0 sinon.

ASN1_TIME_check() renvoie 1 si la structure est correcte d’un point de vue syntaxique et 0 sinon.

ASN1_TIME_print() renvoie 1 si le temps est affiché correctement et 0 si une erreur est survenue (erreur d’entrée et sortie ou format d’heure incorrect).

ASN1_TIME_diff() renvoie 1 en cas de réussite et 0 en cas d’échec. Elle peut échouer si la structure ASN1_TIME passée a par exemple une syntaxe incorrecte.

TRADUCTION

La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.