Loading

NOM

       ASN1_generate_nconf, ASN1_generate_v3 - Fonction de génération ASN1

SYNOPSIS

        ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
        ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);

       Ces fonctions génèrent l’encodage ASN1 d’une chaîne dans une structure
       ASN1_TYPE.

       str contient la chaîne à encoder. nconf ou cnf contient les
       informations optionnelles de configuration dans lesquelles d’autres
       chaînes seront lues. nconf proviendra typiquement d’un fichier de
       configuration tandis que cnf est obtenu dans une structure X509V3_CTX
       qui sera typiquement utilisée par les fonctions d’extension de
       certificats X509v3. cnf ou nconf peuvent valoir NULL si aucune
       configuration additionnelle ne sera utilisée.

FORMAT DES CHAÎNES DE GÉNÉRATION

       Les données effectivement encodées sont déterminées par la chaîne str
       et les informations de configuration. Le format général de la chaîne
       est:

       [modificateur,]type[:valeur]

       CV’est-à-dire zéro modificateur ou plus séparés par des virgules suivit
       d’un type, lui-même suivit de façon optionnelle par un signe deux-point
       et une valeur. Les formats de type, valeur et modificateur sont décrits
       ci-dessous.

   TYPES PRIS EN CHARGE
       Les types pris en charge sont listés ci-dessous. À moinsque ce ne soit
       spécifié explicitement, seul le format ASCII est autorisé.

       BOOLEAN, BOOL
         Encoder un type booléen. La chaîne valeur est obligatoire et devrait
         valoir soit TRUE soit FALSE. Les valeurs TRUE, true, Y, y, YES, yes,
         FALSE, false, N, n, NO et no sont acceptées.

       NULL
         Encoder le type NULL, la chaîne valeur ne doit pas être présente.

       INTEGER, INT
         Encoder un type ASN1 INTEGER. La chaîne valeur représente la valeur
         de l’entier. Elle peut être précédée d’un signe moins et est
         normalement interprétée comme une valeur décimale à moins que le
         préfixe 0x soit inclus.

       ENUMERATED, ENUM
         Encoder un type ASN1 ENUMERATED, par ailleur identique à INTEGER.

       OBJECT, OID
         Encoder untype ASN1 OBJECT IDENTIFIER, la chaîne valeur peut être un
         nom court, un nom long ou un format numérique.

       UTCTIME, UTC
         Encoder une structure ASN1 UTCTime. La valeur doit être au format
         AAMMDDHHMMSSZ.

       GENERALIZEDTIME, GENTIME
         Encoder une structure ASN1 GeneralizedTime. La valeur doit être au
         format AAAAMMDDHHMMSSZ.

       OCTETSTRING, OCT
         Encoder un type ASN1 OCTET STRING. La valeur représente le contenu de
         cette structure. Les chaînes de format ASCII et HEX peuvent être
         utilisées pour indiquer le format de valeur.

       BITSTRING, BITSTR
         Encoder un type ASN1 BIT STRING. La valeur représente le contenu de
         cette structure. Les chaînes de format ASCII, HEX et BITLIST peuvent
         être utilisées pour indiquer le format de valeur.

         Si le format diffère de BITLIST, le nombre de bits non utilisés est
         mis à zéro.

       UNIVERSALSTRING, UNIV, IA5, IA5STRING, UTF8, UTF8String, BMP,
       BMPSTRING, VISIBLESTRING, VISIBLE, PRINTABLESTRING, PRINTABLE, T61,
       T61STRING, TELETEXSTRING, GeneralString
         Encoder les types de chaîne correspondant. La valeur représente le
         contenu de cette structure.Le format peut être ASCII ou UTF8.

       SEQUENCE, SEQ, SET
         Formater le résultat en tant que type ASN1 SEQUENCE ou SET. La valeur
         devrait être un nom de section qui contiendra le contenu. Les noms
         des champs de la section sont ignorés et les valeurs sont au format
         de la chaîne générée. Si valeur est absent, alors une SEQUENCE vide
         sera encodée.

   MODIFICATEURS
       Les modificateurs affectent les structures suivantes. Ils peuvent être
       utilisés pour ajouter des étiquettes EXPLICIT ou IMPLICIT, ajouter des
       enveloppes ou changer le format de chaîne du type et de la valeur
       finale. Les formats pris en charge sont documentés ci-dessous.

       EXPLICIT, EXP
         Ajouter une étiquette explicite à la structure suivante. Cette chaîne
         devrait être suivie par un deux-points et la valeur de l’étiquette à
         utiliser sous forme numérique décimale.

         En faisant suivre le nombre d’un U, A, P ou C, une étiquette de type
         UNIVERSAL, APPLICATION, PRIVATE ou CONTEXT SPECIFIC peut être
         utilisée (CONTEXT SPECIFIC par défaut).

       IMPLICIT, IMP
         Identique à EXPLICIT sauf qu’un étiquetage IMPLICIT est utilisé à la
         place.

       OCTWRAP, SEQWRAP, SETWRAP, BITWRAP
         La structure suivante est entourée par une OCTET STRING, une
         SEQUENCE, un SET ou une BIT STRING respectivement. Pour une BIT
         STRING, le nombre de bits non utilisés est mis à zéro.

       FORMAT
         Ceci spécifie le format de la valeur finale. Il devrait être suivi
         par un signe deux-points et une des chaînes ASCII, UTF8, HEX ou
         BITLIST.

         Si aucune chaîne de format n’est inclue alors ASCII est utilisée. Si
         UTF8 est spécifiée alors la chaîne valeur doit être une chaîne UTF8
         correcte. Pour le format HEX la sortie doit être un ensemble de
         chiffres hexadécimaux. BITLIST (qui n’est correct que pour une BIT
         STRING) est la liste des index des bits positionnés séparés par des
         virgules, tous les autres bits valent zéro.

EXEMPLES

       Une IA5String simple:

        IA5STRING:Hello World

       Une IA5String étiquettée explicitement:

        EXPLICIT:0,IA5STRING:Hello World

       Une IA5String étiquettée explicitement et utilisant une étiquette
       APPLICATION:

        EXPLICIT:0A,IA5STRING:Hello World

       Une BITSTRING avec les bits 1 et 5activés et tous les autres à zéro:

        FORMAT=BITLIST,BITSTRING:1,5

       Un exemple plus complexe utilisant un fichier de configuration pour
       produire une SEQUENCE constituée d’un BOOL, d’un OID et d’une
       UTF8String:

        asn1 = SEQUENCE:seq_section

        [seq_section]

        field1 = BOOLEAN:TRUE
        field2 = OID:commonName
        field3 = UTF8:Third field

       Cet exemple produit une structure RSAPrivateKey. Il s’agit de la clé
       contenue dans le fichier client.pem de toute distribution OpenSSL
       (note: les noms des champs comme «coeff» sont ignorés et ne sont
       présent que pour des raisons de clarté.

        asn1=SEQUENCE:private_key
        [private_key]
        version=INTEGER:0

        n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\
        D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9

        e=INTEGER:0x010001

        d=INTEGER:0x6F05EAD2F27FFAEC84BEC360C4B928FD5F3A9865D0FCAAD291E2A52F4A\
        F810DC6373278C006A0ABBA27DC8C63BF97F7E666E27C5284D7D3B1FFFE16B7A87B51D

        p=INTEGER:0xF3929B9435608F8A22C208D86795271D54EBDFB09DDEF539AB083DA912\
        D4BD57

        q=INTEGER:0xC50016F89DFF2561347ED1186A46E150E28BF2D0F539A1594BBD7FE467\
        46EC4F

        exp1=INTEGER:0x9E7D4326C924AFC1DEA40B45650134966D6F9DFA3A7F9D698CD4ABEA\
        9C0A39B9

        exp2=INTEGER:0xBA84003BB95355AFB7C50DF140C60513D0BA51D637272E355E397779\
        E7B2458F

        coeff=INTEGER:0x30B9E4F2AFA5AC679F920FC83F1F2DF1BAF1779CF989447FABC2F5\
        628657053A

       Cet exemple est la clé publique correspondante dan,s une structure
       SubjectPublicKeyInfo:

        # Start with a SEQUENCE
        asn1=SEQUENCE:pubkeyinfo

        # pubkeyinfo contains an algorithm identifier and the public key wrapped
        # in a BIT STRING
        [pubkeyinfo]
        algorithm=SEQUENCE:rsa_alg
        pubkey=BITWRAP,SEQUENCE:rsapubkey

        # algorithm ID for RSA is just an OID and a NULL
        [rsa_alg]
        algorithm=OID:rsaEncryption
        parameter=NULL

        # Actual public key: modulus and exponent
        [rsapubkey]
        n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\
        D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9

        e=INTEGER:0x010001

VALEURS DE RETOUR

       ASN1_generate_nconf() et ASN1_generate_v3() renvoient les données
       encodées sous la forme d’une structure ASN1_TYPE ou NULL si une erreur
       est survenue.

       Les codes d’erreur peuvent être obtenus avec ERR_get_error(3).

VOIR AUSSI

       ERR_get_error(3)

HISTORIQUE

       ASN1_generate_nconf() et ASN1_generate_v3() ont été ajoutées dans la
       version 0.9.8 d’OpenSSL.

0.9.8k                            2010-05fr::crypto::ASN1_generate_nconf(3SSL)