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/architecturemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/crypto/architecturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/crypto/architecturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/crypto/architecturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/crypto/architecturemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/crypto/architecturemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hKernel Crypto API Architectureh]hKernel Crypto API Architecture}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/crypto/architecture.rsthKubh)}(hhh](h)}(hCipher algorithm typesh]hCipher algorithm types}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hRThe kernel crypto API provides different API calls for the following cipher types:h]hRThe kernel crypto API provides different API calls for the following cipher types:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(hSymmetric ciphers h]h)}(hSymmetric ciphersh]hSymmetric ciphers}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h AEAD ciphers h]h)}(h AEAD ciphersh]h AEAD ciphers}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h/Message digest, including keyed message digest h]h)}(h.Message digest, including keyed message digesth]h.Message digest, including keyed message digest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hRandom number generation h]h)}(hRandom number generationh]hRandom number generation}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hUser space interface h]h)}(hUser space interfaceh]hUser space interface}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj?ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK hhhhubeh}(h]cipher-algorithm-typesah ]h"]cipher algorithm typesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hCiphers And Templatesh]hCiphers And Templates}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghhhhhKubh)}(hX<The kernel crypto API provides implementations of single block ciphers and message digests. In addition, the kernel crypto API provides numerous "templates" that can be used in conjunction with the single block ciphers and message digests. Templates include all types of block chaining mode, the HMAC mechanism, etc.h]hX@The kernel crypto API provides implementations of single block ciphers and message digests. In addition, the kernel crypto API provides numerous “templates” that can be used in conjunction with the single block ciphers and message digests. Templates include all types of block chaining mode, the HMAC mechanism, etc.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjghhubh)}(hSingle block ciphers and message digests can either be directly used by a caller or invoked together with a template to form multi-block ciphers or keyed message digests.h]hSingle block ciphers and message digests can either be directly used by a caller or invoked together with a template to form multi-block ciphers or keyed message digests.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjghhubh)}(h|A single block cipher may even be called with multiple templates. However, templates cannot be used without a single cipher.h]h|A single block cipher may even be called with multiple templates. However, templates cannot be used without a single cipher.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjghhubh)}(h4See /proc/crypto and search for "name". For example:h]h8See /proc/crypto and search for “name”. For example:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjghhubh)}(hhh](h)}(haes h]h)}(haesh]haes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h ecb(aes) h]h)}(hecb(aes)h]hecb(aes)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h cmac(aes) h]h)}(h cmac(aes)h]h cmac(aes)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h ccm(aes) h]h)}(hccm(aes)h]hccm(aes)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hrfc4106(gcm(aes)) h]h)}(hrfc4106(gcm(aes))h]hrfc4106(gcm(aes))}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hsha1 h]h)}(hsha1h]hsha1}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hj+ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h hmac(sha1) h]h)}(h hmac(sha1)h]h hmac(sha1)}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjCubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hauthenc(hmac(sha1),cbc(aes)) h]h)}(hauthenc(hmac(sha1),cbc(aes))h]hauthenc(hmac(sha1),cbc(aes))}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hj[ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]j]j^uh1hhhhK&hjghhubh)}(hUIn these examples, "aes" and "sha1" are the ciphers and all others are the templates.h]h]In these examples, “aes” and “sha1” are the ciphers and all others are the templates.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjghhubeh}(h]ciphers-and-templatesah ]h"]ciphers and templatesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h&Synchronous And Asynchronous Operationh]h&Synchronous And Asynchronous Operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK:ubh)}(hKThe kernel crypto API provides synchronous and asynchronous API operations.h]hKThe kernel crypto API provides synchronous and asynchronous API operations.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK