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