Bonjour, proposition de traduction de deux pages de manuel de EVP. Fichiers nouvellement traduits et construits joints. Merci d’avance pour vos relectures. -- Jean-Paul
Attachment:
EVP_DigestInit.3ssl
Description: Binary data
Attachment:
EVP_DigestSignInit.3ssl
Description: Binary data
#. type: textblock #: C/crypto/EVP_DigestInit.pod:5 msgid "" "EVP_MD_CTX_init, EVP_MD_CTX_create, EVP_DigestInit_ex, EVP_DigestUpdate, " "EVP_DigestFinal_ex, EVP_MD_CTX_cleanup, EVP_MD_CTX_destroy, EVP_MAX_MD_SIZE, " "EVP_MD_CTX_copy_ex, EVP_MD_CTX_copy, EVP_MD_type, EVP_MD_pkey_type, " "EVP_MD_size, EVP_MD_block_size, EVP_MD_CTX_md, EVP_MD_CTX_size, " "EVP_MD_CTX_block_size, EVP_MD_CTX_type, EVP_md_null, EVP_md2, EVP_md5, " "EVP_sha, EVP_sha1, EVP_sha224, EVP_sha256, EVP_sha384, EVP_sha512, EVP_dss, " "EVP_dss1, EVP_mdc2, EVP_ripemd160, EVP_get_digestbyname, " "EVP_get_digestbynid, EVP_get_digestbyobj - EVP digest routines" msgstr "" "EVP_MD_CTX_init, EVP_MD_CTX_create, EVP_DigestInit_ex, EVP_DigestUpdate, " "EVP_DigestFinal_ex, EVP_MD_CTX_cleanup, EVP_MD_CTX_destroy, EVP_MAX_MD_SIZE, " "EVP_MD_CTX_copy_ex, EVP_MD_CTX_copy, EVP_MD_type, EVP_MD_pkey_type, " "EVP_MD_size, EVP_MD_block_size, EVP_MD_CTX_md, EVP_MD_CTX_size, " "EVP_MD_CTX_block_size, EVP_MD_CTX_type, EVP_md_null, EVP_md2, EVP_md5, " "EVP_sha, EVP_sha1, EVP_sha224, EVP_sha256, EVP_sha384, EVP_sha512, EVP_dss, " "EVP_dss1, EVP_mdc2, EVP_ripemd160, EVP_get_digestbyname, " "EVP_get_digestbynid, EVP_get_digestbyobj - Routines EVP dâ??algorithme de " "hachage" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:18 #, no-wrap msgid "" " void EVP_MD_CTX_init(EVP_MD_CTX *ctx);\n" " EVP_MD_CTX *EVP_MD_CTX_create(void);\n" "\n" msgstr "" "B< void EVP_MD_CTX_init(EVP_MD_CTX *>I<ctx>B<);>\n" " B<EVP_MD_CTX *EVP_MD_CTX_create(void);>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:21 #, no-wrap msgid "" " int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);\n" " int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);\n" " int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md,\n" " unsigned int *s);\n" "\n" msgstr "" "B< int EVP_DigestInit_ex(EVP_MD_CTX *>I<ctx>B<, const EVP_MD *>I<type>B<, ENGINE *>I<impl>B<);>\n" " B<int EVP_DigestUpdate(EVP_MD_CTX *>I<ctx>B<, const void *>I<d>B<, size_t> I<cnt>B<);>\n" " B<int EVP_DigestFinal_ex(EVP_MD_CTX *>I<ctx>B<, unsigned char *>I<md>B<,>\n" " B<unsigned int *>I<s>B<);>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:26 #, no-wrap msgid "" " int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);\n" " void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);\n" "\n" msgstr "" "B< int EVP_MD_CTX_cleanup(EVP_MD_CTX *>I<ctx>B<);>\n" " B<void EVP_MD_CTX_destroy(EVP_MD_CTX *>I<ctx>B<);>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:29 #, no-wrap msgid "" " int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out,const EVP_MD_CTX *in); \n" "\n" msgstr "" "B< int EVP_MD_CTX_copy_ex(EVP_MD_CTX *>I<out>B<,const EVP_MD_CTX *>I<in>B<);> \n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:31 #, no-wrap msgid "" " int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);\n" " int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md,\n" " unsigned int *s);\n" "\n" msgstr "" "B< int EVP_DigestInit(EVP_MD_CTX *>I<ctx>B<, const EVP_MD *>I<type>B<);>\n" " B<int EVP_DigestFinal(EVP_MD_CTX *>I<ctx>B<, unsigned char *>I<md>B<,>\n" " B<unsigned int *>I<s>B<);>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:35 #, no-wrap msgid "" " int EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in); \n" "\n" msgstr "" "B< int EVP_MD_CTX_copy(EVP_MD_CTX *>I<out>B<,EVP_MD_CTX *>I<in>B<);> \n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:37 #, no-wrap msgid "" " #define EVP_MAX_MD_SIZE 64\t/* SHA512 */\n" "\n" msgstr "" "B< #define EVP_MAX_MD_SIZE 64\t/* SHA512 *>/\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:39 #, no-wrap msgid "" " int EVP_MD_type(const EVP_MD *md);\n" " int EVP_MD_pkey_type(const EVP_MD *md);\t\n" " int EVP_MD_size(const EVP_MD *md);\n" " int EVP_MD_block_size(const EVP_MD *md);\n" "\n" msgstr "" "B< int EVP_MD_type(const EVP_MD *>I<md>B<);>\n" " B<int EVP_MD_pkey_type(const EVP_MD *>I<md>B<);>\t\n" " B<int EVP_MD_size(const EVP_MD *>I<md>B<);>\n" " B<int EVP_MD_block_size(const EVP_MD *>I<md>B<)>;\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:44 #, no-wrap msgid "" " const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);\n" " #define EVP_MD_CTX_size(e)\t\tEVP_MD_size(EVP_MD_CTX_md(e))\n" " #define EVP_MD_CTX_block_size(e)\tEVP_MD_block_size((e)->digest)\n" " #define EVP_MD_CTX_type(e)\t\tEVP_MD_type((e)->digest)\n" "\n" msgstr "" "B< const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *>I<ctx>B<);>\n" " B<#define EVP_MD_CTX_size(e)\t\tEVP_MD_size(EVP_MD_CTX_md(e))>\n" " B<#define EVP_MD_CTX_block_size(e)\tEVP_MD_block_size((e)-E<gt>digest)>\n" " B<#define EVP_MD_CTX_type(e)\t\tEVP_MD_type((e)-E<gt>digest)>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:49 #, no-wrap msgid "" " const EVP_MD *EVP_md_null(void);\n" " const EVP_MD *EVP_md2(void);\n" " const EVP_MD *EVP_md5(void);\n" " const EVP_MD *EVP_sha(void);\n" " const EVP_MD *EVP_sha1(void);\n" " const EVP_MD *EVP_dss(void);\n" " const EVP_MD *EVP_dss1(void);\n" " const EVP_MD *EVP_mdc2(void);\n" " const EVP_MD *EVP_ripemd160(void);\n" "\n" msgstr "" "B< const EVP_MD *EVP_md_null(void);>\n" " B<const EVP_MD *EVP_md2(void);>\n" " B<const EVP_MD *EVP_md5(void);>\n" " B<const EVP_MD *EVP_sha(void);>\n" " B<const EVP_MD *EVP_sha1(void);>\n" " B<const EVP_MD *EVP_dss(void);>\n" " B<const EVP_MD *EVP_dss1(void);>\n" " B<const EVP_MD *EVP_mdc2(void);>\n" " B<const EVP_MD *EVP_ripemd160(void);>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:59 #, no-wrap msgid "" " const EVP_MD *EVP_sha224(void);\n" " const EVP_MD *EVP_sha256(void);\n" " const EVP_MD *EVP_sha384(void);\n" " const EVP_MD *EVP_sha512(void);\n" "\n" msgstr "" "B< const EVP_MD *EVP_sha224(void);>\n" " B<const EVP_MD *EVP_sha256(void);>\n" " B<const EVP_MD *EVP_sha384(void);>\n" " B<const EVP_MD *EVP_sha512(void);>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:64 #, no-wrap msgid "" " const EVP_MD *EVP_get_digestbyname(const char *name);\n" " #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))\n" " #define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))\n" "\n" msgstr "" "B< const EVP_MD *EVP_get_digestbyname(const char *>I<name>B<);>\n" " B<#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))>\n" " B<#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))>\n" "\n" #. type: textblock #: C/crypto/EVP_DigestInit.pod:70 msgid "The EVP digest routines are a high level interface to message digests." msgstr "" "Les routines EVP pour algorithme de hachage sont des interfaces de haut " "niveau pour les condensés de message." #. type: textblock #: C/crypto/EVP_DigestInit.pod:72 msgid "EVP_MD_CTX_init() initializes digest context B<ctx>." msgstr "" "B<EVP_MD_CTX_init>() initialise le contexte I<ctx> du condensé de message." #. type: textblock #: C/crypto/EVP_DigestInit.pod:74 msgid "" "EVP_MD_CTX_create() allocates, initializes and returns a digest context." msgstr "" "B<EVP_MD_CTX_create>() alloue, initialise et renvoie un contexte de condensé " "de message." #. type: textblock #: C/crypto/EVP_DigestInit.pod:76 msgid "" "EVP_DigestInit_ex() sets up digest context B<ctx> to use a digest B<type> " "from ENGINE B<impl>. B<ctx> must be initialized before calling this " "function. B<type> will typically be supplied by a functionsuch as " "EVP_sha1(). If B<impl> is NULL then the default implementation of digest " "B<type> is used." msgstr "" "B<EVP_DigestInit_ex>() définit un contexte de condensé de message I<ctx> " "pour utiliser un I<type> dâ??algorithme à partir de lâ??ENGINE I<impl>. I<ctx> " "doit être initialisé avant dâ??appeler cette fonction. I<type> est " "habituellement fourni par une fonction telle que B<EVP_sha1>(). Si I<impl> " "est NULL, alors lâ??implantation du I<type> par défaut est utilisée." #. type: textblock #: C/crypto/EVP_DigestInit.pod:81 msgid "" "EVP_DigestUpdate() hashes B<cnt> bytes of data at B<d> into the digest " "context B<ctx>. This function can be called several times on the same B<ctx> " "to hash additional data." msgstr "" "B<EVP_DigestUpdate>() produit un hachage de I<cnt> octets de données vers " "I<d> dans le contexte de condensé de message I<ctx>. Cette fonction peut " "être appelée plusieurs fois pour produire un hachage de données " "supplémentaires." #. type: textblock #: C/crypto/EVP_DigestInit.pod:85 msgid "" "EVP_DigestFinal_ex() retrieves the digest value from B<ctx> and places it in " "B<md>. If the B<s> parameter is not NULL then the number of bytes of data " "written (i.e. the length of the digest) will be written to the integer at " "B<s>, at most B<EVP_MAX_MD_SIZE> bytes will be written. After calling " "EVP_DigestFinal_ex() no additional calls to EVP_DigestUpdate() can be made, " "but EVP_DigestInit_ex() can be called to initialize a new digest operation." msgstr "" "B<EVP_DigestFinal_ex>() récupère la valeur de condensé de message de I<ctx> " "et le place dans I<md>. Si le paramètre I<s> nâ??est pas NULL, le nombre " "dâ??octets de données sera écrit (câ??est-à -dire la dimension du condensé de " "message) sur I<s> (de type entier), au maximum B<EVP_MAX_MD_SIZE> octets " "seront écrits. Après lâ??appel de B<EVP_DigestFinal_ex>(), aucun appel " "supplémentaire à B<EVP_DigestUpdate>() ne pourra être fait, mais " "B<EVP_DigestInit_ex>() pourra être appelée pour initialiser une nouvelle " "opération de condensé de message." #. type: textblock #: C/crypto/EVP_DigestInit.pod:93 msgid "" "EVP_MD_CTX_cleanup() cleans up digest context B<ctx>, it should be called " "after a digest context is no longer needed." msgstr "" "B<EVP_MD_CTX_cleanup>() nettoie le contexte I<ctx> du condensé de message et " "devrait être appelée si ce contexte nâ??est plus nécessaire." #. type: textblock #: C/crypto/EVP_DigestInit.pod:96 msgid "" "EVP_MD_CTX_destroy() cleans up digest context B<ctx> and frees up the space " "allocated to it, it should be called only on a context created using " "EVP_MD_CTX_create()." msgstr "" "B<EVP_MD_CTX_destroy>() nettoie le contexte I<ctx> du condensé de message et " "libère lâ??espace qui lui était alloué. Elle devrait être appelée seulement " "pour un contexte créé en utilisant B<EVP_MD_CTX_create>()." #. type: textblock #: C/crypto/EVP_DigestInit.pod:100 msgid "" "EVP_MD_CTX_copy_ex() can be used to copy the message digest state from B<in> " "to B<out>. This is useful if large amounts of data are to be hashed which " "only differ in the last few bytes. B<out> must be initialized before calling " "this function." msgstr "" "B<EVP_MD_CTX_copy_ex>() peut être utilisé pour copier lâ??état du condensé de " "message de I<in> vers I<out>. Cela est utile si le hachage de grandes " "quantités de données, qui différent seulement par leurs derniers octets, est " "à réaliser. I<out> doit être initialisée avant dâ??appeler cette fonction." #. type: textblock #: C/crypto/EVP_DigestInit.pod:105 msgid "" "EVP_DigestInit() behaves in the same way as EVP_DigestInit_ex() except the " "passed context B<ctx> does not have to be initialized, and it always uses " "the default digest implementation." msgstr "" "B<EVP_DigestInit>() fonctionne comme B<EVP_DigestInit_ex>() sauf que le " "contexte indiqué I<ctx> nâ??a nul besoin dâ??être initialisé et quâ??elle utilise " "toujours lâ??algorithme implanté par défaut." #. type: textblock #: C/crypto/EVP_DigestInit.pod:109 msgid "" "EVP_DigestFinal() is similar to EVP_DigestFinal_ex() except the digest " "context B<ctx> is automatically cleaned up." msgstr "" "B<EVP_DigestFinal>() est similaire à B<EVP_DigestFinal_ex>() sauf que le " "contexte du condensé de message I<ctx> est automatiquement nettoyé." #. type: textblock #: C/crypto/EVP_DigestInit.pod:112 msgid "" "EVP_MD_CTX_copy() is similar to EVP_MD_CTX_copy_ex() except the destination " "B<out> does not have to be initialized." msgstr "" "B<EVP_MD_CTX_copy>() est similaire à B<EVP_MD_CTX_copy_ex>() sauf que la " "destination I<out> ne doit pas être initialisée." #. type: textblock #: C/crypto/EVP_DigestInit.pod:115 msgid "" "EVP_MD_size() and EVP_MD_CTX_size() return the size of the message digest " "when passed an B<EVP_MD> or an B<EVP_MD_CTX> structure, i.e. the size of the " "hash." msgstr "" "B<EVP_MD_size>() et B<EVP_MD_CTX_size>() renvoient la taille dâ??un condensé " "de message lorsquâ??il est fourni à une structure B<EVP_MD> ou B<EVP_MD_CTX>, " "câ??est-à -dire la taille de lâ??empreinte numérique." #. type: textblock #: C/crypto/EVP_DigestInit.pod:119 msgid "" "EVP_MD_block_size() and EVP_MD_CTX_block_size() return the block size of the " "message digest when passed an B<EVP_MD> or an B<EVP_MD_CTX> structure." msgstr "" "B<EVP_MD_block_size>() et B<EVP_MD_CTX_block_size>() renvoient la taille de " "bloc du condensé de message lorsquâ??il est fourni à une structure B<EVP_MD> " "ou B<EVP_MD_CTX>." #. type: textblock #: C/crypto/EVP_DigestInit.pod:122 msgid "" "EVP_MD_type() and EVP_MD_CTX_type() return the NID of the OBJECT IDENTIFIER " "representing the given message digest when passed an B<EVP_MD> structure. " "For example EVP_MD_type(EVP_sha1()) returns B<NID_sha1>. This function is " "normally used when setting ASN1 OIDs." msgstr "" "B<EVP_MD_type>() et B<EVP_MD_CTX_type>() renvoient le NID de OBJECT " "IDENTIFIER représentant le condensé de message indiqué lorsquâ??il est fourni " "à une structure B<EVP_MD>. Par exemple, B<EVP_MD_type(EVP_sha1>() renvoie " "B<NID_sha1>. Cette fonction est généralement utilisée pour définir les " "OID ASN1." #. type: textblock #: C/crypto/EVP_DigestInit.pod:127 msgid "" "EVP_MD_CTX_md() returns the B<EVP_MD> structure corresponding to the passed " "B<EVP_MD_CTX>." msgstr "" "B<EVP_MD_CTX_md>() renvoie la structure B<EVP_MD> correspondant à celle " "fournie : B<EVP_MD_CTX>." #. type: textblock #: C/crypto/EVP_DigestInit.pod:130 msgid "" "EVP_MD_pkey_type() returns the NID of the public key signing algorithm " "associated with this digest. For example EVP_sha1() is associated with RSA " "so this will return B<NID_sha1WithRSAEncryption>. Since digests and " "signature algorithms are no longer linked this function is only retained for " "compatibility reasons." msgstr "" "B<EVP_MD_pkey_type>() renvoie le NID de la clef publique signant " "lâ??algorithme associé avec ce condensé de message. Par exemple, B<EVP_sha1>() " "est associée avec RSA, et renverra B<NID_sha1WithRSAEncryption>. Puisque " "les condensés de message et les algorithmes ne sont plus liés, cette " "fonction nâ??est plus conservée que pour des raisons de compatibilité." #. type: textblock #: C/crypto/EVP_DigestInit.pod:136 msgid "" "EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_sha224(), EVP_sha256(), " "EVP_sha384(), EVP_sha512(), EVP_mdc2() and EVP_ripemd160() return B<EVP_MD> " "structures for the MD2, MD5, SHA, SHA1, SHA224, SHA256, SHA384, SHA512, MDC2 " "and RIPEMD160 digest algorithms respectively." msgstr "" "B<EVP_md2>(), B<EVP_md5>(), B<EVP_sha>(), B<EVP_sha1>(), B<EVP_sha224>(), " "B<EVP_sha256>(), B<EVP_sha384>(), B<EVP_sha512>(), B<EVP_mdc2>() et " "B<EVP_ripemd160>() renvoient des structures B<EVP_MD> pour leurs algorithmes " "respectifs : MD2, MD5, SHA, SHA1, SHA224, SHA256, SHA384, SHA512, MDC2 ou " "RIPEMD160." #. type: textblock #: C/crypto/EVP_DigestInit.pod:141 msgid "" "EVP_dss() and EVP_dss1() return B<EVP_MD> structures for SHA and SHA1 digest " "algorithms but using DSS (DSA) for the signature algorithm. Note: there is " "no need to use these pseudo-digests in OpenSSL 1.0.0 and later, they are " "however retained for compatibility." msgstr "" "B<EVP_dss>() et B<EVP_dss1>() renvoient des structures B<EVP_MD> structures " "pour leurs algorithmes de hachage SHA et SHA1 en utilisant DSS (DSA) comme " "algorithme de signature. Remarque : il nâ??est nul besoin dâ??utiliser ces " "pseudo-condensés de message dans OpenSSL 1.0.0 ou postérieur ; ces fonctions " "ne sont plus conservées que pour des raisons de compatibilité." #. type: textblock #: C/crypto/EVP_DigestInit.pod:146 msgid "" "EVP_md_null() is a \"null\" message digest that does nothing: i.e. the hash " "it returns is of zero length." msgstr "" "B<EVP_md_null>() est un condensé de message « null » sans aucun effet : " "câ??est-à -dire la valeur renvoyée est de longueur zéro." #. type: textblock #: C/crypto/EVP_DigestInit.pod:149 msgid "" "EVP_get_digestbyname(), EVP_get_digestbynid() and EVP_get_digestbyobj() " "return an B<EVP_MD> structure when passed a digest name, a digest NID or an " "ASN1_OBJECT structure respectively. The digest table must be initialized " "using, for example, OpenSSL_add_all_digests() for these functions to work." msgstr "" "B<EVP_get_digestbyname>(), B<EVP_get_digestbynid>() et " "B<EVP_get_digestbyobj>() renvoient une structure B<EVP_MD> lorsque sont " "fournis un nom dâ??algorithme de hachage, un NID ou une structure ASN1_OBJECT, " "respectivement. La table du hachage doit être initialisée en utilisant, par " "exemple, B<OpenSSL_add_all_digests>() pour que ces fonctions agissent." #. type: textblock #: C/crypto/EVP_DigestInit.pod:156 msgid "" "EVP_DigestInit_ex(), EVP_DigestUpdate() and EVP_DigestFinal_ex() return 1 " "for success and 0 for failure." msgstr "" "B<EVP_DigestInit_ex>(), B<EVP_DigestUpdate>() et B<EVP_DigestFinal_ex>() " "renvoient B<1> en cas de réussite et B<0> en cas dâ??échec." #. type: textblock #: C/crypto/EVP_DigestInit.pod:159 msgid "EVP_MD_CTX_copy_ex() returns 1 if successful or 0 for failure." msgstr "" "B<EVP_MD_CTX_copy_ex>() renvoie B<1> en cas de réussite et B<0> en cas " "dâ??échec." #. type: textblock #: C/crypto/EVP_DigestInit.pod:161 msgid "" "EVP_MD_type(), EVP_MD_pkey_type() and EVP_MD_type() return the NID of the " "corresponding OBJECT IDENTIFIER or NID_undef if none exists." msgstr "" "B<EVP_MD_type>(), B<EVP_MD_pkey_type>() et B<EVP_MD_type>() renvoient le NID " "du OBJECT IDENTIFIER correspondant ou B<NID_undef> si absent." #. type: textblock #: C/crypto/EVP_DigestInit.pod:164 msgid "" "EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size() and " "EVP_MD_CTX_block_size() return the digest or block size in bytes." msgstr "" "B<EVP_MD_size>(), B<EVP_MD_block_size>(), B<EVP_MD_CTX_size>() et " "B<EVP_MD_CTX_block_size>() renvoient les tailles de condensé de message ou " "de bloc en octet." #. type: textblock #: C/crypto/EVP_DigestInit.pod:167 msgid "" "EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), " "EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return pointers to the " "corresponding EVP_MD structures." msgstr "" "B<EVP_md_null>(), B<EVP_md2>(), B<EVP_md5>(), B<EVP_sha>(), B<EVP_sha1>(), " "B<EVP_dss>(), B<EVP_dss1>(), B<EVP_mdc2>() et B<EVP_ripemd160>() renvoient " "des pointeurs vers les structures B<EVP_MD> correspondantes." #. type: textblock #: C/crypto/EVP_DigestInit.pod:171 msgid "" "EVP_get_digestbyname(), EVP_get_digestbynid() and EVP_get_digestbyobj() " "return either an B<EVP_MD> structure or NULL if an error occurs." msgstr "" "B<EVP_get_digestbyname>(), B<EVP_get_digestbynid>() et " "B<EVP_get_digestbyobj>() renvoient soit une structure B<EVP_MD> ou NULL en " "cas dâ??erreur." #. type: textblock #: C/crypto/EVP_DigestInit.pod:176 msgid "" "The B<EVP> interface to message digests should almost always be used in " "preference to the low level interfaces. This is because the code then " "becomes transparent to the digest used and much more flexible." msgstr "" "Lâ??interface B<EVP> pour les condensés de message devrait presque toujours " "être utilisée de préférence aux interfaces de bas niveau. Cela est ainsi " "parce que le code devient évident pour lâ??algorithme de hachage utilisé et " "bien plus souple." #. type: textblock #: C/crypto/EVP_DigestInit.pod:180 msgid "" "New applications should use the SHA2 digest algorithms such as SHA256. The " "other digest algorithms are still in common use." msgstr "" "Les nouvelles applications devraient utiliser les algorithmes de hachage " "SHA2 tels que SHA256. Les autres algorithmes de hachage sont encore " "communément utilisés." #. type: textblock #: C/crypto/EVP_DigestInit.pod:183 msgid "" "For most applications the B<impl> parameter to EVP_DigestInit_ex() will be " "set to NULL to use the default digest implementation." msgstr "" "Pour la plupart des applications, le paramètre B<impl> pour " "B<EVP_DigestInit_ex>() doit être défini à NULL pour utiliser lâ??implantation " "par défaut de condensé de message." #. type: textblock #: C/crypto/EVP_DigestInit.pod:186 msgid "" "The functions EVP_DigestInit(), EVP_DigestFinal() and EVP_MD_CTX_copy() are " "obsolete but are retained to maintain compatibility with existing code. New " "applications should use EVP_DigestInit_ex(), EVP_DigestFinal_ex() and " "EVP_MD_CTX_copy_ex() because they can efficiently reuse a digest context " "instead of initializing and cleaning it up on each call and allow non " "default implementations of digests to be specified." msgstr "" "Les fonctions B<EVP_DigestInit>(), B<EVP_DigestFinal>() et " "B<EVP_MD_CTX_copy>() sont obsolètes mais sont conservées pour compatibilité " "avec le code existant. Les nouvelles applications devraient utiliser " "B<EVP_DigestInit_ex>(), B<EVP_DigestFinal_ex>() et B<EVP_MD_CTX_copy_ex>() " "car elles peuvent, de manière efficace, utiliser de nouveau un contexte de " "condensé de message au lieu de lâ??initialiser et le nettoyer à chaque appel, " "et permettent aux implantations non installées de lâ??être." #. type: textblock #: C/crypto/EVP_DigestInit.pod:193 msgid "" "In OpenSSL 0.9.7 and later if digest contexts are not cleaned up after use " "memory leaks will occur." msgstr "" "Dans OpenSSL 0.9.7 et postérieur, si un contexte de condensé de message " "nâ??est pas nettoyé après son utilisation, une fuite de mémoire se produira." #. type: textblock #: C/crypto/EVP_DigestInit.pod:196 msgid "Stack allocation of EVP_MD_CTX structures is common, for example:" msgstr "" "Lâ??allocation de mémoire pour des structures B<EVP_MD_CTX> est courant, par " "exemple :" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:198 #, no-wrap msgid "" " EVP_MD_CTX mctx;\n" " EVP_MD_CTX_init(&mctx);\n" "\n" msgstr "" " EVP_MD_CTX mctx;\n" " EVP_MD_CTX_init(&mctx);\n" "\n" #. type: textblock #: C/crypto/EVP_DigestInit.pod:201 msgid "" "This will cause binary compatibility issues if the size of EVP_MD_CTX " "structure changes (this will only happen with a major release of OpenSSL). " "Applications wishing to avoid this should use EVP_MD_CTX_create() instead:" msgstr "" "Cela conduira à des problèmes de compatibilité si la taille de la structure " "B<EVP_MD_CTX> change (cela ne peut arriver que lors dâ??une nouvelle mise à " "jour majeure dâ??OpenSSL). Les applications souhaitant éviter ce problème " "doivent plutôt utiliser B<EVP_MD_CTX_create>() :" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:205 #, no-wrap msgid "" " EVP_MD_CTX *mctx;\n" " mctx = EVP_MD_CTX_create();\n" "\n" msgstr "" " EVP_MD_CTX *mctx;\n" " mctx = EVP_MD_CTX_create();\n" "\n" #. type: =head1 #: C/crypto/EVP_DigestInit.pod:209 msgid "EXAMPLE" msgstr "EXEMPLE" #. type: textblock #: C/crypto/EVP_DigestInit.pod:211 msgid "" "This example digests the data \"Test Message\\n\" and \"Hello World\\n\", " "using the digest name passed on the command line." msgstr "" "Cet exemple hache les données « Message de test\n" " » et « Hello World\n" " », en utilisant le nom dâ??algorithme de hachage fourni sur la ligne de " "commande." #. type: verbatim #: C/crypto/EVP_DigestInit.pod:214 #, no-wrap msgid "" " #include <stdio.h>\n" " #include <openssl/evp.h>\n" "\n" msgstr "" " #include <stdio.h>\n" " #include <openssl/evp.h>\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:217 #, no-wrap msgid "" " main(int argc, char *argv[])\n" " {\n" " EVP_MD_CTX *mdctx;\n" " const EVP_MD *md;\n" " char mess1[] = \"Test Message\\n\";\n" " char mess2[] = \"Hello World\\n\";\n" " unsigned char md_value[EVP_MAX_MD_SIZE];\n" " int md_len, i;\n" "\n" msgstr "" " main(int argc, char *argv[])\n" " {\n" " EVP_MD_CTX *mdctx;\n" " const EVP_MD *md;\n" " char mess1[] = \"Message de test\\n\";\n" " char mess2[] = \"Hello World\\n\";\n" " unsigned char md_value[EVP_MAX_MD_SIZE];\n" " int md_len, i;\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:226 #, no-wrap msgid "" " OpenSSL_add_all_digests();\n" "\n" msgstr "" " OpenSSL_add_all_digests();\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:228 #, no-wrap msgid "" " if(!argv[1]) {\n" " \tprintf(\"Usage: mdtest digestname\\n\");\n" "\texit(1);\n" " }\n" "\n" msgstr "" " if(!argv[1]) {\n" " \tprintf(\"Usage : mdtest digestname\\n\");\n" "\tB<exit>(1);\n" " }\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:233 #, no-wrap msgid "" " md = EVP_get_digestbyname(argv[1]);\n" "\n" msgstr "" " md = EVP_get_digestbyname(argv[1]);\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:235 #, no-wrap msgid "" " if(!md) {\n" " \tprintf(\"Unknown message digest %s\\n\", argv[1]);\n" "\texit(1);\n" " }\n" "\n" msgstr "" " if(!md) {\n" " \tprintf(\"Algorithme de hachage inconnu %s\\n\", argv[1]);\n" "\tB<exit>(1);\n" " }\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:240 #, no-wrap msgid "" " mdctx = EVP_MD_CTX_create();\n" " EVP_DigestInit_ex(mdctx, md, NULL);\n" " EVP_DigestUpdate(mdctx, mess1, strlen(mess1));\n" " EVP_DigestUpdate(mdctx, mess2, strlen(mess2));\n" " EVP_DigestFinal_ex(mdctx, md_value, &md_len);\n" " EVP_MD_CTX_destroy(mdctx);\n" "\n" msgstr "" " mdctx = EVP_MD_CTX_create();\n" " EVP_DigestInit_ex(mdctx, md, NULL);\n" " EVP_DigestUpdate(mdctx, mess1, strlen(mess1));\n" " EVP_DigestUpdate(mdctx, mess2, strlen(mess2));\n" " EVP_DigestFinal_ex(mdctx, md_value, &md_len);\n" " EVP_MD_CTX_destroy(mdctx);\n" "\n" #. type: verbatim #: C/crypto/EVP_DigestInit.pod:247 #, no-wrap msgid "" " printf(\"Digest is: \");\n" " for(i = 0; i < md_len; i++) printf(\"%02x\", md_value[i]);\n" " printf(\"\\n\");\n" " }\n" "\n" msgstr "" " printf(\"Digest is: \");\n" " for(i = 0; i < md_len; i++) printf(\"%02x\", md_value[i]);\n" " printf(\"\\n\");\n" " }\n" "\n" #. type: textblock #: C/crypto/EVP_DigestInit.pod:254 msgid "" "L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, L<md5(3)|md5(3)>, " "L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>, L<sha(3)|sha(3)>, L<dgst(1)|" "dgst(1)>" msgstr "" "L<B<evp>(3)|evp(3)>, L<B<hmac>(3)|hmac(3)>, L<B<md2>(3)|md2(3)>, L<B<md5>(3)|" "md5(3)>, L<B<mdc2>(3)|mdc2(3)>, L<B<ripemd>(3)|ripemd(3)>, L<B<sha>(3)|" "sha(3)>, L<B<dgst>(1)|dgst(1)>" #. type: textblock #: C/crypto/EVP_DigestInit.pod:260 msgid "" "EVP_DigestInit(), EVP_DigestUpdate() and EVP_DigestFinal() are available in " "all versions of SSLeay and OpenSSL." msgstr "" "B<EVP_DigestInit>(), B<EVP_DigestUpdate>() et B<EVP_DigestFinal>() sont " "disponibles dans toutes les versions de SSLeay et OpenSSL." #. type: textblock #: C/crypto/EVP_DigestInit.pod:263 msgid "" "EVP_MD_CTX_init(), EVP_MD_CTX_create(), EVP_MD_CTX_copy_ex(), " "EVP_MD_CTX_cleanup(), EVP_MD_CTX_destroy(), EVP_DigestInit_ex() and " "EVP_DigestFinal_ex() were added in OpenSSL 0.9.7." msgstr "" "B<EVP_MD_CTX_init>(), B<EVP_MD_CTX_create>(), B<EVP_MD_CTX_copy_ex>(), " "B<EVP_MD_CTX_cleanup>(), B<EVP_MD_CTX_destroy>(), B<EVP_DigestInit_ex>() et " "B<EVP_DigestFinal_ex>() ont été ajoutées dans OpenSSL 0.9.7." #. type: textblock #: C/crypto/EVP_DigestInit.pod:267 msgid "" "EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), " "EVP_dss1(), EVP_mdc2() and EVP_ripemd160() were changed to return truely " "const EVP_MD * in OpenSSL 0.9.7." msgstr "" "B<EVP_md_null>(), B<EVP_md2>(), B<EVP_md5>(), B<EVP_sha>(), B<EVP_sha1>(), " "B<EVP_dss>(), B<EVP_dss1>(), B<EVP_mdc2>() et B<EVP_ripemd160>() ont été " "modifiées pour renvoyer correctement I<const EVP_MD *> dans OpenSSL 0.9.7." #. type: textblock #: C/crypto/EVP_DigestInit.pod:271 msgid "" "The link between digests and signing algorithms was fixed in OpenSSL 1.0 and " "later, so now EVP_sha1() can be used with RSA and DSA, there is no need to " "use EVP_dss1() any more." msgstr "" "Le problème de lien entre les algorithmes de condensé de message et de " "signature a été corrigé dans OpenSSL 1.0 et postérieur, et maintenant " "B<EVP_sha1>() peut être utilisée avec RSA et DSA ; B<EVP_dss1>() nâ??est plus " "nécessaire." #. type: textblock #: C/crypto/EVP_DigestInit.pod:275 msgid "" "OpenSSL 1.0 and later does not include the MD2 digest algorithm in the " "default configuration due to its security weaknesses." msgstr "" "OpenSSL 1.0 et postérieurs nâ??intègrent pas lâ??algorithme de hachage MD2 dans " "leur configuration par défaut à cause de problème de faiblesse."
#. type: textblock #: C/crypto/EVP_DigestSignInit.pod:5 msgid "" "EVP_DigestSignInit, EVP_DigestSignUpdate, EVP_DigestSignFinal - EVP signing " msgstr "" "EVP_DigestSignInit, EVP_DigestSignUpdate, EVP_DigestSignFinal - Fonctions " "EVP dâ??empreinte numérique" #. type: verbatim #: C/crypto/EVP_DigestSignInit.pod:11 #, no-wrap msgid "" " int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,\n" "\t\t\tconst EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);\n" " int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);\n" " int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen);\n" "\n" msgstr "" "B< int EVP_DigestSignInit(EVP_MD_CTX *>I<ctx>B<, EVP_PKEY_CTX **>I<pctx>B<,>\n" " \t\t\tB<const EVP_MD *>I<type>B<, ENGINE *e, EVP_PKEY *>I<pkey>B<);>\n" " B<int EVP_DigestSignUpdate(EVP_MD_CTX *>I<ctx>B<, const void *>I<d>B<, unsigned int cnt);>\n" " B<int EVP_DigestSignFinal(EVP_MD_CTX *>I<ctx>B<, unsigned char *>I<sig>B<, size_t *>I<siglen>B<);>\n" "\n" #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:18 C/crypto/EVP_DigestVerifyInit.pod:18 #: C/crypto/EVP_SignInit.pod:21 msgid "" "The EVP signature routines are a high level interface to digital signatures." msgstr "" "Les routines de signature EVP constituent une interface de haut niveau pour " "les signatures numériques." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:20 msgid "" "EVP_DigestSignInit() sets up signing context B<ctx> to use digest B<type> " "from ENGINE B<impl> and private key B<pkey>. B<ctx> must be initialized with " "EVP_MD_CTX_init() before calling this function. If B<pctx> is not NULL the " "EVP_PKEY_CTX of the signing operation will be written to B<*pctx>: this can " "be used to set alternative signing options." msgstr "" "B<EVP_DigestSignInit>() définit de contexte de signature I<ctx> à utiliser " "avec le B<type> dâ??empreinte numérique à partir de lâ??ENGINE I<impl> et la " "clef privée I<pkey>. I<ctx> doit être initialisé avec B<EVP_MD_CTX_init>() " "avant lâ??appel de cette fonction. Si <pctx> nâ??est pas NULL, B<EVP_PKEY_CTX> " "de cette opération de signature sera écrit dans I<*pctx> : cela peut être " "utilisé pour définir des options alternatives de signature." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:26 msgid "" "EVP_DigestSignUpdate() hashes B<cnt> bytes of data at B<d> into the " "signature context B<ctx>. This function can be called several times on the " "same B<ctx> to include additional data. This function is currently " "implemented usig a macro." msgstr "" "B<EVP_DigestSignUpdate>() calcule un hachage de I<cnt> octets de données " "vers I<d> dans le contexte de signature I<ctx>. Cette fonction peut être " "appelée plusieurs fois dans le même I<ctx> pour tenir compte de données " "additionnelles. Cette fonction est actuellement implantée en utilisant une " "macro." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:31 msgid "" "EVP_DigestSignFinal() signs the data in B<ctx> places the signature in " "B<sig>. If B<sig> is B<NULL> then the maximum size of the output buffer is " "written to the B<siglen> parameter. If B<sig> is not B<NULL> then before the " "call the B<siglen> parameter should contain the length of the B<sig> buffer, " "if the call is successful the signature is written to B<sig> and the amount " "of data written to B<siglen>." msgstr "" "B<EVP_DigestSignFinal>3() signe les données dans I<ctx> et place lâ??empreinte " "numérique dans I<sig>. Si I<sig> est NULL, alors la taille maximale du " "tampon de sortie est écrite dans le paramètre I<siglen>. Si I<sig> nâ??est pas " "NULL, alors avant lâ??appel, le paramètre I<siglen> doit contenir la taille du " "tampon I<sig> ; si lâ??appel est réussi, lâ??empreinte numérique est écrite dans " "I<sig> et le total de données écrites dans I<siglen>." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:40 msgid "" "EVP_DigestSignInit() EVP_DigestSignUpdate() and EVP_DigestSignaFinal() " "return 1 for success and 0 or a negative value for failure. In particular a " "return value of -2 indicates the operation is not supported by the public " "key algorithm." msgstr "" "B<EVP_DigestSignInit>(), B<EVP_DigestSignUpdate>() et B<EVP_DigestSignaFinal>() " "renvoie B<1> en cas de succès ou une valeur négative en cas dâ??échec. En particulier, " "une valeur de retour de B<-2> signifie que lâ??opération nâ??est pas permise par " "lâ??algorithme de clef publique." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:45 C/crypto/EVP_DigestVerifyInit.pod:45 msgid "" "The error codes can be obtained from L<ERR_get_error(3)|ERR_get_error(3)>." msgstr "" "Les codes d'erreur peuvent être obtenus par L<B<ERR_get_error>(3)|" "ERR_get_error(3)>." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:49 C/crypto/EVP_DigestVerifyInit.pod:49 #: C/crypto/EVP_SignInit.pod:56 C/crypto/EVP_VerifyInit.pod:48 msgid "" "The B<EVP> interface to digital signatures should almost always be used in " "preference to the low level interfaces. This is because the code then " "becomes transparent to the algorithm used and much more flexible." msgstr "" "Lâ??interface B<EVP> pour les signatures numériques devrait presque toujours être " "utilisée de préférence à des interfaces de bas niveaux. Cela est ainsi parce que le " "code devient évident pour lâ??algorithme utilisé et bien plus souple." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:53 C/crypto/EVP_DigestVerifyInit.pod:53 msgid "" "In previous versions of OpenSSL there was a link between message digest " "types and public key algorithms. This meant that \"clone\" digests such as " "EVP_dss1() needed to be used to sign using SHA1 and DSA. This is no longer " "necessary and the use of clone digest is now discouraged." msgstr "" "Dans les versions précédentes dâ??OpenSSL, un lien existait entre les empreintes " "numériques et les algorithmes de clef publique. Cela signifiait que les « clones » " "dâ??algorithmes de hachage tels que B<EVP_dss1>() devaient être utilisés pour les " "empreintes numériques SHA1 et DSA. Cela nâ??est plus nécessaire et lâ??utilisation " "de clone est maintenant déconseillée." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:58 C/crypto/EVP_DigestVerifyInit.pod:58 msgid "" "For some key types and parameters the random number generator must be seeded " "or the operation will fail." msgstr "" "Pour quelques sortes de clefs et de paramètres, la graine du générateur de nombre " "aléatoire doit être fournie ou lâ??opération échouera." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:61 msgid "" "The call to EVP_DigestSignFinal() internally finalizes a copy of the digest " "context. This means that calls to EVP_DigestSignUpdate() and " "EVP_DigestSignFinal() can be called later to digest and sign additional data." msgstr "" "Lâ??appel à B<EVP_DigestSignFinal>() de manière interne fait une copie du contexte " "de signature. Cela signifie que des appels à B<EVP_DigestSignUpdate>() et " "B<EVP_DigestSignFinal>() peuvent être faits en cas de données additionnelles." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:65 C/crypto/EVP_DigestVerifyInit.pod:65 #: C/crypto/EVP_SignInit.pod:73 C/crypto/EVP_VerifyInit.pod:61 msgid "" "Since only a copy of the digest context is ever finalized the context must " "be cleaned up after use by calling EVP_MD_CTX_cleanup() or a memory leak " "will occur." msgstr "" "Puisquâ??une seule copie est réalisée, le contexte de lâ??empreinte numérique doit " "être nettoyé après utilisation en appelant B<EVP_MD_CTX_cleanup>() ou une fuite " "de mémoire se produira." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:69 msgid "" "The use of EVP_PKEY_size() with these functions is discouraged because some " "signature operations may have a signature length which depends on the " "parameters set. As a result EVP_PKEY_size() would have to return a value " "which indicates the maximum possible signature for any set of parameters." msgstr "" "Lâ??utilisation de B<EVP_PKEY_size>() avec ces fonctions est déconseillée car quelques " "opérations de signature peuvent avoir une taille dâ??empreinte numérique dépendant " "de paramètres. Par conséquent, B<EVP_PKEY_size>() devrait renvoyer une valeur " "donnant la taille maximale possible dâ??empreinte numérique pour nâ??importe quelles définitions " "des paramètres." #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:76 #| msgid "" #| "L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, L<EVP_DigestInit(3)|" #| "EVP_DigestInit(3)>, L<err(3)|err(3)>, L<evp(3)|evp(3)>, L<hmac(3)|" #| "hmac(3)>, L<md2(3)|md2(3)>, L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, " #| "L<ripemd(3)|ripemd(3)>, L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)>" msgid "" "L<EVP_DigestVerifyInit(3)|EVP_DigestVerifyInit(3)>, L<EVP_DigestInit(3)|" "EVP_DigestInit(3)>, L<err(3)|err(3)>, L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, " "L<md2(3)|md2(3)>, L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|" "ripemd(3)>, L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)>" msgstr "" "L<B<EVP_DigestVerifyInit>(3)|EVP_DigestVerifyInit(3)>, L<B<EVP_DigestInit>(3)|" "EVP_DigestInit(3)>, L<B<err>(3)|err(3)>, L<B<evp>(3)|evp(3)>, L<B<hmac>(3)|hmac(3)>, " "L<B<md2>(3)|md2(3)>, L<B<md5>(3)|md5(3)>, L<B<mdc2>(3)|mdc2(3)>, L<B<ripemd>(3)|" "ripemd(3)>, L<B<sha>(3)|sha(3)>, L<B<dgst>(1)|dgst(1)>" #. type: textblock #: C/crypto/EVP_DigestSignInit.pod:84 msgid "" "EVP_DigestSignInit(), EVP_DigestSignUpdate() and EVP_DigestSignFinal() were " "first added to OpenSSL 1.0.0." msgstr "" "B<EVP_DigestSignInit>(), B<EVP_DigestSignUpdate>() et B<EVP_DigestSignFinal>() " "ont été ajoutées pour la première fois à OpenSSL 1.0.0."