Provided by: manpages-fr_1.67.0-1_all bug

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);

       Édition des liens avec -lcrypt.

DESCRIPTION

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

       La fonction encrypt() modifie le tampon transmis, en le cryptant si  le
       paramètre  edflag vaut 0, et en le décryptant s’il vaut 1. Le paramètre
       block est, comme le paramètre 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, initialized;
              };
       Avant d’appeler setkey_r(), positionnez data->initialized à zéro.

VALEUR RENVOYÉES

       Ces routines ne renvoient pas de valeur.

ERREURS

       Mettez  errno  à  zéro avant d’appeler les routines ci-dessus. Si elles
       réussissent, elle n’est pas modifiée. Sinon, elle peut valoir :

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

EXEMPLE

       Avec la GlibC 2.2, il faudra lier  cet  exemple  avec  la  bibliothèque
       libcrypt.   Pour  servir  à  quelque  chose,  les tables key[] et txt[]
       devraient être remplies avec des zones significatives. Notez que  l’en-
       tête  <crypt.h> donne toujours les prototypes de setkey() et encrypt().

       #include <crypt.h>

       main() {
         char key[64];      /* bit pattern for key */
         char txt[64];      /* bit pattern for messages */
         setkey(key);
         encrypt(txt, 0);   /* encode */
         encrypt(txt, 1);   /* decode */
       }

NOTE

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

CONFORMITÉ

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

VOIR AUSSI

       cbc_crypt(3) crypt(3) ecb_crypt(3) fcrypt(3)

TRADUCTION

       Christophe Blaess, 2000-2003.