dsa(3) Algorithme de signature numérique

SYNOPSIS

#include <openssl/dsa.h>
 #include <openssl/engine.h>

DSA * DSA_new(void);

 void   DSA_free(DSA *dsa);

int   DSA_size(const DSA *dsa);

DSA * DSA_generate_parameters(int bits, unsigned char *seed,

                int seed_len int *counter_ret, unsigned long *h_ret,
                void (*callback)(int, int, void *), void *cb_arg);

DH *  DSA_dup_DH(const DSA *r);

int   DSA_generate_key(DSA *dsa);

int   DSA_sign(int dummy, const unsigned char *dgst, int len,

                unsigned char *sigret, unsigned int *siglenDSA *dsa);

 int    DSA_sign_setup(DSA *dsaBN_CTX *ctxBIGNUM **kinvp,

                BIGNUM **rp);

 int    DSA_verify(int dummy, const unsigned char *dgst, int len,

                const unsigned char *sigbuf, int siglenDSA *dsa);

void DSA_set_default_method(const DSA_METHOD *meth);
 const DSA_METHOD *DSA_get_default_method(void);
 int DSA_set_method(DSA *dsa, const DSA_METHOD *meth);
 DSA *DSA_new_method(ENGINE *engine);
 const DSA_METHOD *DSA_OpenSSL(void);

int DSA_get_ex_new_index(long argl, char *argp, int (*new_func)(),
             int (*dup_func)(), void (*free_func)());

 int DSA_set_ex_data(DSA *d, int idx, char *arg);
 char *DSA_get_ex_data(DSA *d, int idx);

DSA_SIG *DSA_SIG_new(void);
 void   DSA_SIG_free(DSA_SIG *a);

 int    i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);

 DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, unsigned char **pp, long length);

DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
 int    DSA_do_verify(const unsigned char *dgst, int dgst_len,

             DSA_SIG *sigDSA *dsa);

DSA * d2i_DSAPublicKey(DSA **a, unsigned char **pp, long length);

 DSA *  d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length);

 DSA *  d2i_DSAparams(DSA **a, unsigned char **pp, long length);

 int    i2d_DSAPublicKey(const DSA *a, unsigned char **pp);

 int    i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);

 int    i2d_DSAparams(const DSA *a,unsigned char **pp);

int   DSAparams_print(BIO *bp, const DSA *x);

 int    DSAparams_print_fp(FILE *fp, const DSA *x);

 int    DSA_print(BIO *bp, const DSA *x, int off);

 int    DSA_print_fp(FILE *bp, const DSA *x, int off);

DESCRIPTION

Ces fonctions implémentent l’algorithme de signature numérique (DSA). La création de paramètres DSA partagés est décrite dans DSA_generate_parameters(3) ; DSA_generate_key(3) décrit la façon de créer une signature de clef. La création et la vérification de signature sont décrites dans DSA_sign(3).

La structure DSA est constituée de plusieurs composants BIGNUM.

 struct
        {
        BIGNUM *p;              // nombre premier (public)
        BIGNUM *q;              // sous-premier (p-1) 160 bits,
                                // q | p-1 (public)
        BIGNUM *g;              // générateur de sous-groupe (public)
        BIGNUM *priv_key;       // clef privée x
        BIGNUM *pub_key;        // clef privée y = g^x
        // ...
        }
 DSA;

Dans les clefs publiques, priv_key est NULL.

Remarquez que les clefs DSA pourraient utiliser des implémentations de DSA_METHOD non standards, soit directement, soit en utilisant des modules ENGINE. Dans certains cas (par exemple un ENGINE prenant en charge les clefs protégées matériellement), ces valeurs de BIGNUM ne seront pas utilisées par l’implémentation ou pourraient être utilisées pour le stockage de données alternatives. Pour cette raison, les applications devraient normalement éviter d’utiliser directement des éléments de structure DSA et utiliser à la place les fonctions d’interface de programmation pour demander ou modifier des clefs.

CONFORMITÉ À

US Federal Information Processing Standard FIPS 186 (Digital Signature Standard, DSS), ANSI X9.30

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.