1.\" Copyright (c) 2014 The FreeBSD Foundation 2.\" All rights reserved. 3.\" 4.\" This documentation was written by John-Mark Gurney under 5.\" the sponsorship of the FreeBSD Foundation and 6.\" Rubicon Communications, LLC (Netgate). 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" $FreeBSD$ 29.\" 30.Dd June 4, 2020 31.Dt CRYPTO 7 32.Os 33.Sh NAME 34.Nm crypto 35.Nd OpenCrypto algorithms 36.Sh SYNOPSIS 37In the kernel configuration file: 38.Cd "device crypto" 39.Pp 40Or load the crypto.ko module. 41.Sh DESCRIPTION 42The following cryptographic algorithms that are part of the OpenCrypto 43framework have the following requirements. 44.Pp 45Cipher algorithms: 46.Bl -tag -width "CRYPTO_AES_NIST_GCM_16" 47.It Dv CRYPTO_AES_CBC 48.Bl -tag -width "Block size :" -compact -offset indent 49.It IV size : 5016 51.It Block size : 5216 53.It Key size : 5416, 24 or 32 55.El 56.Pp 57This algorithm implements Cipher Block Chaining. 58.It Dv CRYPTO_AES_CCM_16 59.Bl -tag -width "Block size :" -compact -offset indent 60.It IV size : 6112 62.It Block size : 6316 64.It Key size : 6516, 24 or 32 66.It Digest size : 6716 68.El 69.Pp 70This algorithm implements Counter with CBC-MAC Mode. 71This cipher uses AEAD 72.Pq Authenticated Encryption with Associated Data 73mode. 74.Pp 75The authentication tag will be read from or written to the offset 76.Va crp_digest_start 77specified in the request. 78.Pp 79Note: The nonce for each request must be provided in 80.Fa crp_iv 81via the 82.Dv CRYPTO_F_IV_SEPARATE 83flag. 84.It Dv CRYPTO_AES_NIST_GCM_16 85.Bl -tag -width "Block size :" -compact -offset indent 86.It IV size : 8712 88.It Block size : 891 90.It Key size : 9116, 24 or 32 92.It Digest size : 9316 94.El 95.Pp 96This algorithm implements Galois/Counter Mode. 97This cipher uses AEAD 98.Pq Authenticated Encryption with Associated Data 99mode. 100.Pp 101The authentication tag will be read from or written to the offset 102.Va crp_digest_start 103specified in the request. 104.Pp 105Note: The nonce for each request must be provided in 106.Fa crp_iv 107via the 108.Dv CRYPTO_F_IV_SEPARATE 109flag. 110.It Dv CRYPTO_AES_ICM 111.Bl -tag -width "Block size :" -compact -offset indent 112.It IV size : 11316 114.It Block size : 1151 116.It Key size : 11716, 24 or 32 118.El 119.Pp 120This algorithm implements Integer Counter Mode. 121This is similar to what most people call counter mode, but instead of the 122counter being split into a nonce and a counter part, then entire nonce is 123used as the initial counter. 124This does mean that if a counter is required that rolls over at 32 bits, 125the transaction need to be split into two parts where the counter rolls over. 126The counter incremented as a 128-bit big endian number. 127.Pp 128Note: The counter for each request must be provided in 129.Fa crp_iv 130via the 131.Dv CRYPTO_F_IV_SEPARATE 132flag. 133.It Dv CRYPTO_AES_XTS 134.Bl -tag -width "Block size :" -compact -offset indent 135.It IV size : 1368 137.It Block size : 13816 139.It Key size : 14032 or 64 141.El 142.Pp 143This algorithm implements XEX Tweakable Block Cipher with Ciphertext Stealing 144as defined in NIST SP 800-38E. 145.Pp 146NOTE: The ciphertext stealing part is not implemented which is why this cipher 147is listed as having a block size of 16 instead of 1. 148.It Dv CRYPTO_CAMELLIA_CBC 149.Bl -tag -width "Block size :" -compact -offset indent 150.It IV size : 15116 152.It Block size : 15316 154.It Key size : 15516, 24 or 32 156.El 157.Pp 158This algorithm implements Cipher Block Chaining. 159.It Dv CRYPTO_CHACHA20 160.Bl -tag -width "Block size :" -compact -offset indent 161.It IV size : 16216 163.It Block size : 1641 165.It Key size : 16616 or 32 167.El 168.El 169.Sh SEE ALSO 170.Xr crypto 4 , 171.Xr crypto 9 172.Sh HISTORY 173The 174.Nm 175manpage first appeared in 176.Fx 10.1 . 177.Sh BUGS 178Not all the implemented algorithms are listed. 179