NOM¶
ASN1_generate_nconf, ASN1_generate_v3 - Fonction de génération ASN1
SYNOPSIS¶
#include <openssl/asn1.h>
ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
DESCRIPTION¶
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 X509 v3.
cnf ou
nconf peuvent
valoir
NULL si aucune configuration additionnelle ne sera
utilisée.
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]
C'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. À moins que ce ne
soit indiqué 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 un type 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, NUMERICSTRING,
NUMERIC
- 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
- Indique 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 incluse alors ASCII est
utilisée. Si UTF8 est indiqué 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:Salut le monde
Une IA5String étiquetée explicitement :
EXPLICIT:0,IA5STRING:Salut le monde
Une IA5String étiquetée explicitement et utilisant une étiquette
APPLICATION :
EXPLICIT:0A,IA5STRING:Salut le monde
Une BITSTRING avec les bits 1 et 5 activé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:Troisième champ
Cet exemple produit une structure RSAPrivateKey. Il s'agit de la clef 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 clef publique correspondante dans une structure
SubjectPublicKeyInfo :
# Commencer par une SEQUENCE
asn1=SEQUENCE:pubkeyinfo
# pubkeyinfo contient un identificateur d'algorithme et la clef publique
# enveloppés dans une BIT STRING
[pubkeyinfo]
algorithm=SEQUENCE:rsa_alg
pubkey=BITWRAP,SEQUENCE:rsapubkey
# l'identifiant d'algorithme pour RSA est un simple OID et un NULL
[rsa_alg]
algorithm=OID:rsaEncryption
parameter=NULL
# Véritable clef S<publique :> module et exposant
[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.
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.