Blame doc/man3/EVP_aes.pod

Packit c4476c
=pod
Packit c4476c
Packit c4476c
=head1 NAME
Packit c4476c
Packit c4476c
EVP_aes_128_cbc,
Packit c4476c
EVP_aes_192_cbc,
Packit c4476c
EVP_aes_256_cbc,
Packit c4476c
EVP_aes_128_cfb,
Packit c4476c
EVP_aes_192_cfb,
Packit c4476c
EVP_aes_256_cfb,
Packit c4476c
EVP_aes_128_cfb1,
Packit c4476c
EVP_aes_192_cfb1,
Packit c4476c
EVP_aes_256_cfb1,
Packit c4476c
EVP_aes_128_cfb8,
Packit c4476c
EVP_aes_192_cfb8,
Packit c4476c
EVP_aes_256_cfb8,
Packit c4476c
EVP_aes_128_cfb128,
Packit c4476c
EVP_aes_192_cfb128,
Packit c4476c
EVP_aes_256_cfb128,
Packit c4476c
EVP_aes_128_ctr,
Packit c4476c
EVP_aes_192_ctr,
Packit c4476c
EVP_aes_256_ctr,
Packit c4476c
EVP_aes_128_ecb,
Packit c4476c
EVP_aes_192_ecb,
Packit c4476c
EVP_aes_256_ecb,
Packit c4476c
EVP_aes_128_ofb,
Packit c4476c
EVP_aes_192_ofb,
Packit c4476c
EVP_aes_256_ofb,
Packit c4476c
EVP_aes_128_cbc_hmac_sha1,
Packit c4476c
EVP_aes_256_cbc_hmac_sha1,
Packit c4476c
EVP_aes_128_cbc_hmac_sha256,
Packit c4476c
EVP_aes_256_cbc_hmac_sha256,
Packit c4476c
EVP_aes_128_ccm,
Packit c4476c
EVP_aes_192_ccm,
Packit c4476c
EVP_aes_256_ccm,
Packit c4476c
EVP_aes_128_gcm,
Packit c4476c
EVP_aes_192_gcm,
Packit c4476c
EVP_aes_256_gcm,
Packit c4476c
EVP_aes_128_ocb,
Packit c4476c
EVP_aes_192_ocb,
Packit c4476c
EVP_aes_256_ocb,
Packit c4476c
EVP_aes_128_wrap,
Packit c4476c
EVP_aes_192_wrap,
Packit c4476c
EVP_aes_256_wrap,
Packit c4476c
EVP_aes_128_wrap_pad,
Packit c4476c
EVP_aes_192_wrap_pad,
Packit c4476c
EVP_aes_256_wrap_pad,
Packit c4476c
EVP_aes_128_xts,
Packit c4476c
EVP_aes_256_xts
Packit c4476c
- EVP AES cipher
Packit c4476c
Packit c4476c
=head1 SYNOPSIS
Packit c4476c
Packit c4476c
=for comment generic
Packit c4476c
Packit c4476c
 #include <openssl/evp.h>
Packit c4476c
Packit c4476c
 const EVP_CIPHER *EVP_ciphername(void)
Packit c4476c
Packit c4476c
I<EVP_ciphername> is used a placeholder for any of the described cipher
Packit c4476c
functions, such as I<EVP_aes_128_cbc>.
Packit c4476c
Packit c4476c
=head1 DESCRIPTION
Packit c4476c
Packit c4476c
The AES encryption algorithm for EVP.
Packit c4476c
Packit c4476c
=over 4
Packit c4476c
Packit c4476c
=item EVP_aes_128_cbc(),
Packit c4476c
EVP_aes_192_cbc(),
Packit c4476c
EVP_aes_256_cbc(),
Packit c4476c
EVP_aes_128_cfb(),
Packit c4476c
EVP_aes_192_cfb(),
Packit c4476c
EVP_aes_256_cfb(),
Packit c4476c
EVP_aes_128_cfb1(),
Packit c4476c
EVP_aes_192_cfb1(),
Packit c4476c
EVP_aes_256_cfb1(),
Packit c4476c
EVP_aes_128_cfb8(),
Packit c4476c
EVP_aes_192_cfb8(),
Packit c4476c
EVP_aes_256_cfb8(),
Packit c4476c
EVP_aes_128_cfb128(),
Packit c4476c
EVP_aes_192_cfb128(),
Packit c4476c
EVP_aes_256_cfb128(),
Packit c4476c
EVP_aes_128_ctr(),
Packit c4476c
EVP_aes_192_ctr(),
Packit c4476c
EVP_aes_256_ctr(),
Packit c4476c
EVP_aes_128_ecb(),
Packit c4476c
EVP_aes_192_ecb(),
Packit c4476c
EVP_aes_256_ecb(),
Packit c4476c
EVP_aes_128_ofb(),
Packit c4476c
EVP_aes_192_ofb(),
Packit c4476c
EVP_aes_256_ofb()
Packit c4476c
Packit c4476c
AES for 128, 192 and 256 bit keys in the following modes: CBC, CFB with 128-bit
Packit c4476c
shift, CFB with 1-bit shift, CFB with 8-bit shift, CTR, ECB, and OFB.
Packit c4476c
Packit c4476c
=item EVP_aes_128_cbc_hmac_sha1(),
Packit c4476c
EVP_aes_256_cbc_hmac_sha1()
Packit c4476c
Packit c4476c
Authenticated encryption with AES in CBC mode using SHA-1 as HMAC, with keys of
Packit c4476c
128 and 256 bits length respectively. The authentication tag is 160 bits long.
Packit c4476c
Packit c4476c
WARNING: this is not intended for usage outside of TLS and requires calling of
Packit c4476c
some undocumented ctrl functions. These ciphers do not conform to the EVP AEAD
Packit c4476c
interface.
Packit c4476c
Packit c4476c
=item EVP_aes_128_cbc_hmac_sha256(),
Packit c4476c
EVP_aes_256_cbc_hmac_sha256()
Packit c4476c
Packit c4476c
Authenticated encryption with AES in CBC mode using SHA256 (SHA-2, 256-bits) as
Packit c4476c
HMAC, with keys of 128 and 256 bits length respectively. The authentication tag
Packit c4476c
is 256 bits long.
Packit c4476c
Packit c4476c
WARNING: this is not intended for usage outside of TLS and requires calling of
Packit c4476c
some undocumented ctrl functions. These ciphers do not conform to the EVP AEAD
Packit c4476c
interface.
Packit c4476c
Packit c4476c
=item EVP_aes_128_ccm(),
Packit c4476c
EVP_aes_192_ccm(),
Packit c4476c
EVP_aes_256_ccm(),
Packit c4476c
EVP_aes_128_gcm(),
Packit c4476c
EVP_aes_192_gcm(),
Packit c4476c
EVP_aes_256_gcm(),
Packit c4476c
EVP_aes_128_ocb(),
Packit c4476c
EVP_aes_192_ocb(),
Packit c4476c
EVP_aes_256_ocb()
Packit c4476c
Packit c4476c
AES for 128, 192 and 256 bit keys in CBC-MAC Mode (CCM), Galois Counter Mode
Packit c4476c
(GCM) and OCB Mode respectively. These ciphers require additional control
Packit c4476c
operations to function correctly, see the L<EVP_EncryptInit(3)/AEAD Interface>
Packit c4476c
section for details.
Packit c4476c
Packit c4476c
=item EVP_aes_128_wrap(),
Packit c4476c
EVP_aes_192_wrap(),
Packit c4476c
EVP_aes_256_wrap(),
Packit c4476c
EVP_aes_128_wrap_pad(),
Packit c4476c
EVP_aes_128_wrap(),
Packit c4476c
EVP_aes_192_wrap(),
Packit c4476c
EVP_aes_256_wrap(),
Packit c4476c
EVP_aes_192_wrap_pad(),
Packit c4476c
EVP_aes_128_wrap(),
Packit c4476c
EVP_aes_192_wrap(),
Packit c4476c
EVP_aes_256_wrap(),
Packit c4476c
EVP_aes_256_wrap_pad()
Packit c4476c
Packit c4476c
AES key wrap with 128, 192 and 256 bit keys, as according to RFC 3394 section
Packit c4476c
2.2.1 ("wrap") and RFC 5649 section 4.1 ("wrap with padding") respectively.
Packit c4476c
Packit c4476c
=item EVP_aes_128_xts(),
Packit c4476c
EVP_aes_256_xts()
Packit c4476c
Packit c4476c
AES XTS mode (XTS-AES) is standardized in IEEE Std. 1619-2007 and described in NIST
Packit c4476c
SP 800-38E. The XTS (XEX-based tweaked-codebook mode with ciphertext stealing)
Packit c4476c
mode was designed by Prof. Phillip Rogaway of University of California, Davis,
Packit c4476c
intended for encrypting data on a storage device.
Packit c4476c
Packit c4476c
XTS-AES provides confidentiality but not authentication of data. It also
Packit c4476c
requires a key of double-length for protection of a certain key size.
Packit c4476c
In particular, XTS-AES-128 (B<EVP_aes_128_xts>) takes input of a 256-bit key to
Packit c4476c
achieve AES 128-bit security, and XTS-AES-256 (B<EVP_aes_256_xts>) takes input
Packit c4476c
of a 512-bit key to achieve AES 256-bit security.
Packit c4476c
Packit c4476c
The XTS implementation in OpenSSL does not support streaming. That is there must
Packit c4476c
only be one L<EVP_EncryptUpdate(3)> call per L<EVP_EncryptInit_ex(3)> call (and
Packit c4476c
similarly with the "Decrypt" functions).
Packit c4476c
Packit c4476c
The I<iv> parameter to L<EVP_EncryptInit_ex(3)> or L<EVP_DecryptInit_ex(3)> is
Packit c4476c
the XTS "tweak" value.
Packit c4476c
Packit c4476c
=back
Packit c4476c
Packit c4476c
=head1 RETURN VALUES
Packit c4476c
Packit c4476c
These functions return an B<EVP_CIPHER> structure that contains the
Packit c4476c
implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
Packit c4476c
details of the B<EVP_CIPHER> structure.
Packit c4476c
Packit c4476c
=head1 SEE ALSO
Packit c4476c
Packit c4476c
L<evp(7)>,
Packit c4476c
L<EVP_EncryptInit(3)>,
Packit c4476c
L<EVP_CIPHER_meth_new(3)>
Packit c4476c
Packit c4476c
=head1 COPYRIGHT
Packit c4476c
Packit c4476c
Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
Packit c4476c
Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
this file except in compliance with the License.  You can obtain a copy
Packit c4476c
in the file LICENSE in the source distribution or at
Packit c4476c
L<https://www.openssl.org/source/license.html>.
Packit c4476c
Packit c4476c
=cut
Packit c4476c