Loading

NOM

       encrypt, setkey, encrypt_r, setkey_r - Crypter des messages de 64 bits

SYNOPSIS

       #define _XOPEN_SOURCE
       #include <unistd.h>

       void encrypt(char block[64], int edflag);

       #define _XOPEN_SOURCE
       #include <stdlib.h>

       void setkey(const char *key);

       #define _GNU_SOURCE
       #include <crypt.h>

       void setkey_r(const char *key, struct crypt_data *data);
       void encrypt_r(char *block, int edflag, struct crypt_data *data);

       Effectuez l’édition des liens avec l’option -lcrypt.

       Ces  fonctions  chiffrent  et  déchiffrent  des messages de 64 bits. La
       fonction setkey() permet de fournir la clef à utiliser pour  encrypt().
       L’argument  key est une table de 64 octets, chacun ayant la valeur 0 ou
       1. L’octet key[n] où n=8*i-1 est ignoré, ce qui ramène  la  clef  à  56
       bits effectifs.

       La  fonction  encrypt()  modifie  le  tampon transmis, en l’encodant si
       l’argument edflag vaut 0, et en le décodant  s’il  vaut  1.  L’argument
       block  est,  comme  l’argument  key,  une représentation de la valeur à
       encoder sous forme de vecteur de bits. Le résultat est renvoyé dans  le
       même vecteur.

       Ces  fonctions  ne  sont pas ré-entrantes, c’est-à-dire que la clef est
       stockée dans une zone de stockage statique. Les fonctions setkey_r() et
       encrypt_r()   sont   des  versions  ré-entrantes.  Elles  utilisent  la
       structure suivante pour contenir la clef :

           struct crypt_data {
               char     keysched[16 * 8];
               char     sb0[32768];
               char     sb1[32768];
               char     sb2[32768];
               char     sb3[32768];
               char     crypt_3_buf[14];
               char     current_salt[2];
               long int current_saltbits;
               int      direction;
               int      initialized;
           };

       Avant d’appeler setkey_r(), définissez data->initialized à zéro.

VALEUR RENVOYÉE

       Ces routines ne renvoient pas de valeur.

ERREURS

       Définissez errno à zéro avant d’appeler  les  fonctions  ci-dessus.  Si
       elles réussissent, errno n’est pas modifiée.

       ENOSYS La  fonction  n’est  pas  disponible.  (Par  exemple à cause des
              restrictions   américaines   sur   l’exportation   de   routines
              cryptographiques...)

CONFORMITÉ

       Les  fonctions  encrypt()  et setkey() sont conformes à SVr4, SUSv2, et
       POSIX.1-2001.  Les  fonctions  encrypt_r()  et  setkey_r()   sont   des
       extensions GNU.

NOTES

       Dans la glibc 2.2, ces fonctions utilisent l’algorithme DES.

EXEMPLE

       Il faut lier cet exemple avec la bibliothèque libcrypt pour le compiler
       avec la glibc. Pour servir à quelque chose, les tables key[]  et  txt[]
       devraient être initialisées avec des valeurs significatives.

       #define _XOPEN_SOURCE
       #include <unistd.h>
       #include <stdlib.h>

       int
       main(void)
       {
           char key[64];      /* bit pattern for key */
           char txt[64];      /* bit pattern for messages */

           setkey(key);
           encrypt(txt, 0);   /* encode */
           encrypt(txt, 1);   /* decode */
       }

VOIR AUSSI

       cbc_crypt(3), crypt(3), ecb_crypt(3), feature_test_macros(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».

                                 4 avril 2003