summaryrefslogtreecommitdiff
path: root/static/freebsd/man7/crypto.7 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man7/crypto.7 3.html')
-rw-r--r--static/freebsd/man7/crypto.7 3.html327
1 files changed, 327 insertions, 0 deletions
diff --git a/static/freebsd/man7/crypto.7 3.html b/static/freebsd/man7/crypto.7 3.html
new file mode 100644
index 00000000..5b52df72
--- /dev/null
+++ b/static/freebsd/man7/crypto.7 3.html
@@ -0,0 +1,327 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">CRYPTO(7)</td>
+ <td class="head-vol">Miscellaneous Information Manual</td>
+ <td class="head-rtitle">CRYPTO(7)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<p class="Pp"><code class="Nm">crypto</code> &#x2014;
+ <span class="Nd">OpenCrypto algorithms</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The in-kernel OpenCrypto framework supports several different
+ encryption and authentication algorithms. This document describes the
+ parameters and requirements of these algorithms. Unless otherwise noted, all
+ sizes listed below are in bytes.</p>
+<section class="Ss">
+<h2 class="Ss" id="Authenticators"><a class="permalink" href="#Authenticators">Authenticators</a></h2>
+<p class="Pp">Authenticators compute a value (also known as a digest, hash, or
+ tag) over an input of bytes. In-kernel requests can either compute the value
+ for a given input, or verify if a given tag matches the computed tag for a
+ given input. The following authentication algorithms are supported:</p>
+<table class="Bl-column">
+ <tr id="Name">
+ <td><a class="permalink" href="#Name"><b class="Sy">Name</b></a></td>
+ <td><a class="permalink" href="#Nonce"><b class="Sy" id="Nonce">Nonce</b></a></td>
+ <td><a class="permalink" href="#Key"><b class="Sy" id="Key">Key
+ Sizes</b></a></td>
+ <td><a class="permalink" href="#Digest"><b class="Sy" id="Digest">Digest</b></a></td>
+ <td><a class="permalink" href="#Description"><b class="Sy" id="Description">Description</b></a></td>
+ </tr>
+ <tr id="CRYPTO_AES_CCM_CBC_MAC">
+ <td><a class="permalink" href="#CRYPTO_AES_CCM_CBC_MAC"><code class="Dv">CRYPTO_AES_CCM_CBC_MAC</code></a></td>
+ <td>12</td>
+ <td>16, 24, 32</td>
+ <td>16</td>
+ <td>Authentication-only mode of AES-CCM</td>
+ </tr>
+ <tr id="CRYPTO_AES_NIST_GMAC">
+ <td><a class="permalink" href="#CRYPTO_AES_NIST_GMAC"><code class="Dv">CRYPTO_AES_NIST_GMAC</code></a></td>
+ <td>12</td>
+ <td>16, 24, 32</td>
+ <td>16</td>
+ <td>Galois message authentication code</td>
+ </tr>
+ <tr id="CRYPTO_BLAKE2B">
+ <td><a class="permalink" href="#CRYPTO_BLAKE2B"><code class="Dv">CRYPTO_BLAKE2B</code></a></td>
+ <td></td>
+ <td>0, 64</td>
+ <td>64</td>
+ <td>Blake2b</td>
+ </tr>
+ <tr id="CRYPTO_BLAKE2S">
+ <td><a class="permalink" href="#CRYPTO_BLAKE2S"><code class="Dv">CRYPTO_BLAKE2S</code></a></td>
+ <td></td>
+ <td>0, 32</td>
+ <td>32</td>
+ <td>Blake2s</td>
+ </tr>
+ <tr id="CRYPTO_NULL_HMAC">
+ <td><a class="permalink" href="#CRYPTO_NULL_HMAC"><code class="Dv">CRYPTO_NULL_HMAC</code></a></td>
+ <td></td>
+ <td></td>
+ <td>12</td>
+ <td>IPsec NULL HMAC</td>
+ </tr>
+ <tr id="CRYPTO_POLY1305">
+ <td><a class="permalink" href="#CRYPTO_POLY1305"><code class="Dv">CRYPTO_POLY1305</code></a></td>
+ <td></td>
+ <td>32</td>
+ <td>16</td>
+ <td>Poly1305 authenticator</td>
+ </tr>
+ <tr id="CRYPTO_RIPEMD160">
+ <td><a class="permalink" href="#CRYPTO_RIPEMD160"><code class="Dv">CRYPTO_RIPEMD160</code></a></td>
+ <td></td>
+ <td></td>
+ <td>20</td>
+ <td>RIPE Message Digest-160</td>
+ </tr>
+ <tr id="CRYPTO_RIPEMD160_HMAC">
+ <td><a class="permalink" href="#CRYPTO_RIPEMD160_HMAC"><code class="Dv">CRYPTO_RIPEMD160_HMAC</code></a></td>
+ <td></td>
+ <td>64</td>
+ <td>20</td>
+ <td>RIPE Message Digest-160 HMAC</td>
+ </tr>
+ <tr id="CRYPTO_SHA1">
+ <td><a class="permalink" href="#CRYPTO_SHA1"><code class="Dv">CRYPTO_SHA1</code></a></td>
+ <td></td>
+ <td></td>
+ <td>20</td>
+ <td>SHA-1</td>
+ </tr>
+ <tr id="CRYPTO_SHA1_HMAC">
+ <td><a class="permalink" href="#CRYPTO_SHA1_HMAC"><code class="Dv">CRYPTO_SHA1_HMAC</code></a></td>
+ <td></td>
+ <td>64</td>
+ <td>20</td>
+ <td>SHA-1 HMAC</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_224">
+ <td><a class="permalink" href="#CRYPTO_SHA2_224"><code class="Dv">CRYPTO_SHA2_224</code></a></td>
+ <td></td>
+ <td></td>
+ <td>28</td>
+ <td>SHA-2 224</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_224_HMAC">
+ <td><a class="permalink" href="#CRYPTO_SHA2_224_HMAC"><code class="Dv">CRYPTO_SHA2_224_HMAC</code></a></td>
+ <td></td>
+ <td>64</td>
+ <td>28</td>
+ <td>SHA-2 224 HMAC</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_256">
+ <td><a class="permalink" href="#CRYPTO_SHA2_256"><code class="Dv">CRYPTO_SHA2_256</code></a></td>
+ <td></td>
+ <td></td>
+ <td>32</td>
+ <td>SHA-2 256</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_256_HMAC">
+ <td><a class="permalink" href="#CRYPTO_SHA2_256_HMAC"><code class="Dv">CRYPTO_SHA2_256_HMAC</code></a></td>
+ <td></td>
+ <td>64</td>
+ <td>32</td>
+ <td>SHA-2 256 HMAC</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_384">
+ <td><a class="permalink" href="#CRYPTO_SHA2_384"><code class="Dv">CRYPTO_SHA2_384</code></a></td>
+ <td></td>
+ <td></td>
+ <td>48</td>
+ <td>SHA-2 384</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_384_HMAC">
+ <td><a class="permalink" href="#CRYPTO_SHA2_384_HMAC"><code class="Dv">CRYPTO_SHA2_384_HMAC</code></a></td>
+ <td></td>
+ <td>128</td>
+ <td>48</td>
+ <td>SHA-2 384 HMAC</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_512">
+ <td><a class="permalink" href="#CRYPTO_SHA2_512"><code class="Dv">CRYPTO_SHA2_512</code></a></td>
+ <td></td>
+ <td></td>
+ <td>64</td>
+ <td>SHA-2 512</td>
+ </tr>
+ <tr id="CRYPTO_SHA2_512_HMAC">
+ <td><a class="permalink" href="#CRYPTO_SHA2_512_HMAC"><code class="Dv">CRYPTO_SHA2_512_HMAC</code></a></td>
+ <td></td>
+ <td>128</td>
+ <td>64</td>
+ <td>SHA-2 512 HMAC</td>
+ </tr>
+</table>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Block_Ciphers"><a class="permalink" href="#Block_Ciphers">Block
+ Ciphers</a></h2>
+<p class="Pp">Block ciphers in OCF can only operate on messages whose length is
+ an exact multiple of the cipher's block size. OCF supports the following
+ block ciphers:</p>
+<table class="Bl-column">
+ <tr id="Name~2">
+ <td><a class="permalink" href="#Name~2"><b class="Sy">Name</b></a></td>
+ <td><a class="permalink" href="#IV"><b class="Sy" id="IV">IV
+ Size</b></a></td>
+ <td><a class="permalink" href="#Block"><b class="Sy" id="Block">Block
+ Size</b></a></td>
+ <td><a class="permalink" href="#Key~2"><b class="Sy" id="Key~2">Key
+ Sizes</b></a></td>
+ <td><a class="permalink" href="#Description~2"><b class="Sy" id="Description~2">Description</b></a></td>
+ </tr>
+ <tr id="CRYPTO_AES_CBC">
+ <td><a class="permalink" href="#CRYPTO_AES_CBC"><code class="Dv">CRYPTO_AES_CBC</code></a></td>
+ <td>16</td>
+ <td>16</td>
+ <td>16, 24, 32</td>
+ <td>AES-CBC</td>
+ </tr>
+ <tr id="CRYPTO_AES_XTS">
+ <td><a class="permalink" href="#CRYPTO_AES_XTS"><code class="Dv">CRYPTO_AES_XTS</code></a></td>
+ <td>8</td>
+ <td>16</td>
+ <td>32, 64</td>
+ <td>AES-XTS</td>
+ </tr>
+ <tr id="CRYPTO_CAMELLIA_CBC">
+ <td><a class="permalink" href="#CRYPTO_CAMELLIA_CBC"><code class="Dv">CRYPTO_CAMELLIA_CBC</code></a></td>
+ <td>16</td>
+ <td>16</td>
+ <td>16, 24, 32</td>
+ <td>Camellia CBC</td>
+ </tr>
+ <tr id="CRYPTO_NULL_CBC">
+ <td><a class="permalink" href="#CRYPTO_NULL_CBC"><code class="Dv">CRYPTO_NULL_CBC</code></a></td>
+ <td>0</td>
+ <td>4</td>
+ <td>0-256</td>
+ <td>IPsec NULL cipher</td>
+ </tr>
+</table>
+<p class="Pp"><code class="Dv">CRYPTO_AES_XTS</code> implements XEX Tweakable
+ Block Cipher with Ciphertext Stealing as defined in NIST SP 800-38E. OCF
+ consumers provide the first 8 bytes of the IV. The remaining 8 bytes are
+ defined to be a block counter beginning at 0.</p>
+<p class="Pp">NOTE: The ciphertext stealing part is not implemented in all
+ backends which is why this cipher requires input that is a multiple of the
+ block size.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Stream_Ciphers"><a class="permalink" href="#Stream_Ciphers">Stream
+ Ciphers</a></h2>
+<p class="Pp">Stream ciphers can operate on messages with arbitrary lengths. OCF
+ supports the following stream ciphers:</p>
+<table class="Bl-column">
+ <tr id="Name~3">
+ <td><a class="permalink" href="#Name~3"><b class="Sy">Name</b></a></td>
+ <td><a class="permalink" href="#IV~2"><b class="Sy" id="IV~2">IV
+ Size</b></a></td>
+ <td><a class="permalink" href="#Key~3"><b class="Sy" id="Key~3">Key
+ Sizes</b></a></td>
+ <td><a class="permalink" href="#Description~3"><b class="Sy" id="Description~3">Description</b></a></td>
+ </tr>
+ <tr id="CRYPTO_AES_ICM">
+ <td><a class="permalink" href="#CRYPTO_AES_ICM"><code class="Dv">CRYPTO_AES_ICM</code></a></td>
+ <td>16</td>
+ <td>16, 24, 32</td>
+ <td>AES Counter Mode</td>
+ </tr>
+ <tr id="CRYPTO_CHACHA20">
+ <td><a class="permalink" href="#CRYPTO_CHACHA20"><code class="Dv">CRYPTO_CHACHA20</code></a></td>
+ <td>16</td>
+ <td>16, 32</td>
+ <td>ChaCha20</td>
+ </tr>
+</table>
+<p class="Pp">The IV for each request must be provided in
+ <var class="Fa">crp_iv</var> via the
+ <code class="Dv">CRYPTO_F_IV_SEPARATE</code> flag.</p>
+<p class="Pp"><code class="Dv">CRYPTO_AES_ICM</code> uses the entire IV as a
+ 128-bit big endian block counter. The IV sets the initial counter value for
+ a message. If a consumer wishes to use an IV whose value is split into
+ separate nonce and counter fields (e.g., IPsec), the consumer is responsible
+ for splitting requests to handle counter rollover.</p>
+<p class="Pp"><code class="Dv">CRYPTO_CHACHA20</code> accepts a 16 byte IV. The
+ first 8 bytes are used as a nonce. The last 8 bytes are used as a 64-bit
+ little-endian block counter.</p>
+</section>
+<section class="Ss">
+<h2 class="Ss" id="Authenticated_Encryption_with_Associated_Data_Algorithms"><a class="permalink" href="#Authenticated_Encryption_with_Associated_Data_Algorithms">Authenticated
+ Encryption with Associated Data Algorithms</a></h2>
+<p class="Pp">AEAD algorithms in OCF combine a stream cipher with an
+ authentication algorithm to provide both secrecy and authentication. AEAD
+ algorithms accept additional authentication data (AAD) in addition to the
+ ciphertext or plaintext. AAD is passed to the authentication algorithm as
+ input in a method defined by the specific AEAD algorithm.</p>
+<p class="Pp">AEAD algorithms in OCF accept a nonce that is combined with an
+ algorithm-defined counter to construct the IV for the underlying stream
+ cipher. This nonce must be provided in <var class="Fa">crp_iv</var> via the
+ <code class="Dv">CRYPTO_F_IV_SEPARATE</code> flag. Some AEAD algorithms
+ support multiple nonce sizes. The first size listed is the default nonce
+ size.</p>
+<p class="Pp">The following AEAD algorithms are supported:</p>
+<table class="Bl-column">
+ <tr id="Name~4">
+ <td><a class="permalink" href="#Name~4"><b class="Sy">Name</b></a></td>
+ <td><a class="permalink" href="#Nonce~2"><b class="Sy" id="Nonce~2">Nonce</b></a></td>
+ <td><a class="permalink" href="#Key~4"><b class="Sy" id="Key~4">Key
+ Sizes</b></a></td>
+ <td><a class="permalink" href="#Tag"><b class="Sy" id="Tag">Tag</b></a></td>
+ <td><a class="permalink" href="#Description~4"><b class="Sy" id="Description~4">Description</b></a></td>
+ </tr>
+ <tr id="CRYPTO_AES_NIST_GCM_16">
+ <td><a class="permalink" href="#CRYPTO_AES_NIST_GCM_16"><code class="Dv">CRYPTO_AES_NIST_GCM_16</code></a></td>
+ <td>12</td>
+ <td>16, 24, 32</td>
+ <td>16</td>
+ <td>AES Galois/Counter Mode</td>
+ </tr>
+ <tr id="CRYPTO_AES_CCM_16">
+ <td><a class="permalink" href="#CRYPTO_AES_CCM_16"><code class="Dv">CRYPTO_AES_CCM_16</code></a></td>
+ <td>12, 7-13</td>
+ <td>16, 24, 32</td>
+ <td>16</td>
+ <td>AES Counter with CBC-MAC</td>
+ </tr>
+ <tr id="CRYPTO_CHACHA20_POLY1305">
+ <td><a class="permalink" href="#CRYPTO_CHACHA20_POLY1305"><code class="Dv">CRYPTO_CHACHA20_POLY1305</code></a></td>
+ <td>12, 8</td>
+ <td>32</td>
+ <td>16</td>
+ <td>ChaCha20-Poly1305</td>
+ </tr>
+ <tr id="CRYPTO_XCHACHA20_POLY1305">
+ <td><a class="permalink" href="#CRYPTO_XCHACHA20_POLY1305"><code class="Dv">CRYPTO_XCHACHA20_POLY1305</code></a></td>
+ <td>24</td>
+ <td>32</td>
+ <td>16</td>
+ <td>XChaCha20-Poly1305</td>
+ </tr>
+</table>
+</section>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<p class="Pp"><a class="Xr">crypto(4)</a>, <a class="Xr">crypto(9)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">The <code class="Nm">crypto</code> manual page first appeared in
+ <span class="Ux">FreeBSD 10.1</span>.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">January 11, 2022</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>