=pod

=head1 NAME

EVP_MD-common - The OpenSSL EVP_MD implementations, common things

=head1 DESCRIPTION

All the OpenSSL EVP_MD implementations understand the following
L<OSSL_PARAM(3)> entries that are
gettable with L<EVP_MD_get_params(3)>, as well as these:

=over 4

=item "blocksize" (B<OSSL_DIGEST_PARAM_BLOCK_SIZE>) <unsigned integer>

The digest block size.
The length of the "blocksize" parameter should not exceed that of a
B<size_t>.

This value can also be retrieved with L<EVP_MD_block_size(3)>.

=item "size" (B<OSSL_DIGEST_PARAM_SIZE>) <unsigned integer>

The digest output size.
The length of the "size" parameter should not exceed that of a B<size_t>.

This value can also be retrieved with L<EVP_MD_size(3)>.

=item "flags" (B<OSSL_DIGEST_PARAM_FLAGS>) <unsigned integer>

Diverse flags that describe exceptional behaviour for the digest.
These flags are described in L<EVP_MD_meth_set_flags(3)/DESCRIPTION>.

The length of the "flags" parameter should equal that of an
B<unsigned long int>.

=begin comment

The description of these flags should probably be moved.  Also,
EVP_MD_FLAG_FIPS isn't relevant any more.

=end comment

This value can also be retrieved with L<EVP_MD_flags(3)>.

=back

=head1 SEE ALSO

L<EVP_MD_get_params(3)>, L<provider-digest(7)>

=head1 COPYRIGHT

Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (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
