=pod

=head1 NAME

EVP_cast5_cbc,
EVP_cast5_cfb,
EVP_cast5_ecb,
EVP_cast5_ofb
- EVP CAST cipher

=head1 SYNOPSIS

 #include <openssl/evp.h>

 const EVP_CIPHER *EVP_cast5_cbc(void)
 const EVP_CIPHER *EVP_cast5_cfb(void)
 const EVP_CIPHER *EVP_cast5_ecb(void)
 const EVP_CIPHER *EVP_cast5_ofb(void)

=head1 DESCRIPTION

The CAST encryption algorithm for EVP.

This is a variable key length cipher.

=over 4

=item EVP_cast5_cbc(),
EVP_cast5_ecb(),
EVP_cast5_cfb(),
EVP_cast5_ofb()

CAST encryption algorithm in CBC, ECB, CFB and OFB modes respectively.

=back

=head1 RETURN VALUES

These functions return an B<EVP_CIPHER> structure that contains the
implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
details of the B<EVP_CIPHER> structure.

=head1 SEE ALSO

L<evp(7)>,
L<EVP_EncryptInit(3)>,
L<EVP_CIPHER_meth_new(3)>

=head1 COPYRIGHT

Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut

