mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
DOC: New file for EVP_PKEY_size(), EVP_PKEY_bits() and EVP_PKEY_security_bits()
We change the description to be about the key rather than the signature. How the key size is related to the signature is explained in the description of EVP_SignFinal() anyway. Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com> (Merged from https://github.com/openssl/openssl/pull/10778)
This commit is contained in:
parent
81a624f2c2
commit
6942a0d6fe
80
doc/man3/EVP_PKEY_size.pod
Normal file
80
doc/man3/EVP_PKEY_size.pod
Normal file
@ -0,0 +1,80 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_PKEY_size, EVP_PKEY_bits, EVP_PKEY_security_bits
|
||||
- EVP_PKEY information functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/evp.h>
|
||||
|
||||
int EVP_PKEY_size(const EVP_PKEY *pkey);
|
||||
int EVP_PKEY_bits(const EVP_PKEY *pkey);
|
||||
int EVP_PKEY_security_bits(const EVP_PKEY *pkey);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
EVP_PKEY_size() returns the maximum suitable size for the output
|
||||
buffers for almost all operations that can be done with I<pkey>.
|
||||
The primary documented use is with L<EVP_SignFinal(3)> and
|
||||
L<EVP_SealInit(3)>, but it isn't limited there. The returned size is
|
||||
also large enough for the output buffer of L<EVP_PKEY_sign(3)>,
|
||||
L<EVP_PKEY_encrypt(3)>, L<EVP_PKEY_decrypt(3)>, L<EVP_PKEY_derive(3)>.
|
||||
|
||||
It must be stressed that, unless the documentation for the operation
|
||||
that's being performed says otherwise, the size returned by
|
||||
EVP_PKEY_size() is only preliminary and not exact, so the final
|
||||
contents of the target buffer may be smaller. It is therefore crucial
|
||||
to take note of the size given back by the function that performs the
|
||||
operation, such as L<EVP_PKEY_sign(3)> (the I<siglen> argument will
|
||||
receive that length), to avoid bugs.
|
||||
|
||||
EVP_PKEY_bits() returns the cryptographic length of the cryptosystem
|
||||
to which the key in I<pkey> belongs, in bits. Note that the definition
|
||||
of cryptographic length is specific to the key cryptosystem.
|
||||
|
||||
EVP_PKEY_security_bits() returns the number of security bits of the given
|
||||
I<pkey>, bits of security is defined in NIST SP800-57.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_PKEY_size(), EVP_PKEY_bits() and EVP_PKEY_security_bits() return a
|
||||
positive number, or 0 if this size isn't available.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Most functions that have an output buffer and are mentioned with
|
||||
EVP_PKEY_size() have a functionality where you can pass NULL for the
|
||||
buffer and still pass a pointer to an integer and get the exact size
|
||||
that this function call delivers in the context that it's called in.
|
||||
This allows those functions to be called twice, once to find out the
|
||||
exact buffer size, then allocate the buffer in between, and call that
|
||||
function again actually output the data. For those functions, it
|
||||
isn't strictly necessary to call EVP_PKEY_size() to find out the
|
||||
buffer size, but may be useful in cases where it's desirable to know
|
||||
the upper limit in advance.
|
||||
|
||||
It should also be especially noted that EVP_PKEY_size() shouldn't be
|
||||
used to get the output size for EVP_DigestSignFinal(), according to
|
||||
L<EVP_DigestSignFinal(3)/NOTES>.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_SignFinal(3)>,
|
||||
L<EVP_SealInit(3)>,
|
||||
L<EVP_PKEY_sign(3)>,
|
||||
L<EVP_PKEY_encrypt(3)>,
|
||||
L<EVP_PKEY_decrypt(3)>,
|
||||
L<EVP_PKEY_derive(3)>
|
||||
|
||||
=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
|
@ -2,10 +2,8 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_PKEY_size,
|
||||
EVP_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal,
|
||||
EVP_PKEY_security_bits - EVP signing
|
||||
functions
|
||||
EVP_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal
|
||||
- EVP signing functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
@ -17,9 +15,6 @@ functions
|
||||
|
||||
void EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type);
|
||||
|
||||
int EVP_PKEY_size(const EVP_PKEY *pkey);
|
||||
int EVP_PKEY_security_bits(const EVP_PKEY *pkey);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The EVP signature routines are a high level interface to digital
|
||||
@ -34,32 +29,22 @@ signature context B<ctx>. This function can be called several times on the
|
||||
same B<ctx> to include additional data.
|
||||
|
||||
EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and
|
||||
places the signature in B<sig>. B<sig> must be at least EVP_PKEY_size(pkey)
|
||||
places the signature in B<sig>. B<sig> must be at least C<EVP_PKEY_size(pkey)>
|
||||
bytes in size. B<s> is an OUT parameter, and not used as an IN parameter.
|
||||
The number of bytes of data written (i.e. the length of the signature)
|
||||
will be written to the integer at B<s>, at most EVP_PKEY_size(pkey) bytes
|
||||
will be written to the integer at B<s>, at most C<EVP_PKEY_size(pkey)> bytes
|
||||
will be written.
|
||||
|
||||
EVP_SignInit() initializes a signing context B<ctx> to use the default
|
||||
implementation of digest B<type>.
|
||||
|
||||
EVP_PKEY_size() returns the maximum size of a signature in bytes. The actual
|
||||
signature returned by EVP_SignFinal() may be smaller.
|
||||
|
||||
EVP_PKEY_security_bits() returns the number of security bits of the given B<pkey>,
|
||||
bits of security is defined in NIST SP800-57.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_SignInit_ex(), EVP_SignUpdate() and EVP_SignFinal() return 1
|
||||
for success and 0 for failure.
|
||||
|
||||
EVP_PKEY_size() returns the maximum size of a signature in bytes.
|
||||
|
||||
The error codes can be obtained by L<ERR_get_error(3)>.
|
||||
|
||||
EVP_PKEY_security_bits() returns the number of security bits.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
The B<EVP> interface to digital signatures should almost always be used in
|
||||
@ -95,6 +80,7 @@ The previous two bugs are fixed in the newer EVP_SignDigest*() function.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_PKEY_size(3)>, L<EVP_PKEY_bits(3)>, L<EVP_PKEY_security_bits(3)>,
|
||||
L<EVP_VerifyInit(3)>,
|
||||
L<EVP_DigestInit(3)>,
|
||||
L<evp(7)>, L<HMAC(3)>, L<MD2(3)>,
|
||||
|
@ -503,7 +503,6 @@ EVP_PKEY_add1_attr_by_NID(3)
|
||||
EVP_PKEY_add1_attr_by_OBJ(3)
|
||||
EVP_PKEY_add1_attr_by_txt(3)
|
||||
EVP_PKEY_assign(3)
|
||||
EVP_PKEY_bits(3)
|
||||
EVP_PKEY_decrypt_old(3)
|
||||
EVP_PKEY_delete_attr(3)
|
||||
EVP_PKEY_encrypt_old(3)
|
||||
|
Loading…
Reference in New Issue
Block a user