fr::crypto::OBJ_nid2obj(3SSL)

NOM
OBJ_nid2obj, OBJ_nid2ln, OBJ_nid2sn, OBJ_obj2nid, OBJ_txt2nid, OBJ_ln2nid, OBJ_sn2nid, OBJ_cmp, OBJ_dup, OBJ_txt2obj, OBJ_obj2txt, OBJ_create, OBJ_cleanup - Fonctions utilitaires de l'objet ASN1.

SYNOPSIS
 #include <openssl/objects.h>

 ASN1_OBJECT * OBJ_nid2obj(int n);
 const char *  OBJ_nid2ln(int n);
 const char *  OBJ_nid2sn(int n);

 int OBJ_obj2nid(const ASN1_OBJECT *o);
 int OBJ_ln2nid(const char *ln);
 int OBJ_sn2nid(const char *sn);

 int OBJ_txt2nid(const char *s);

 ASN1_OBJECT * OBJ_txt2obj(const char *s, int no_name);
 int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);

 int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b);
 ASN1_OBJECT * OBJ_dup(const ASN1_OBJECT *o);

 int OBJ_create(const char *oid,const char *sn,const char *ln);
 void OBJ_cleanup(void);

DESCRIPTION
Les fonctions utilitaires de l'objet ASN1 traitent les structures ASN1_OBJECT qui sont une représentation du type ASN1 OBJECT IDENTIFIER (OID).

OBJ_nid2obj(), OBJ_nid2ln() et OBJ_nid2sn() convertissent le NID n en une structure ASN1_OBJECT, son nom long et son nom court respectivement, ou NULL s'il y a eu une erreur.

OBJ_obj2nid(), OBJ_ln2nid() et OBJ_sn2nid() renvoient le NID correspondant à l'objet o, le nom long <ln> ou le nom court <sn> respectivement, ou NID_undef s'il y a eu une erreur.

OBJ_txt2nid() renvoie NID correspondant à la chaîne de caractères <s>. s peut être un nom long, un nom court ou une représentation numérique d'un objet.

OBJ_txt2obj() convertit la chaîne de caractères s en une structure ASN1_OBJECT. Si no_name vaut 0, alors les noms longs et courts ainsi que les formes numériques seront interprétés. Si no_name vaut 1, seule la forme numérique est acceptée.

OBJ_obj2txt() convertit le ASN1_OBJECT a en une représentation textuelle. La représentation est écrite sous forme de chaîne, terminée par null, dans buf avec une taille maximale de buf_len, le résultat est tronqué si nécessaire. La taille de l'espace nécessaire est renvoyée. Si no_name vaut 0 et si l'objet a un nom long ou court alors ce nom sera utilisé, sinon la valeur numérique sera utilisée. Si no_name vaut 1 alors la forme numérique sera toujours utilisée.

OBJ_cmp() compare a et b. Si les deux sont identiques, le code de retour sera 0.

OBJ_dup() renvoie une copie de o.

OBJ_create() ajoute un nouvel objet à la table interne. oid est la forme numérique provenant de l'objet, sn le nom court et ln le nom long. Un nouvel NID est renvoyé pour l'objet créé.

OBJ_cleanup() nettoie la table d'objets interne d'OpenSSL : celle-ci devrait être appelée avant qu'une application se termine si un objet a été ajouté en utilisant OBJ_create().

NOTES
Dans OpenSSL, les objets peuvent avoir un nom court, un nom long et un identifiant numérique (NID) qui leur sont associés. Un ensemble d'objets est représenté comme une table interne. Les valeurs appropriées sont définies dans le fichier d'en-tête objects.h.

Par exemple, l'OID pour commonName a les définitions suivantes :

 #define SN_commonName                   "CN"
 #define LN_commonName                   "commonName"
 #define NID_commonName                  13

De nouveaux objets peuvent être ajoutés en appelant OBJ_create().

Les tables ont un certain avantage par rapport aux autres objets : par exemple, leurs NID peuvent être utilisés dans une déclaration de switch en C. Ce sont aussi des objets statiques constants qui sont échangés : il n'y a qu'une unique structure constante pour chaque table.

Les objets n'étant pas dans la table ont NID_undef comme valeur de NID.

Les objets n'ont pas besoin de tables internes pour être traités, les fonctions OBJ_txt2obj() et OBJ_obj2txt() peuvent traiter la forme numérique d'un OID.

EXEMPLES
Créer un objet pour commonName:

 ASN1_OBJECT *o;
 o = OBJ_nid2obj(NID_commonName);

Vérifier si un objet est commonName

 if (OBJ_obj2nid(obj) == NID_commonName)
        /* Faire quelque chose */

Créer un nouveau NID et initialiser un objet à partir de celui-ci :

 int new_nid;
 ASN1_OBJECT *obj;
 new_nid = OBJ_create("1.2.3.4", "NewOID", "New Object Identifier");

 obj = OBJ_nid2obj(new_nid);

Créer directement un nouvel objet :

 obj = OBJ_txt2obj("1.2.3.4", 1);

BOGUES
OBJ_obj2txt() est délicate et compliquée à utiliser : elle ne suit pas les conventions des autres fonctions d'OpenSSL où le tampon peut être mis à NULL pour déterminer la quantité de données qui devraient être écrites. Au lieu de cela buf doit pointer vers un tampon valide et buf_len doit être une valeur positive. Un tampon ayant une longueur de 80 devrait être suffisant pour traiter n'importe quel OID rencontré.

VALEURS DE RETOUR
OBJ_nid2obj() renvoie une structure ASN1_OBJECT ou NULL en cas d'erreur.

OBJ_nid2ln() et OBJ_nid2sn() renvoient une chaîne de caractères valide ou NULL en cas d'erreur.

OBJ_obj2nid(), OBJ_ln2nid(), OBJ_sn2nid() et OBJ_txt2nid() renvoient un NID ou NID_undef en cas d'erreur.

VOIR AUSSI
ERR_get_error(3)

HISTORIQUE
À préciser

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.