Synchronize man3 EVP cipher list with existing implementations, adding:
[openssl.git] / doc / man3 / EVP_aes.pod
1 =pod
2
3 =head1 NAME
4
5 EVP_aes_128_cbc,
6 EVP_aes_192_cbc,
7 EVP_aes_256_cbc,
8 EVP_aes_128_cfb,
9 EVP_aes_192_cfb,
10 EVP_aes_256_cfb,
11 EVP_aes_128_cfb1,
12 EVP_aes_192_cfb1,
13 EVP_aes_256_cfb1,
14 EVP_aes_128_cfb8,
15 EVP_aes_192_cfb8,
16 EVP_aes_256_cfb8,
17 EVP_aes_128_ctr,
18 EVP_aes_192_ctr,
19 EVP_aes_256_ctr,
20 EVP_aes_128_ecb,
21 EVP_aes_192_ecb,
22 EVP_aes_256_ecb,
23 EVP_aes_128_ofb,
24 EVP_aes_192_ofb,
25 EVP_aes_256_ofb,
26 EVP_aes_128_cbc_hmac_sha1,
27 EVP_aes_256_cbc_hmac_sha1,
28 EVP_aes_128_cbc_hmac_sha256,
29 EVP_aes_256_cbc_hmac_sha256,
30 EVP_aes_128_ccm,
31 EVP_aes_192_ccm,
32 EVP_aes_256_ccm,
33 EVP_aes_128_gcm,
34 EVP_aes_192_gcm,
35 EVP_aes_256_gcm,
36 EVP_aes_128_ocb,
37 EVP_aes_192_ocb,
38 EVP_aes_256_ocb,
39 EVP_aes_128_wrap,
40 EVP_aes_192_wrap,
41 EVP_aes_256_wrap,
42 EVP_aes_128_wrap_pad,
43 EVP_aes_192_wrap_pad,
44 EVP_aes_256_wrap_pad,
45 EVP_aes_128_xts,
46 EVP_aes_256_xts
47 - EVP AES cipher
48
49 =head1 SYNOPSIS
50
51 =for comment generic
52
53  #include <openssl/evp.h>
54
55  const EVP_CIPHER *EVP_ciphername(void)
56
57 I<EVP_ciphername> is used a placeholder for any of the described cipher
58 functions, such as I<EVP_aes_128_cbc>.
59
60 =head1 DESCRIPTION
61
62 The AES encryption algorithm for EVP.
63
64 =over 4
65
66 =item EVP_aes_128_cbc(),
67 EVP_aes_192_cbc(),
68 EVP_aes_256_cbc(),
69 EVP_aes_128_cfb(),
70 EVP_aes_192_cfb(),
71 EVP_aes_256_cfb(),
72 EVP_aes_128_cfb1(),
73 EVP_aes_192_cfb1(),
74 EVP_aes_256_cfb1(),
75 EVP_aes_128_cfb8(),
76 EVP_aes_192_cfb8(),
77 EVP_aes_256_cfb8(),
78 EVP_aes_128_ctr(),
79 EVP_aes_192_ctr(),
80 EVP_aes_256_ctr(),
81 EVP_aes_128_ecb(),
82 EVP_aes_192_ecb(),
83 EVP_aes_256_ecb(),
84 EVP_aes_128_ofb(),
85 EVP_aes_192_ofb(),
86 EVP_aes_256_ofb()
87
88 AES for 128, 192 and 256 bit keys in the following modes: CBC, CFB with 128-bit
89 shift, CFB with 1-bit shift, CFB with 8-bit shift, CTR, ECB, and OFB.
90
91 =item EVP_aes_128_cbc_hmac_sha1(),
92 EVP_aes_256_cbc_hmac_sha1()
93
94 Authenticated encryption with AES in CBC mode using SHA-1 as HMAC, with keys of
95 128 and 256 bits length respectively. The authentication tag is 160 bits long.
96
97 WARNING: this is not intended for usage outside of TLS and requires calling of
98 some undocumented ctrl functions. These ciphers do not conform to the EVP AEAD
99 interface.
100
101 =item EVP_aes_128_cbc_hmac_sha256(),
102 EVP_aes_256_cbc_hmac_sha256()
103
104 Authenticated encryption with AES in CBC mode using SHA256 (SHA-2, 256-bits) as
105 HMAC, with keys of 128 and 256 bits length respectively. The authentication tag
106 is 256 bits long.
107
108 WARNING: this is not intended for usage outside of TLS and requires calling of
109 some undocumented ctrl functions. These ciphers do not conform to the EVP AEAD
110 interface.
111
112 =item EVP_aes_128_ccm(),
113 EVP_aes_192_ccm(),
114 EVP_aes_256_ccm(),
115 EVP_aes_128_gcm(),
116 EVP_aes_192_gcm(),
117 EVP_aes_256_gcm(),
118 EVP_aes_128_ocb(),
119 EVP_aes_192_ocb(),
120 EVP_aes_256_ocb()
121
122 AES for 128, 192 and 256 bit keys in CBC-MAC Mode (CCM), Galois Counter Mode
123 (GCM) and OCB Mode respectively. These ciphers require additional control
124 operations to function correctly, see the L<EVP_EncryptInit(3)/AEAD Interface>
125 section for details.
126
127 =item EVP_aes_128_wrap(),
128 EVP_aes_192_wrap(),
129 EVP_aes_256_wrap(),
130 EVP_aes_128_wrap_pad(),
131 EVP_aes_128_wrap(),
132 EVP_aes_192_wrap(),
133 EVP_aes_256_wrap(),
134 EVP_aes_192_wrap_pad(),
135 EVP_aes_128_wrap(),
136 EVP_aes_192_wrap(),
137 EVP_aes_256_wrap(),
138 EVP_aes_256_wrap_pad()
139
140 AES key wrap with 128, 192 and 256 bit keys, as according to RFC 3394 section
141 2.2.1 ("wrap") and RFC 5649 section 4.1 ("wrap with padding") respectively.
142
143 =item EVP_aes_128_xts(),
144 EVP_aes_256_xts()
145
146 AES XTS mode (XTS-AES) is standardized in IEEE Std. 1619-2007 and described in NIST
147 SP 800-38E. The XTS (XEX-based tweaked-codebook mode with ciphertext stealing)
148 mode was designed by Prof. Phillip Rogaway of University of California, Davis,
149 intended for encrypting data on a storage device.
150
151 XTS-AES provides confidentiality but not authentication of data. It also
152 requires a key of double-length for protection of a certain key size.
153 In particular, XTS-AES-128 (B<EVP_aes_128_xts>) takes input of a 256-bit key to
154 achieve AES 128-bit security, and XTS-AES-256 (B<EVP_aes_256_xts>) takes input
155 of a 512-bit key to achieve AES 256-bit security.
156
157 =back
158
159 =head1 RETURN VALUES
160
161 These functions return an B<EVP_CIPHER> structure that contains the
162 implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
163 details of the B<EVP_CIPHER> structure.
164
165 =head1 SEE ALSO
166
167 L<evp(7)>,
168 L<EVP_EncryptInit(3)>,
169 L<EVP_CIPHER_meth_new(3)>
170
171 =head1 COPYRIGHT
172
173 Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
174
175 Licensed under the OpenSSL license (the "License").  You may not use
176 this file except in compliance with the License.  You can obtain a copy
177 in the file LICENSE in the source distribution or at
178 L<https://www.openssl.org/source/license.html>.
179
180 =cut
181