Provided by:
manpages-fr-extra_20101103_all 
NOM
ASN1_generate_nconf, ASN1_generate_v3 - Fonction de generation ASN1
SYNOPSIS
ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
DESCRIPTION
Ces fonctions generent l'encodage ASN1 d'une chaine dans une structure
ASN1_TYPE.
str contient la chaine a encoder. nconf ou cnf contient les
informations optionnelles de configuration dans lesquelles d'autres
chaines seront lues. nconf proviendra typiquement d'un fichier de
configuration tandis que cnf est obtenu dans une structure X509V3_CTX
qui sera typiquement utilisee par les fonctions d'extension de
certificats X509v3. cnf ou nconf peuvent valoir NULL si aucune
configuration additionnelle ne sera utilisee.
FORMAT DES CHA^INES DE G'EN'ERATION
Les donnees effectivement encodees sont determinees par la chaine str
et les informations de configuration. Le format general de la chaine
est:
[modificateur,]type[:valeur]
CV'est-a-dire zero modificateur ou plus separes par des virgules suivit
d'un type, lui-meme suivit de facon optionnelle par un signe deux-point
et une valeur. Les formats de type, valeur et modificateur sont decrits
ci-dessous.
TYPES PRIS EN CHARGE
Les types pris en charge sont listes ci-dessous. A moinsque ce ne soit
specifie explicitement, seul le format ASCII est autorise.
BOOLEAN, BOOL
Encoder un type booleen. La chaine 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 acceptees.
NULL
Encoder le type NULL, la chaine valeur ne doit pas etre presente.
INTEGER, INT
Encoder un type ASN1 INTEGER. La chaine valeur represente la valeur
de l'entier. Elle peut etre precedee d'un signe moins et est
normalement interpretee comme une valeur decimale a moins que le
prefixe 0x soit inclus.
ENUMERATED, ENUM
Encoder un type ASN1 ENUMERATED, par ailleur identique a INTEGER.
OBJECT, OID
Encoder untype ASN1 OBJECT IDENTIFIER, la chaine valeur peut etre un
nom court, un nom long ou un format numerique.
UTCTIME, UTC
Encoder une structure ASN1 UTCTime. La valeur doit etre au format
AAMMDDHHMMSSZ.
GENERALIZEDTIME, GENTIME
Encoder une structure ASN1 GeneralizedTime. La valeur doit etre au
format AAAAMMDDHHMMSSZ.
OCTETSTRING, OCT
Encoder un type ASN1 OCTET STRING. La valeur represente le contenu de
cette structure. Les chaines de format ASCII et HEX peuvent etre
utilisees pour indiquer le format de valeur.
BITSTRING, BITSTR
Encoder un type ASN1 BIT STRING. La valeur represente le contenu de
cette structure. Les chaines de format ASCII, HEX et BITLIST peuvent
etre utilisees pour indiquer le format de valeur.
Si le format differe de BITLIST, le nombre de bits non utilises est
mis a zero.
UNIVERSALSTRING, UNIV, IA5, IA5STRING, UTF8, UTF8String, BMP,
BMPSTRING, VISIBLESTRING, VISIBLE, PRINTABLESTRING, PRINTABLE, T61,
T61STRING, TELETEXSTRING, GeneralString
Encoder les types de chaine correspondant. La valeur represente le
contenu de cette structure.Le format peut etre ASCII ou UTF8.
SEQUENCE, SEQ, SET
Formater le resultat en tant que type ASN1 SEQUENCE ou SET. La valeur
devrait etre un nom de section qui contiendra le contenu. Les noms
des champs de la section sont ignores et les valeurs sont au format
de la chaine generee. Si valeur est absent, alors une SEQUENCE vide
sera encodee.
MODIFICATEURS
Les modificateurs affectent les structures suivantes. Ils peuvent etre
utilises pour ajouter des etiquettes EXPLICIT ou IMPLICIT, ajouter des
enveloppes ou changer le format de chaine du type et de la valeur
finale. Les formats pris en charge sont documentes ci-dessous.
EXPLICIT, EXP
Ajouter une etiquette explicite a la structure suivante. Cette chaine
devrait etre suivie par un deux-points et la valeur de l'etiquette a
utiliser sous forme numerique decimale.
En faisant suivre le nombre d'un U, A, P ou C, une etiquette de type
UNIVERSAL, APPLICATION, PRIVATE ou CONTEXT SPECIFIC peut etre
utilisee (CONTEXT SPECIFIC par defaut).
IMPLICIT, IMP
Identique a EXPLICIT sauf qu'un etiquetage IMPLICIT est utilise a la
place.
OCTWRAP, SEQWRAP, SETWRAP, BITWRAP
La structure suivante est entouree par une OCTET STRING, une
SEQUENCE, un SET ou une BIT STRING respectivement. Pour une BIT
STRING, le nombre de bits non utilises est mis a zero.
FORMAT
Ceci specifie le format de la valeur finale. Il devrait etre suivi
par un signe deux-points et une des chaines ASCII, UTF8, HEX ou
BITLIST.
Si aucune chaine de format n'est inclue alors ASCII est utilisee. Si
UTF8 est specifiee alors la chaine valeur doit etre une chaine UTF8
correcte. Pour le format HEX la sortie doit etre un ensemble de
chiffres hexadecimaux. BITLIST (qui n'est correct que pour une BIT
STRING) est la liste des index des bits positionnes separes par des
virgules, tous les autres bits valent zero.
EXEMPLES
Une IA5String simple:
IA5STRING:Hello World
Une IA5String etiquettee explicitement:
EXPLICIT:0,IA5STRING:Hello World
Une IA5String etiquettee explicitement et utilisant une etiquette
APPLICATION:
EXPLICIT:0A,IA5STRING:Hello World
Une BITSTRING avec les bits 1 et 5actives et tous les autres a zero:
FORMAT:BITLIST,BITSTRING:1,5
Un exemple plus complexe utilisant un fichier de configuration pour
produire une SEQUENCE constituee 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 cle
contenue dans le fichier client.pem de toute distribution OpenSSL
(note: les noms des champs comme <<coeff>> sont ignores et ne sont
present que pour des raisons de clarte.
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 cle 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 donnees
encodees sous la forme d'une structure ASN1_TYPE ou NULL si une erreur
est survenue.
Les codes d'erreur peuvent etre obtenus avec ERR_get_error(3).
VOIR AUSSI
ERR_get_error(3)
HISTORIQUE
ASN1_generate_nconf() et ASN1_generate_v3() ont ete ajoutees dans la
version 0.9.8 d'OpenSSL.
0.9.8n 2010-11fr::crypto::ASN1_generate_nconf(3SSL)