.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "fr::crypto::ecdsa 3SSL" .TH fr::crypto::ecdsa 3SSL "2015-12-31" "1.0.2a 1.0.2c" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NOM" .IX Header "NOM" ECDSA_SIG_new, ECDSA_SIG_free, i2d_ECDSA_SIG, d2i_ECDSA_SIG, ECDSA_size, ECDSA_sign_setup, ECDSA_sign, ECDSA_sign_ex, ECDSA_verify, ECDSA_do_sign, ECDSA_do_sign_ex, ECDSA_do_verify \- Algorithme de signature numérique utilisant les courbes elliptiques .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fB #include \fR .PP \&\fB ECDSA_SIG* ECDSA_SIG_new(void);\fR \fBvoid ECDSA_SIG_free(\s-1ECDSA_SIG\s0 *\fR\fIsig\fR\fB);\fR \fBint i2d_ECDSA_SIG(const \s-1ECDSA_SIG\s0 *\fR\fIsig\fR\fB, unsigned char **\fR\fIpp\fR\fB);\fR \fBECDSA_SIG* d2i_ECDSA_SIG(\s-1ECDSA_SIG\s0 **\fR\fIsig\fR\fB, const unsigned char **\fR\fIpp\fR\fB,\fR \fBlong\fR \fIlen\fR\fB);\fR .PP \&\fB ECDSA_SIG* ECDSA_do_sign(const unsigned char *\fR\fIdgst\fR\fB, int\fR \fIdgst_len\fR\fB,\fR \fB\s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR \fBECDSA_SIG* ECDSA_do_sign_ex(const unsigned char *\fR\fIdgst\fR\fB, int\fR \fIdgstlen\fR\fB,\fR \fBconst \s-1BIGNUM\s0 *\fR\fIkinv\fR\fB, const \s-1BIGNUM\s0 *\fR\fIrp\fR\fB,\fR \fB\s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR \fBint ECDSA_do_verify(const unsigned char *\fR\fIdgst\fR\fB, int\fR \fIdgst_len\fR\fB,\fR \fBconst \s-1ECDSA_SIG\s0 *\fR\fIsig\fR\fB, \s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR \fBint ECDSA_sign_setup(\s-1EC_KEY\s0 *\fR\fIeckey\fR\fB, \s-1BN_CTX\s0 *\fR\fIctx\fR\fB,\fR \fB\s-1BIGNUM\s0 **\fR\fIkinv\fR\fB, \s-1BIGNUM\s0 **\fR\fIrp\fR\fB);\fR \fBint ECDSA_sign(int\fR \fItype\fR\fB, const unsigned char *\fR\fIdgst\fR\fB,\fR \fBint\fR \fIdgstlen\fR\fB, unsigned char *\fR\fIsig\fR\fB,\fR \fBunsigned\fR \fIint *\fR\fIsiglen\fR\fB, \s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR \fBint ECDSA_sign_ex(int\fR \fItype\fR\fB, const unsigned char *\fR\fIdgst\fR\fB,\fR \fBint\fR \fIdgstlen\fR\fB, unsigned char *\fR\fIsig\fR\fB,\fR \fBunsigned int *\fR\fIsiglen\fR\fB, const \s-1BIGNUM\s0 *\fR\fIkinv\fR\fB,\fR \fBconst \s-1BIGNUM\s0 *\fR\fIrp\fR\fB, \s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR \fBint ECDSA_verify(int\fR \fItype\fR\fB, const unsigned char *\fR\fIdgst\fR\fB,\fR \fBint\fR \fIdgstlen\fR\fB, const unsigned char *\fR\fIsig\fR\fB,\fR \fBint\fR \fIsiglen\fR\fB, \s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR \fBint ECDSA_size(const \s-1EC_KEY\s0 *\fR\fIeckey\fR\fB);\fR .PP \&\fB const ECDSA_METHOD* ECDSA_OpenSSL(void);\fR \fBvoid ECDSA_set_default_method(const \s-1ECDSA_METHOD\s0 *\fR\fImeth\fR\fB);\fR \fBconst ECDSA_METHOD* ECDSA_get_default_method(void);\fR \fBint ECDSA_set_method(\s-1EC_KEY\s0 *\fR\fIeckey\fR\fB,const \s-1ECDSA_METHOD\s0 *\fR\fImeth\fR\fB);\fR .PP \&\fB int ECDSA_get_ex_new_index(long argl, void *\fR\fIargp\fR\fB,\fR \fBCRYPTO_EX_new *\fR\fInew_func\fR\fB,\fR \fBCRYPTO_EX_dup *\fR\fIdup_func\fR\fB,\fR \fBCRYPTO_EX_free *\fR\fIfree_func\fR\fB);\fR \fBint ECDSA_set_ex_data(\s-1EC_KEY\s0 *\fR\fId\fR\fB, int\fR \fIidx\fR\fB, void *\fR\fIarg\fR\fB);\fR \fBvoid* ECDSA_get_ex_data(\s-1EC_KEY\s0 *\fR\fId\fR\fB, int\fR \fIidx\fR\fB);\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" La structure \fB\s-1ECDSA_SIG\s0\fR est constituée de deux \s-1BIGNUM\s0 pour les valeurs \&\fIr\fR et \fIs\fR d’une signature \s-1ECDSA \s0(consultez X9.62 ou \s-1FIPS 186\-2\s0). .PP .Vb 5 \& struct \& { \& BIGNUM *r; \& BIGNUM *s; \& } ECDSA_SIG; .Ve .PP \&\fBECDSA_SIG_new\fR() alloue une nouvelle structure \fB\s-1ECDSA_SIG\s0\fR (remarque : cette fonction alloue aussi les \s-1BIGNUM\s0) et l’initialise. .PP \&\fBECDSA_SIG_free\fR() libère la structure \fB\s-1ECDSA_SIG\s0\fR \fIsig\fR. .PP \&\fBi2d_ECDSA_SIG\fR() crée l’encodage \s-1DER\s0 de la signature \s-1ECDSA \s0\fIsig\fR et écrit la signature encodée dans \fB*\fR\fIpp\fR (remarque : si \fIpp\fR est \s-1NULL, \&\s0\fBi2d_ECDSA_SIG\fR renvoie la taille attendue en octet de la signature encodée \&\s-1DER \s0(ou \fB0\fR en cas d’erreur). .PP \&\fBd2i_ECDSA_SIG\fR() décode une signature \s-1ECDSA\s0 encodée \s-1DER\s0 et renvoie la signature décodée dans une structure \fB\s-1ECDSA_SIG\s0\fR nouvellement allouée. \fB*\fR\fIsig\fR pointe vers le tampon contenant la signature encodée \s-1DER\s0 de taille \fIlen\fR. .PP \&\fBECDSA_size\fR() renvoie la taille maximale d’une signature \s-1ECDSA\s0 encodée \s-1DER\s0 créée avec la clef privée \fIeckey\fR. .PP \&\fBECDSA_sign_setup\fR() pourrait être utilisée pour précalculer des parties de l’opération de signature. \fIeckey\fR est la clef privée \s-1EC\s0 et \fIctx\fR est un pointeur vers la structure \fI\s-1BN_CTX\s0\fR (ou \s-1NULL\s0). Les valeurs précalculées ou renvoyées dans \fIkinv\fR et \fIrp\fR peuvent être utilisées dans un appel suivant de \fBECDSA_sign_ex\fR ou \fBECDSA_do_sign_ex\fR. .PP \&\fBECDSA_sign\fR() est une fonction enveloppe pour \fBECDSA_sign_ex\fR avec \&\fIkinv\fR et \fIrp\fR définies à \s-1NULL.\s0 .PP \&\fBECDSA_sign_ex\fR() calcule une signature numérique de la valeur de hachage \&\fIdgst\fR, de \fIdgstlen\fR octets, en utilisant la clef privée \s-1EC \s0\fIeckey\fR et les valeurs précalculées facultatives \fIkinv\fR et \fIrp\fR. La signature encodée \&\s-1DER\s0 est stockée dans \fIsig\fR et sa taille est renvoyée dans \&\fIsig_len\fR. Remarque : \fIsig\fR doit pointer vers \fBECDSA_size\fR octets de mémoire. Le paramètre \fItype\fR est ignoré. .PP \&\fBECDSA_verify\fR() vérifie que la signature dans \fIsig\fR de taille \fIsiglen\fR est une signature \s-1ECDSA\s0 valable de la valeur de hachage \fIdgst\fR de taille \&\fIdgstlen\fR en utilisant la clef publique \fIeckey\fR. Le paramètre \fItype\fR est ignoré. .PP \&\fBECDSA_do_sign\fR() est une fonction enveloppe pour \fBECDSA_do_sign_ex\fR avec \&\fIkinv\fR et \fIrp\fR définies à \s-1NULL.\s0 .PP \&\fBECDSA_do_sign_ex\fR() calcule une signature numérique de la valeur de hachage \fIdgst\fR, de \fIdgstlen\fR octets, en utilisant la clef privée \fIeckey\fR et les valeurs précalculées facultatives \fIkinv\fR et \fIrp\fR. La signature est renvoyée dans une structure \fB\s-1ECDSA_SIG\s0\fR nouvellement allouée (ou \s-1NULL\s0 en cas d’erreur). .PP \&\fBECDSA_do_verify\fR() vérifie que la signature \fIsig\fR est une signature \s-1ECDSA\s0 valable de la valeur de hachage \fIdgst\fR de taille \fIdgst_len\fR en utilisant la clef publique \fIeckey\fR. .SH "VALEURS DE RETOUR" .IX Header "VALEURS DE RETOUR" \&\fBECDSA_size\fR() renvoie la taille maximale de signature ou \fB0\fR en cas d’erreur. .PP \&\fBECDSA_sign_setup\fR() et \fBECDSA_sign\fR() renvoient \fB1\fR en cas de réussite ou \fB0\fR en cas d’erreur. .PP \&\fBECDSA_verify\fR() et \fBECDSA_do_verify\fR() renvoient \fB1\fR pour une signature valable, \fB0\fR pour une signature incorrecte ou \fB\-1\fR en cas d’erreur. Les codes d’erreur peuvent être obtenus par \&\fBERR_get_error\fR(3). .SH "EXEMPLES" .IX Header "EXEMPLES" Création d’une signature \s-1ECDSA\s0 d’une valeur de hachage \s-1SHA\-1\s0 donnée en utilisant la courbe secp192k1 donnée. .PP Première étape : créer un objet \s-1EC_KEY \s0(remarque : cette partie n’est \fBpas\fR spécifique à \s-1ECDSA\s0) .PP .Vb 12 \& int ret; \& ECDSA_SIG *sig; \& EC_KEY *eckey; \& eckey = EC_KEY_new_by_curve_name(NID_secp192k1); \& if (eckey == NULL) \& { \& /* erreur */ \& } \& if (!EC_KEY_generate_key(eckey)) \& { \& /* erreur */ \& } .Ve .PP Deuxième étape : calculer la signature \s-1ECDSA\s0 d’une valeur de hachage \s-1SHA\-1\s0 en utilisant \fBECDSA_do_sign\fR .PP .Vb 5 \& sig = ECDSA_do_sign(digest, 20, eckey); \& if (sig == NULL) \& { \& /* erreur */ \& } .Ve .PP ou en utilisant \fBECDSA_sign\fR .PP .Vb 9 \& unsigned char *buffer, *pp; \& int buf_len; \& buf_len = ECDSA_size(eckey); \& buffer = OPENSSL_malloc(buf_len); \& pp = buffer; \& if (!ECDSA_sign(0, dgst, dgstlen, pp, &buf_len, eckey); \& { \& /* erreur */ \& } .Ve .PP Troisième étape : vérifier la signature \s-1ECDSA\s0 créée en utilisant \&\fBECDSA_do_verify\fR .PP .Vb 1 \& ret = ECDSA_do_verify(digest, 20, sig, eckey); .Ve .PP ou en utilisant \fBECDSA_verify\fR .PP .Vb 1 \& ret = ECDSA_verify(0, digest, 20, buffer, buf_len, eckey); .Ve .PP et enfin évaluer la valeur de retour : .PP .Vb 12 \& if (ret == \-1) \& { \& /* erreur */ \& } \& else if (ret == 0) \& { \& /* signature incorrecte */ \& } \& else /* ret == 1 */ \& { \& /* signature correcte*/ \& } .Ve .SH "CONFORMITÉ À" .IX Header "CONFORMITÉ À" \&\s-1ANSI X9.62, US\s0 Federal Information Processing Standard \s-1FIPS 186\-2 \s0(Digital Signature Standard, \s-1DSS\s0) .SH "VOIR AUSSI" .IX Header "VOIR AUSSI" \&\fBdsa\fR(3), \fBrsa\fR(3) .SH "HISTORIQUE" .IX Header "HISTORIQUE" L’implémentation ecdsa a été introduite pour la première fois dans OpenSSL 0.9.8 .SH "AUTEUR" .IX Header "AUTEUR" Nils Larsch pour le projet OpenSSL (http://www.openssl.org). .SH "TRADUCTION" .IX Header "TRADUCTION" La traduction de cette page de manuel est maintenue par les membres de la liste . Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.