ASN1_generate_nconf, ASN1_generate_v3
Fonction de génération ASN1
- Provided by: manpages-fr-extra (Version: 20151231)
- Report a bug
Fonction de génération ASN1
#include <openssl/asn1.h>
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 contiennent les renseignements facultatifs 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 supplémentaire n'est 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 :
C'est-à-dire zéro modificateur ou plus, séparés par des virgules, suivis d'un type, lui-même suivi de façon facultative par un deux-points et une valeur. Les formats de type, valeur et modificateur sont décrits ci-dessous.
Les types pris en charge sont décrits ci-dessous. À moins que ce ne soit indiqué explicitement, seul le format ASCII est autorisé.
Si le format diffère de BITLIST, le nombre de bits non utilisés est mis à zéro.
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.
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).
Si aucune chaîne de format n'est incluse, ASCII est utilisée. Si UTF8 est indiqué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.
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 (remarque : les noms des champs comme « coeff » sont ignorés et ne sont présents que par souci 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 publique : module et exposant [rsapubkey] n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\ D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9 e=INTEGER:0x010001
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).
ASN1_generate_nconf() et ASN1_generate_v3() ont été ajoutées dans la version 0.9.8 d'OpenSSL.
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.