sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget$/translations/zh_CN/crypto/api-intromodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/zh_TW/crypto/api-intromodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/it_IT/crypto/api-intromodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/ja_JP/crypto/api-intromodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/ko_KR/crypto/api-intromodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget$/translations/sp_SP/crypto/api-intromodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh>/var/lib/git/docbuild/linux/Documentation/crypto/api-intro.rsthKubhsection)}(hhh](htitle)}(hScatterlist Cryptographic APIh]hScatterlist Cryptographic API}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe Scatterlist Crypto API takes page vectors (scatterlists) as arguments, and works directly on pages. In some cases (e.g. ECB mode ciphers), this will allow for pages to be encrypted in-place with no copying.h]hThe Scatterlist Crypto API takes page vectors (scatterlists) as arguments, and works directly on pages. In some cases (e.g. ECB mode ciphers), this will allow for pages to be encrypted in-place with no copying.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hOne of the initial goals of this design was to readily support IPsec, so that processing can be applied to paged skb's without the need for linearization.h]hOne of the initial goals of this design was to readily support IPsec, so that processing can be applied to paged skb’s without the need for linearization.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDetailsh]hDetails}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hLAt the lowest level are algorithms, which register dynamically with the API.h]hLAt the lowest level are algorithms, which register dynamically with the API.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h'Transforms' are user-instantiated objects, which maintain state, handle all of the implementation logic (e.g. manipulating page vectors) and provide an abstraction to the underlying algorithms. However, at the user level they are very simple.h]h‘Transforms’ are user-instantiated objects, which maintain state, handle all of the implementation logic (e.g. manipulating page vectors) and provide an abstraction to the underlying algorithms. However, at the user level they are very simple.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h0Conceptually, the API layering looks like this::h]h/Conceptually, the API layering looks like this:}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(h[transform api] (user interface) [transform ops] (per-type logic glue e.g. cipher.c, compress.c) [algorithm api] (for registering algorithms)h]h[transform api] (user interface) [transform ops] (per-type logic glue e.g. cipher.c, compress.c) [algorithm api] (for registering algorithms)}hj=sbah}(h]h ]h"]h$]h&]hhuh1j;hhhK!hjhhubh)}(hThe idea is to make the user interface and algorithm registration API very simple, while hiding the core logic from both. Many good ideas from existing APIs such as Cryptoapi and Nettle have been adapted for this.h]hThe idea is to make the user interface and algorithm registration API very simple, while hiding the core logic from both. Many good ideas from existing APIs such as Cryptoapi and Nettle have been adapted for this.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjhhubh)}(hThe API currently supports five main types of transforms: AEAD (Authenticated Encryption with Associated Data), Block Ciphers, Ciphers, Compressors and Hashes.h]hThe API currently supports five main types of transforms: AEAD (Authenticated Encryption with Associated Data), Block Ciphers, Ciphers, Compressors and Hashes.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh)}(hXPlease note that Block Ciphers is somewhat of a misnomer. It is in fact meant to support all ciphers including stream ciphers. The difference between Block Ciphers and Ciphers is that the latter operates on exactly one block while the former can operate on an arbitrary amount of data, subject to block size requirements (i.e., non-stream ciphers can only process multiples of blocks).h]hXPlease note that Block Ciphers is somewhat of a misnomer. It is in fact meant to support all ciphers including stream ciphers. The difference between Block Ciphers and Ciphers is that the latter operates on exactly one block while the former can operate on an arbitrary amount of data, subject to block size requirements (i.e., non-stream ciphers can only process multiples of blocks).}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjhhubh)}(h)Here's an example of how to use the API::h]h*Here’s an example of how to use the API:}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubj<)}(hX5#include #include #include struct scatterlist sg[2]; char result[128]; struct crypto_ahash *tfm; struct ahash_request *req; tfm = crypto_alloc_ahash("md5", 0, CRYPTO_ALG_ASYNC); if (IS_ERR(tfm)) fail(); /* ... set up the scatterlists ... */ req = ahash_request_alloc(tfm, GFP_ATOMIC); if (!req) fail(); ahash_request_set_callback(req, 0, NULL, NULL); ahash_request_set_crypt(req, sg, result, 2); if (crypto_ahash_digest(req)) fail(); ahash_request_free(req); crypto_free_ahash(tfm);h]hX5#include #include #include struct scatterlist sg[2]; char result[128]; struct crypto_ahash *tfm; struct ahash_request *req; tfm = crypto_alloc_ahash("md5", 0, CRYPTO_ALG_ASYNC); if (IS_ERR(tfm)) fail(); /* ... set up the scatterlists ... */ req = ahash_request_alloc(tfm, GFP_ATOMIC); if (!req) fail(); ahash_request_set_callback(req, 0, NULL, NULL); ahash_request_set_crypt(req, sg, result, 2); if (crypto_ahash_digest(req)) fail(); ahash_request_free(req); crypto_free_ahash(tfm);}hjsbah}(h]h ]h"]h$]h&]hhuh1j;hhhK6hjhhubh)}(hJMany real examples are available in the regression test module (tcrypt.c).h]hJMany real examples are available in the regression test module (tcrypt.c).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjhhubeh}(h]detailsah ]h"]detailsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hDeveloper Notesh]hDeveloper Notes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKWubh)}(hTransforms may only be allocated in user context, and cryptographic methods may only be called from softirq and user contexts. For transforms with a setkey method it too should only be called from user context.h]hTransforms may only be allocated in user context, and cryptographic methods may only be called from softirq and user contexts. For transforms with a setkey method it too should only be called from user context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjhhubh)}(hWhen using the API for ciphers, performance will be optimal if each scatterlist contains data which is a multiple of the cipher's block size (typically 8 bytes). This prevents having to do any copying across non-aligned page fragment boundaries.h]hWhen using the API for ciphers, performance will be optimal if each scatterlist contains data which is a multiple of the cipher’s block size (typically 8 bytes). This prevents having to do any copying across non-aligned page fragment boundaries.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hjhhubeh}(h]developer-notesah ]h"]developer notesah$]h&]uh1hhhhhhhhKWubh)}(hhh](h)}(hAdding New Algorithmsh]hAdding New Algorithms}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKeubh)}(hWhen submitting a new algorithm for inclusion, a mandatory requirement is that at least a few test vectors from known sources (preferably standards) be included.h]hWhen submitting a new algorithm for inclusion, a mandatory requirement is that at least a few test vectors from known sources (preferably standards) be included.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjhhubh)}(hConverting existing well known code is preferred, as it is more likely to have been reviewed and widely tested. If submitting code from LGPL sources, please consider changing the license to GPL (see section 3 of the LGPL).h]hConverting existing well known code is preferred, as it is more likely to have been reviewed and widely tested. If submitting code from LGPL sources, please consider changing the license to GPL (see section 3 of the LGPL).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubh)}(hAlgorithms submitted must also be generally patent-free (e.g. IDEA will not be included in the mainline until around 2011), and be based on a recognized standard and/or have been subjected to appropriate peer review.h]hAlgorithms submitted must also be generally patent-free (e.g. IDEA will not be included in the mainline until around 2011), and be based on a recognized standard and/or have been subjected to appropriate peer review.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjhhubh)}(hAlso check for any RFCs which may relate to the use of specific algorithms, as well as general application notes such as RFC2451 ("The ESP CBC-Mode Cipher Algorithms").h]hAlso check for any RFCs which may relate to the use of specific algorithms, as well as general application notes such as RFC2451 (“The ESP CBC-Mode Cipher Algorithms”).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjhhubh)}(hIt's a good idea to avoid using lots of macros and use inlined functions instead, as gcc does a good job with inlining, while excessive use of macros can cause compilation problems on some platforms.h]hIt’s a good idea to avoid using lots of macros and use inlined functions instead, as gcc does a good job with inlining, while excessive use of macros can cause compilation problems on some platforms.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjhhubh)}(heAlso check the TODO list at the web site listed below to see what people might already be working on.h]heAlso check the TODO list at the web site listed below to see what people might already be working on.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjhhubeh}(h]adding-new-algorithmsah ]h"]adding new algorithmsah$]h&]uh1hhhhhhhhKeubh)}(hhh](h)}(hBugsh]hBugs}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhhhhhKubhdefinition_list)}(hhh](hdefinition_list_item)}(h2Send bug reports to: linux-crypto@vger.kernel.org h](hterm)}(hSend bug reports to:h]hSend bug reports to:}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjaubh definition)}(hhh]h)}(hlinux-crypto@vger.kernel.orgh]h reference)}(hj|h]hlinux-crypto@vger.kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:linux-crypto@vger.kernel.orguh1j~hjzubah}(h]h ]h"]h$]h&]uh1hhhhKhjwubah}(h]h ]h"]h$]h&]uh1juhjaubeh}(h]h ]h"]h$]h&]uh1j_hhhKhj\ubj`)}(hRCc: Herbert Xu , David S. Miller h](jf)}(hCc:h]hCc:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjubjv)}(hhh]h)}(hLHerbert Xu , David S. Miller h](h Herbert Xu <}(hjhhhNhNubj)}(hherbert@gondor.apana.org.auh]hherbert@gondor.apana.org.au}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:herbert@gondor.apana.org.auuh1j~hjubh>, David S. Miller <}(hjhhhNhNubj)}(hdavem@redhat.comh]hdavem@redhat.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:davem@redhat.comuh1j~hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjubeh}(h]h ]h"]h$]h&]uh1j_hhhKhj\hhubeh}(h]h ]h"]h$]h&]uh1jZhjIhhhhhNubeh}(h]bugsah ]h"]bugsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hFurther Informationh]hFurther Information}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hzFor further patches and various updates, including the current TODO list, see: http://gondor.apana.org.au/~herbert/crypto/h](hOFor further patches and various updates, including the current TODO list, see: }(hjhhhNhNubj)}(h+http://gondor.apana.org.au/~herbert/crypto/h]h+http://gondor.apana.org.au/~herbert/crypto/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurij!uh1j~hjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]further-informationah ]h"]further informationah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hAuthorsh]hAuthors}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hhhhhKubh bullet_list)}(hhh](h list_item)}(h James Morrish]h)}(hjVh]h James Morris}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjTubah}(h]h ]h"]h$]h&]uh1jRhjOhhhhhNubjS)}(hDavid S. Millerh]h)}(hjmh]hDavid S. Miller}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1jRhjOhhhhhNubjS)}(h Herbert Xu h]h)}(h Herbert Xuh]h Herbert Xu}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjOhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jMhhhKhj<hhubeh}(h]authorsah ]h"]authorsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hCreditsh]hCredits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hTThe following people provided invaluable feedback during the development of the API:h]hTThe following people provided invaluable feedback during the development of the API:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh block_quote)}(h- Alexey Kuznetzov - Rusty Russell - Herbert Valerio Riedel - Jeff Garzik - Michael Richardson - Andrew Morton - Ingo Oeser - Christoph Hellwig h]jN)}(hhh](jS)}(hAlexey Kuznetzovh]h)}(hjh]hAlexey Kuznetzov}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Rusty Russellh]h)}(hjh]h Rusty Russell}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hHerbert Valerio Riedelh]h)}(hjh]hHerbert Valerio Riedel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Jeff Garzikh]h)}(hjh]h Jeff Garzik}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hMichael Richardsonh]h)}(hj0h]hMichael Richardson}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj.ubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Andrew Mortonh]h)}(hjGh]h Andrew Morton}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Ingo Oeserh]h)}(hj^h]h Ingo Oeser}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj\ubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hChristoph Hellwig h]h)}(hChristoph Hellwigh]hChristoph Hellwig}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjsubah}(h]h ]h"]h$]h&]uh1jRhjubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubh)}(h>Portions of this API were derived from the following projects:h]h>Portions of this API were derived from the following projects:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hKerneli Cryptoapi (http://www.kerneli.org/) - Alexander Kjeldaas - Herbert Valerio Riedel - Kyle McMartin - Jean-Luc Cooke - David Bryson - Clemens Fruhwirth - Tobias Ringstrom - Harald Welte h]j[)}(hhh]j`)}(hKerneli Cryptoapi (http://www.kerneli.org/) - Alexander Kjeldaas - Herbert Valerio Riedel - Kyle McMartin - Jean-Luc Cooke - David Bryson - Clemens Fruhwirth - Tobias Ringstrom - Harald Welte h](jf)}(h+Kerneli Cryptoapi (http://www.kerneli.org/)h](hKerneli Cryptoapi (}(hjhhhNhNubj)}(hhttp://www.kerneli.org/h]hhttp://www.kerneli.org/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j~hjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jehhhKhjubjv)}(hhh]jN)}(hhh](jS)}(hAlexander Kjeldaash]h)}(hjh]hAlexander Kjeldaas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hHerbert Valerio Riedelh]h)}(hjh]hHerbert Valerio Riedel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Kyle McMartinh]h)}(hjh]h Kyle McMartin}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hJean-Luc Cookeh]h)}(hjh]hJean-Luc Cooke}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h David Brysonh]h)}(hj5h]h David Bryson}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hClemens Fruhwirthh]h)}(hjLh]hClemens Fruhwirth}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjJubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hTobias Ringstromh]h)}(hjch]hTobias Ringstrom}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjaubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Harald Welte h]h)}(h Harald Welteh]h Harald Welte}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjxubah}(h]h ]h"]h$]h&]uh1jRhjubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjubah}(h]h ]h"]h$]h&]uh1jZhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubh)}(hand;h]hand;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hDNettle (https://www.lysator.liu.se/~nisse/nettle/) - Niels Möller h]j[)}(hhh]j`)}(hCNettle (https://www.lysator.liu.se/~nisse/nettle/) - Niels Möller h](jf)}(h2Nettle (https://www.lysator.liu.se/~nisse/nettle/)h](hNettle (}(hjhhhNhNubj)}(h)https://www.lysator.liu.se/~nisse/nettle/h]h)https://www.lysator.liu.se/~nisse/nettle/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j~hjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jehhhKhjubjv)}(hhh]jN)}(hhh]jS)}(hNiels Möller h]h)}(h Niels Möllerh]h Niels Möller}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjubah}(h]h ]h"]h$]h&]uh1jZhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubh)}(h-Original developers of the crypto algorithms:h]h-Original developers of the crypto algorithms:}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hX- Dana L. How (DES) - Andrew Tridgell and Steve French (MD4) - Colin Plumb (MD5) - Steve Reid (SHA1) - Jean-Luc Cooke (SHA256, SHA384, SHA512) - Kazunori Miyazawa / USAGI (HMAC) - Matthew Skala (Twofish) - Dag Arne Osvik (Serpent) - Brian Gladman (AES) - Kartikey Mahendra Bhatt (CAST6) - Jon Oberheide (ARC4) - Jouni Malinen (Michael MIC) - NTT(Nippon Telegraph and Telephone Corporation) (Camellia) h]jN)}(hhh](jS)}(hDana L. How (DES)h]h)}(hj;h]hDana L. How (DES)}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj9ubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(h&Andrew Tridgell and Steve French (MD4)h]h)}(hjRh]h&Andrew Tridgell and Steve French (MD4)}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjPubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hColin Plumb (MD5)h]h)}(hjih]hColin Plumb (MD5)}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjgubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hSteve Reid (SHA1)h]h)}(hjh]hSteve Reid (SHA1)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(h'Jean-Luc Cooke (SHA256, SHA384, SHA512)h]h)}(hjh]h'Jean-Luc Cooke (SHA256, SHA384, SHA512)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(h Kazunori Miyazawa / USAGI (HMAC)h]h)}(hjh]h Kazunori Miyazawa / USAGI (HMAC)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hMatthew Skala (Twofish)h]h)}(hjh]hMatthew Skala (Twofish)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hDag Arne Osvik (Serpent)h]h)}(hjh]hDag Arne Osvik (Serpent)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hBrian Gladman (AES)h]h)}(hjh]hBrian Gladman (AES)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hKartikey Mahendra Bhatt (CAST6)h]h)}(hj h]hKartikey Mahendra Bhatt (CAST6)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hJon Oberheide (ARC4)h]h)}(hj!h]hJon Oberheide (ARC4)}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(hJouni Malinen (Michael MIC)h]h)}(hj8h]hJouni Malinen (Michael MIC)}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj6ubah}(h]h ]h"]h$]h&]uh1jRhj6ubjS)}(h;NTT(Nippon Telegraph and Telephone Corporation) (Camellia) h]h)}(h:NTT(Nippon Telegraph and Telephone Corporation) (Camellia)h]h:NTT(Nippon Telegraph and Telephone Corporation) (Camellia)}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjMubah}(h]h ]h"]h$]h&]uh1jRhj6ubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhj2ubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj[)}(hhh](j`)}(h2SHA1 algorithm contributors: - Jean-Francois Dive h](jf)}(hSHA1 algorithm contributors:h]hSHA1 algorithm contributors:}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjtubjv)}(hhh]jN)}(hhh]jS)}(hJean-Francois Dive h]h)}(hJean-Francois Diveh]hJean-Francois Dive}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjtubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqubj`)}(hPDES algorithm contributors: - Raimar Falke - Gisle Sælensminde - Niels Möller h](jf)}(hDES algorithm contributors:h]hDES algorithm contributors:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjubjv)}(hhh]jN)}(hhh](jS)}(h Raimar Falkeh]h)}(hjh]h Raimar Falke}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hGisle Sælensmindeh]h)}(hjh]hGisle Sælensminde}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hNiels Möller h]h)}(h Niels Möllerh]h Niels Möller}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(hJBlowfish algorithm contributors: - Herbert Valerio Riedel - Kyle McMartin h](jf)}(h Blowfish algorithm contributors:h]h Blowfish algorithm contributors:}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj&ubjv)}(hhh]jN)}(hhh](jS)}(hHerbert Valerio Riedelh]h)}(hj@h]hHerbert Valerio Riedel}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1jRhj;ubjS)}(hKyle McMartin h]h)}(h Kyle McMartinh]h Kyle McMartin}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjUubah}(h]h ]h"]h$]h&]uh1jRhj;ubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhj8ubah}(h]h ]h"]h$]h&]uh1juhj&ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h:Twofish algorithm contributors: - Werner Koch - Marc Mutz h](jf)}(hTwofish algorithm contributors:h]hTwofish algorithm contributors:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjubjv)}(hhh]jN)}(hhh](jS)}(h Werner Kochh]h)}(hjh]h Werner Koch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Marc Mutz h]h)}(h Marc Mutzh]h Marc Mutz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(hbSHA256/384/512 algorithm contributors: - Andrew McDonald - Kyle McMartin - Herbert Valerio Riedel h](jf)}(h&SHA256/384/512 algorithm contributors:h]h&SHA256/384/512 algorithm contributors:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjubjv)}(hhh]jN)}(hhh](jS)}(hAndrew McDonaldh]h)}(hjh]hAndrew McDonald}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(h Kyle McMartinh]h)}(hj h]h Kyle McMartin}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhjubjS)}(hHerbert Valerio Riedel h]h)}(hHerbert Valerio Riedelh]hHerbert Valerio Riedel}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhjubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjubah}(h]h ]h"]h$]h&]uh1juhjubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(hAES algorithm contributors: - Alexander Kjeldaas - Herbert Valerio Riedel - Kyle McMartin - Adam J. Richter - Fruhwirth Clemens (i586) - Linus Torvalds (i586) h](jf)}(hAES algorithm contributors:h]hAES algorithm contributors:}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhjH ubjv)}(hhh]jN)}(hhh](jS)}(hAlexander Kjeldaash]h)}(hjb h]hAlexander Kjeldaas}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj` ubah}(h]h ]h"]h$]h&]uh1jRhj] ubjS)}(hHerbert Valerio Riedelh]h)}(hjy h]hHerbert Valerio Riedel}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjw ubah}(h]h ]h"]h$]h&]uh1jRhj] ubjS)}(h Kyle McMartinh]h)}(hj h]h Kyle McMartin}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj] ubjS)}(hAdam J. Richterh]h)}(hj h]hAdam J. Richter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj] ubjS)}(hFruhwirth Clemens (i586)h]h)}(hj h]hFruhwirth Clemens (i586)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj] ubjS)}(hLinus Torvalds (i586) h]h)}(hLinus Torvalds (i586)h]hLinus Torvalds (i586)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj] ubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjZ ubah}(h]h ]h"]h$]h&]uh1juhjH ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(hfCAST5 algorithm contributors: - Kartikey Mahendra Bhatt (original developers unknown, FSF copyright). h](jf)}(hCAST5 algorithm contributors:h]hCAST5 algorithm contributors:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj ubjv)}(hhh]jN)}(hhh]jS)}(hFKartikey Mahendra Bhatt (original developers unknown, FSF copyright). h]h)}(hEKartikey Mahendra Bhatt (original developers unknown, FSF copyright).h]hEKartikey Mahendra Bhatt (original developers unknown, FSF copyright).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhj ubah}(h]h ]h"]h$]h&]uh1juhj ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h@TEA/XTEA algorithm contributors: - Aaron Grothe - Michael Ringe h](jf)}(h TEA/XTEA algorithm contributors:h]h TEA/XTEA algorithm contributors:}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj? ubjv)}(hhh]jN)}(hhh](jS)}(h Aaron Grotheh]h)}(hjY h]h Aaron Grothe}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjW ubah}(h]h ]h"]h$]h&]uh1jRhjT ubjS)}(hMichael Ringe h]h)}(h Michael Ringeh]h Michael Ringe}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjn ubah}(h]h ]h"]h$]h&]uh1jRhjT ubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhjQ ubah}(h]h ]h"]h$]h&]uh1juhj? ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h.Khazad algorithm contributors: - Aaron Grothe h](jf)}(hKhazad algorithm contributors:h]hKhazad algorithm contributors:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj ubjv)}(hhh]jN)}(hhh]jS)}(h Aaron Grothe h]h)}(h Aaron Grotheh]h Aaron Grothe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhj ubah}(h]h ]h"]h$]h&]uh1juhj ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(hBWhirlpool algorithm contributors: - Aaron Grothe - Jean-Luc Cooke h](jf)}(h!Whirlpool algorithm contributors:h]h!Whirlpool algorithm contributors:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj ubjv)}(hhh]jN)}(hhh](jS)}(h Aaron Grotheh]h)}(hj h]h Aaron Grothe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubjS)}(hJean-Luc Cooke h]h)}(hJean-Luc Cookeh]hJean-Luc Cooke}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubeh}(h]h ]h"]h$]h&]jjuh1jMhhhKhj ubah}(h]h ]h"]h$]h&]uh1juhj ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h.Anubis algorithm contributors: - Aaron Grothe h](jf)}(hAnubis algorithm contributors:h]hAnubis algorithm contributors:}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj3 ubjv)}(hhh]jN)}(hhh]jS)}(h Aaron Grothe h]h)}(h Aaron Grotheh]h Aaron Grothe}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjK ubah}(h]h ]h"]h$]h&]uh1jRhjH ubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhjE ubah}(h]h ]h"]h$]h&]uh1juhj3 ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h-Tiger algorithm contributors: - Aaron Grothe h](jf)}(hTiger algorithm contributors:h]hTiger algorithm contributors:}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhju ubjv)}(hhh]jN)}(hhh]jS)}(h Aaron Grothe h]h)}(h Aaron Grotheh]h Aaron Grothe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhj ubah}(h]h ]h"]h$]h&]uh1juhju ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h*VIA PadLock contributors: - Michal Ludvig h](jf)}(hVIA PadLock contributors:h]hVIA PadLock contributors:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhKhj ubjv)}(hhh]jN)}(hhh]jS)}(hMichal Ludvig h]h)}(h Michal Ludvigh]h Michal Ludvig}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubah}(h]h ]h"]h$]h&]jjuh1jMhhhKhj ubah}(h]h ]h"]h$]h&]uh1juhj ubeh}(h]h ]h"]h$]h&]uh1j_hhhKhjqhhubj`)}(h^Camellia algorithm contributors: - NTT(Nippon Telegraph and Telephone Corporation) (Camellia) h](jf)}(h Camellia algorithm contributors:h]h Camellia algorithm contributors:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jehhhMhj ubjv)}(hhh]jN)}(hhh]jS)}(h;NTT(Nippon Telegraph and Telephone Corporation) (Camellia) h]h)}(h:NTT(Nippon Telegraph and Telephone Corporation) (Camellia)h]h:NTT(Nippon Telegraph and Telephone Corporation) (Camellia)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jRhj ubah}(h]h ]h"]h$]h&]jjuh1jMhhhMhj ubah}(h]h ]h"]h$]h&]uh1juhj ubeh}(h]h ]h"]h$]h&]uh1j_hhhMhjqhhubeh}(h]h ]h"]h$]h&]uh1jZhjhhhNhNubh)}(h@Generic scatterwalk code by Adam J. Richter h](h-Generic scatterwalk code by Adam J. Richter <}(hjA hhhNhNubj)}(hadam@yggdrasil.comh]hadam@yggdrasil.com}(hjI hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:adam@yggdrasil.comuh1j~hjA ubh>}(hjA hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h[Please send any credits updates or corrections to: Herbert Xu h](h?Please send any credits updates or corrections to: Herbert Xu <}(hjc hhhNhNubj)}(hherbert@gondor.apana.org.auh]hherbert@gondor.apana.org.au}(hjk hhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:herbert@gondor.apana.org.auuh1j~hjc ubh>}(hjc hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubeh}(h]creditsah ]h"]creditsah$]h&]uh1hhhhhhhhKubeh}(h]scatterlist-cryptographic-apiah ]h"]scatterlist cryptographic apiah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j j hhjjjjjFjCjjj9j6jjj j u nametypes}(j hjjjFjj9jj uh}(j hhhjjjjjCjjjIj6jjj<j ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.