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