.\" 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::des 3SSL" .TH fr::crypto::des 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" DES_random_key, DES_set_key, DES_key_sched, DES_set_key_checked, DES_set_key_unchecked, DES_set_odd_parity, DES_is_weak_key, DES_ecb_encrypt, DES_ecb2_encrypt, DES_ecb3_encrypt, DES_ncbc_encrypt, DES_cfb_encrypt, DES_ofb_encrypt, DES_pcbc_encrypt, DES_cfb64_encrypt, DES_ofb64_encrypt, DES_xcbc_encrypt, DES_ede2_cbc_encrypt, DES_ede2_cfb64_encrypt, DES_ede2_ofb64_encrypt, DES_ede3_cbc_encrypt, DES_ede3_cbcm_encrypt, DES_ede3_cfb64_encrypt, DES_ede3_ofb64_encrypt, DES_cbc_cksum, DES_quad_cksum, DES_string_to_key, DES_string_to_2keys, DES_fcrypt, DES_crypt, DES_enc_read, DES_enc_write \- Chiffrement \s-1DES\s0 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& #include \& \& void DES_random_key(DES_cblock *ret); \& \& int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); \& int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); \& int DES_set_key_checked(const_DES_cblock *key, \& DES_key_schedule *schedule); \& void DES_set_key_unchecked(const_DES_cblock *key, \& DES_key_schedule *schedule); \& \& void DES_set_odd_parity(DES_cblock *key); \& int DES_is_weak_key(const_DES_cblock *key); \& \& void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, \& DES_key_schedule *ks, int enc); \& void DES_ecb2_encrypt(const_DES_cblock *input, DES_cblock *output, \& DES_key_schedule *ks1, DES_key_schedule *ks2, int enc); \& void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, \& DES_key_schedule *ks1, DES_key_schedule *ks2, \& DES_key_schedule *ks3, int enc); \& \& void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, \& long length, DES_key_schedule *schedule, DES_cblock *ivec, \& int enc); \& void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, \& int numbits, long length, DES_key_schedule *schedule, \& DES_cblock *ivec, int enc); \& void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, \& int numbits, long length, DES_key_schedule *schedule, \& DES_cblock *ivec); \& void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, \& long length, DES_key_schedule *schedule, DES_cblock *ivec, \& int enc); \& void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, \& long length, DES_key_schedule *schedule, DES_cblock *ivec, \& int *num, int enc); \& void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, \& long length, DES_key_schedule *schedule, DES_cblock *ivec, \& int *num); \& \& void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output, \& long length, DES_key_schedule *schedule, DES_cblock *ivec, \& const_DES_cblock *inw, const_DES_cblock *outw, int enc); \& \& void DES_ede2_cbc_encrypt(const unsigned char *input, \& unsigned char *output, long length, DES_key_schedule *ks1, \& DES_key_schedule *ks2, DES_cblock *ivec, int enc); \& void DES_ede2_cfb64_encrypt(const unsigned char *in, \& unsigned char *out, long length, DES_key_schedule *ks1, \& DES_key_schedule *ks2, DES_cblock *ivec, int *num, int enc); \& void DES_ede2_ofb64_encrypt(const unsigned char *in, \& unsigned char *out, long length, DES_key_schedule *ks1, \& DES_key_schedule *ks2, DES_cblock *ivec, int *num); \& \& void DES_ede3_cbc_encrypt(const unsigned char *input, \& unsigned char *output, long length, DES_key_schedule *ks1, \& DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *ivec, \& int enc); \& void DES_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, \& long length, DES_key_schedule *ks1, DES_key_schedule *ks2, \& DES_key_schedule *ks3, DES_cblock *ivec1, DES_cblock *ivec2, \& int enc); \& void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out, \& long length, DES_key_schedule *ks1, DES_key_schedule *ks2, \& DES_key_schedule *ks3, DES_cblock *ivec, int *num, int enc); \& void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out, \& long length, DES_key_schedule *ks1, \& DES_key_schedule *ks2, DES_key_schedule *ks3, \& DES_cblock *ivec, int *num); \& \& DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, \& long length, DES_key_schedule *schedule, \& const_DES_cblock *ivec); \& DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], \& long length, int out_count, DES_cblock *seed); \& void DES_string_to_key(const char *str, DES_cblock *key); \& void DES_string_to_2keys(const char *str, DES_cblock *key1, \& DES_cblock *key2); \& \& char *DES_fcrypt(const char *buf, const char *salt, char *ret); \& char *DES_crypt(const char *buf, const char *salt); \& \& int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched, \& DES_cblock *iv); \& int DES_enc_write(int fd, const void *buf, int len, \& DES_key_schedule *sched, DES_cblock *iv); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Cette bibliothèque contient une implémentation rapide de l'algorithme de chiffrement \s-1DES.\s0 .PP Il y a deux phases dans l'utilisation du chiffrement \s-1DES.\s0 La première consiste à générer un \fIDES_key_schedule\fR à partir d'une clé, la seconde est le chiffrement réel. Une clé \s-1DES\s0 est du type \fIDES_cblock\fR. Ce type consiste en 8 octets de parité impaire. Le bit de poids le plus faible dans chaque octet est le bit de parité. La préparation de clés « key schedule » est une forme étendue de la clé ; elle est utilisée pour accélérer le processus. .PP \&\fIDES_random_key()\fR génère une clé aléatoire. Le \s-1PRNG\s0 doit être initialisé avant d'utiliser cette fonction (voir \fIrand\fR\|(3)). Si le \s-1PRNG\s0 n'a pu générer une clé sécurisée, le code de retour est 0. .PP Avant qu'une clé \s-1DES\s0 puisse être utilisée, elle doit être convertie en une \&\fIDES_key_schedule\fR dépendant de l’architecture à l’aide de la fonction \&\fIDES_set_key_checked()\fR ou \fIDES_set_key_unchecked()\fR. .PP \&\fIDES_set_key_checked()\fR vérifiera que la clé est de parité impaire et n'est pas une clé faible ou partiellement faible. Si la parité est mauvaise, alors \&\-1 sera renvoyé. Si la clé est faible, alors \-2 sera renvoyé. Si une erreur est renvoyée, alors la préparation de clés ne sera pas faite. .PP \&\fIDES_set_key()\fR fonctionne comme \fIDES_set_key_checked()\fR si le drapeau \&\fIDES_check_key\fR n'est pas 0, sinon elle fonctionne comme \&\fIDES_set_key_unchecked()\fR. Ces fonctions sont disponibles pour la compatibilité ; il est recommandé d'utiliser une fonction qui ne dépend pas d'une variable globale. .PP \&\fIDES_set_odd_parity()\fR change la parité de \fIkey\fR à impaire. .PP \&\fIDES_is_weak_key()\fR renvoie 1 si la clé passée est faible, 0 si elle est forte. .PP Les routines suivantes opèrent sur un flux d'entrée ou de sortie des \&\fIDES_cblock\fR. .PP \&\fIDES_ecb_encrypt()\fR est la routine \s-1DES\s0 de base qui chiffre ou déchiffre séparément des \fIDES_cblock\fR de 8 octets dans le mode \fIelectronic code book\fR (\s-1ECB\s0). Elle transforme toujours les données d’entrée, pointées par \&\fIinput\fR, dans les données de sortie, pointées par l'argument \fIoutput\fR. Si l'argument \fIencrypt\fR est différent de 0 (\s-1DES_ENCRYPT\s0), \fIinput\fR (texte clair) est chiffré dans \fIoutput\fR (texte chiffré) en utilisant le key_schedule spécifié par l'argument \fIschedule\fR, préalablement initialisé par \fIDES_set_key\fR. Si \fIencrypt\fR est 0 (\s-1DES_DECRYPT\s0), \fIinput\fR (maintenant texte chiffré) est déchiffré dans \fIoutput\fR (maintenant texte clair). L'entrée et la sortie peuvent se recouvrir. \fIDES_ecb_encrypt()\fR ne renvoie pas de valeur. .PP \&\fIDES_ecb3_encrypt()\fR chiffre ou déchiffre le bloc \fIinput\fR en utilisant un chiffrement Triple-DES à trois clés dans le mode \s-1ECB.\s0 Cela implique de chiffrer l'entrée avec \fIks1\fR, de déchiffrer avec \fIks2\fR et ensuite de chiffrer avec \fIks3\fR. Cette routine réduit grandement les risques de cassede \&\s-1DES\s0 par force brute et elle a l’avantage que si \fIks1\fR, \fIks2\fR et \fIks3\fR sont les mêmes, cela est équivalent au mode de chiffrement \s-1ECB\s0 avec \fIks1\fR comme clé. .PP La macro \fIDES_ecb2_encrypt()\fR permet d'exécuter un chiffrement Triple-DES à deux clés à l'aide de \fIks1\fR pour le chiffrement final. .PP \&\fIDES_ncbc_encrypt()\fR chiffre ou déchiffre en utilisant le mode \&\fIcipher-block-chaining\fR (\s-1CBC\s0) de \s-1DES.\s0 Si l'argument \fIencrypt\fR est différent de 0, la routine \s-1CBC\s0 chiffre les données pointées par l'argument \&\fIinput\fR dans le texte chiffré pointé par l'argument \fIoutput\fR, en utilisant la préparation des clés fournie par l'argument \fIschedule\fR et le vecteur d'initialisation fourni par l'argument \fIivec\fR. Si la longueur \fIlength\fR de l'argument n'est pas un entier multiple de 8 octets, le dernier bloc est copié dans une zone temporaire et rempli de 0. La sortie est toujours un entier multiple de 8 octets. .PP \&\fIDES_xcbc_encrypt()\fR est le mode \s-1DESX\s0 de \s-1RSA\s0 de \s-1DES.\s0 Elle utilise \fIinw\fR et \&\fIoutw\fR pour durcir le chiffrement. \fIinw\fR et \fIoutw\fR sont secrets (à l'opposé de iv) et font, de ce fait, partie de la clé. Donc, la clé est une sorte de clé de 24 octets. Cela est bien mieux que \s-1CBC DES.\s0 .PP \&\fIDES_ede3_cbc_encrypt()\fR implémente le chiffrement \s-1CBC DES\s0 triple externe avec trois clés. Cela veut dire que chaque opération \s-1DES\s0 à l'intérieur du mode \&\s-1CBC\s0 est un \f(CW\*(C`C=E(ks3,D(ks2,E(ks1,M)))\*(C'\fR. Ce mode est utilisé par \s-1SSL.\s0 .PP La macro \fIDES_ede2_cbc_encrypt()\fR implémente Triple-DES avec deux clés en réutilisant \fIks1\fR pour le chiffrement final \f(CW\*(C`C=E(ks1,D(ks2,E(ks1,M)))\*(C'\fR Cette forme de Triple-DES est utilisée par la bibliothèque \s-1RSAREF.\s0 .PP \&\fIDES_pcbc_encrypt()\fR chiffre ou déchiffre en utilisant le mode de propagation \&\s-1CBC\s0 utilisé par Kerberos v4. Ses paramètres sont identiques à \&\fIDES_ncbc_encrypt()\fR. .PP \&\fIDES_cfb_encrypt()\fR chiffre ou déchiffre en utilisant un mode de chiffrement à rétroaction. Cette méthode prend un tableau de caractères comme entrée et produit un tableau de caractères. Elle ne nécessite pas de formatage pour les groupes de 8 caractères. Note : la variable \fIivec\fR est modifiée et la nouvelle valeur à besoin d'être passée au prochain appel de cette fonction. Comme cette fonction utilise un chiffrement \s-1DES ECB\s0 complet par \&\fInumbits\fR, cette fonction est suggérée uniquement lors de l'envoi de petits nombres de caractères. .PP \&\fIDES_cfb64_encrypt()\fR implémente le mode \s-1CFB\s0 de \s-1DES\s0 avec une rétroaction de 64 bits. Pourquoi est-ce que cela est utile dites-vous ? Parce que cette routine autorise à chiffrer un nombre arbitraire d'octets, sans formatage à 8 octets. Chaque appel à cette routine chiffrera les octets d'entrée vers la sortie puis mettra à jour ivec et num. num contient « la distance » par rapport à ivec. Si cela n'a aucun sens, référez\-vous à la documentation du mode \s-1CFB\s0 de \s-1DES :\-\s0). .PP \&\fIDES_ede3_cfb64_encrypt()\fR et \fIDES_ede2_cfb64_encrypt()\fR sont identiques à \&\fIDES_cfb64_encrypt()\fR sauf que Triple-DES est utilisé. .PP \&\fIDES_ofb_encrypt()\fR chiffre en utilisant le mode de chiffrement à rétroaction. Cette méthode prend un tableau de caractères comme entrée et produit un tableau de caractères. Elle ne nécessite pas de formatage pour les groupes de 8 caractères. Note : la variable \fIivec\fR est modifiée et la nouvelle valeur a besoin d'être passée au prochain appel de cette fonction. Comme cette fonction utilise un chiffrement \s-1DES ECB\s0 complet par \&\fInumbits\fR, cette fonction est suggérée uniquement lors de l'envoi de petits nombres de caractères. .PP \&\fIDES_ofb64_encrypt()\fR est identique à \fIDES_cfb64_encrypt()\fR en utilisant le mode de chiffrement à rétroaction de sortie. .PP \&\fIDES_ede3_ofb64_encrypt()\fR et \fIDES_ede2_ofb64_encrypt()\fR sont identiques à \&\fIDES_ofb64_encrypt()\fR, en utilisant Triple-DES. .PP Les instructions suivantes sont incluses dans la bibliothèque \s-1DES\s0 pour compatibilité avec la bibliothèque Kerberos du \s-1MIT.\s0 .PP \&\fIDES_cbc_cksum()\fR produit une empreinte de 8 octets en se basant sur le flux d'entrée (avec un chiffrement \s-1CBC\s0). Les 4 derniers octets de l'empreinte sont renvoyés et les 8 octets totaux sont placés dans \fIoutput\fR. Cette fonction est utilisée par Kerberos v4. Les autres applications devraient à la place utiliser \fIEVP_DigestInit\fR\|(3), etc. .PP \&\fIDES_quad_cksum()\fR est une fonction de Kerberos v4. Elle renvoie une empreinte de 4 octets à partir des octets d'entrée. Il est possible d'itérer sur l’entrée, selon \fIout_count\fR, 1, 2, 3 ou 4 fois. Si \fIoutput\fR n'est pas \&\s-1NULL,\s0 les 8 octets générés par chaque passage sont écrits dans \fIoutput\fR. .PP Les transformations suivantes sont basées sur \s-1DES :\s0 .PP \&\fIDES_fcrypt()\fR est une version plus rapide de la fonction Unix \fIcrypt\fR\|(3). Cette version n’utilise qu'une petite quantité d'espace par rapport aux autres implémentations \fIcrypt()\fR rapides. Cela est différent du crypt normal dans le fait que le troisième paramètre est le tampon dans lequel la valeur de retour est écrite. Elle a besoin d'avoir au moins 14 octets de long. Cette fonction est à fil sécurisé (« thread-safe ») contrairement à la fonction crypt normale. .PP \&\fIDES_crypt()\fR est un remplacement plus rapide pour le système normal \&\fIcrypt()\fR. Cette fonction appelle \fIDES_fcrypt()\fR avec un tableau statique passé comme troisième paramètre. Cela émule les sémantiques normales, pour les fils non sécurisés, de \fIcrypt\fR\|(3). .PP \&\fIDES_enc_write()\fR écrit \fIlen\fR octets dans un descripteur de fichier \fIfd\fR provenant du tampon \fIbuf\fR. Les données sont chiffrées à l’aide de \&\fIpcbc_encrypt\fR (par défaut) utilisant \fIsched\fR comme clé et \fIiv\fR comme vecteur de début. Les données envoyées à \fIfd\fR consistent en 4 octets (en ordre d'octets du réseau) contenant la longueur des données chiffrées suivantes. Les données chiffrées suivent, formatées avec des données aléatoires basées sur un multiple de 8 octets. .PP \&\fIDES_enc_read()\fR est utilisé pour lire \fIlen\fR octets d'un descripteur de fichier \fIfd\fR dans un tampon \fIbuf\fR. On suppose que les données lues dans \&\fIfd\fR proviennent de \fIDES_enc_write()\fR et sont déchiffrées en utilisant \&\fIsched\fR comme préparation de clés et \fIiv\fR comme vecteur initial. .PP \&\fBAttention :\fR Le format des données utilisées par \fIDES_enc_write()\fR et \&\fIDES_enc_read()\fR a une faiblesse cryptographique : lorsqu'il y a une demande d'écriture de plus de \s-1MAXWRITE\s0 octets, \fIDES_enc_write()\fR découpera les données en plusieurs morceaux qui utilisent tous le même \s-1IV \s0(vecteur d’initialisation). N'utilisez donc pas ces fonctions sauf si vous êtes sûr de savoir ce que vous faites (et même dans ce cas il n'est pas recommandé de s'en servir). Elles ne peuvent pas gérer les sockets non bloquantes. \fIDES_enc_read()\fR utilise un état interne, et de ce fait ne peut être utilisé sur de multiples fichiers. .PP \&\fIDES_rw_mode\fR est utilisé pour spécifier le mode de chiffrement à utiliser avec \fIDES_enc_read()\fR et \fIDES_end_write()\fR. Si défini à \fI\s-1DES_PCBC_MODE\s0\fR (mode par défaut), DES_pcbc_encrypt est utilisé. Si défini à \fI\s-1DES_CBC_MODE\s0\fR alors DES_cbc_encrypt est utilisé. .SH "NOTES" .IX Header "NOTES" \&\s-1DES\s0 avec une seule clé n'est pas sécurisé à cause de la taille de la clé qui est trop courte. Le mode \s-1ECB\s0 n'est pas approprié pour la plupart des applications ; voir \fIdes_modes\fR\|(7). .PP La bibliothèque \fIevp\fR\|(3) fournit des fonctions de chiffrement de plus haut niveau. .SH "BOGUES" .IX Header "BOGUES" \&\fIDES_3cbc_encrypt()\fR présente des défauts et ne doit pas être utilisée dans une application. .PP \&\fIDES_cbc_encrypt()\fR ne modifie pas \fBivec\fR ; à la place utilisez \&\fIDES_ncbc_encrypt()\fR. .PP \&\fIDES_cfb_encrypt()\fR et \fIDES_ofb_encrypt()\fR opèrent sur une entrée de 8 bits. Cela veut dire que si vous mettez numbits à 12, et la longueur à 2, les premiers 12 bits viendront du premier octet d'entrée et la deuxième moitié du deuxième octet d’entrée. Les 12 bits de la deuxième moitié auront leurs 8 derniers bits pris du 3ème octet d’entrée et leurs 4 premiers bits pris du 4ème octet d'entrée. De même pour la sortie. Cette fonction a été implémentée de cette façon parce que la plupart des gens utilisent un multiple de 8 et parce que lorsque qu’il faut séparer récupération et envoi des octets, les choses deviennent délicates ! .PP \&\fIDES_string_to_key()\fR est disponible pour une compatibilité ascendante avec la bibliothèque du \s-1MIT.\s0 Les nouvelles applications devraient utiliser une fonction de hachage cryptographique. Il en va de même pour \&\fIDES_string_to_2key()\fR. .SH "MISE EN CONFORMITÉ" .IX Header "MISE EN CONFORMITÉ" \&\s-1ANSI X3.106\s0 .PP La bibliothèque \fBdes\fR a été écrite pour être compatible d'un point de vue du code source avec la bibliothèque Kerberos du \s-1MIT.\s0 .SH "VOIR AUSSI" .IX Header "VOIR AUSSI" \&\fIcrypt\fR\|(3), \fIdes_modes\fR\|(7), \fIevp\fR\|(3), \fIrand\fR\|(3) .SH "HISTORIQUE" .IX Header "HISTORIQUE" Dans OpenSSL 0.9.7, toutes les fonctions des_ ont été renommées en \s-1DES_\s0 pour éviter tous conflits avec les anciennes versions de libdes. La compatibilité des fonctions des_ est fournie pendant une courte période, il en va de même pour \fIcrypt()\fR. Les déclarations pour celles-ci sont dans . Il n'y a pas de variante \s-1DES_\s0 pour \&\fIdes_random_seed()\fR. La même chose se produira si d'autres fonctions sont jugées redondantes (\fIdes_random_seed()\fR fait juste un appel à \fIRAND_seed()\fR et est uniquement présente pour raisons de compatibilité), boguées ou prévues d'être retirées. .PP \&\fIdes_cbc_cksum()\fR, \fIdes_cbc_encrypt()\fR, \fIdes_ecb_encrypt()\fR, \fIdes_is_weak_key()\fR, \&\fIdes_key_sched()\fR, \fIdes_pcbc_encrypt()\fR, \fIdes_quad_cksum()\fR, \fIdes_random_key()\fR et \&\fIdes_string_to_key()\fR sont disponibles dans la bibliothèque Kerberos du \s-1MIT \s0; \&\fIdes_check_key_parity()\fR, \fIdes_fixup_key_parity()\fR et \fIdes_is_weak_key()\fR sont disponibles dans les versions plus récentes de cette bibliothèque. .PP \&\fIdes_set_key_checked()\fR et \fIdes_set_key_unchecked()\fR ont été ajoutées dans OpenSSL 0.9.5. .PP \&\fIdes_generate_random_block()\fR, \fIdes_init_random_number_generator()\fR, \&\fIdes_new_random_key()\fR, \fIdes_set_random_generator_seed()\fR, \&\fIdes_set_sequence_number()\fR et \fIdes_rand_data()\fR sont utilisées dans les versions plus récentes de Kerberos mais ne sont pas implémentées ici. .PP \&\fIdes_random_key()\fR générait des données aléatoires cryptographiquement faibles dans SSLeay et dans OpenSSL avant la version 0.9.5, de même pour la bibliothèque \s-1MIT\s0 d'origine. .SH "AUTEUR" .IX Header "AUTEUR" Eric Young (eay@cryptsoft.com). Modifications 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.