Add some documentation to describe the encap/decap requirements
Document the fact that we now require unwrappedlen/wrappedlen to be set to the size of the unwrapped/wrapped buffers Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Viktor Dukhovni <viktor@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/25522)
This commit is contained in:
parent
796b2caa9e
commit
1c1223ff53
@ -31,10 +31,13 @@ key that is used during decapsulation.
|
||||
The EVP_PKEY_decapsulate() function performs a private key decapsulation
|
||||
operation using I<ctx>. The data to be decapsulated is specified using the
|
||||
I<wrapped> and I<wrappedlen> parameters.
|
||||
If I<unwrapped> is NULL then the maximum size of the output secret buffer
|
||||
If I<unwrapped> is NULL then the size of the output secret buffer
|
||||
is written to I<*unwrappedlen>. If I<unwrapped> is not NULL and the
|
||||
call is successful then the decapsulated secret data is written to I<unwrapped>
|
||||
and the amount of data written to I<*unwrappedlen>.
|
||||
and the amount of data written to I<*unwrappedlen>. Note that, if I<unwrappedlen>
|
||||
is not NULL in this call, the value it points to must be initialised to the length of
|
||||
I<unwrapped>, so that the call can validate it is of sufficient size to hold the
|
||||
result of the operation.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
|
@ -41,7 +41,10 @@ unless I<genkeylen> is NULL.
|
||||
If I<wrappedkey> is not NULL and the call is successful then the
|
||||
internally generated key is written to I<genkey> and its size is written to
|
||||
I<*genkeylen>. The encapsulated version of the generated key is written to
|
||||
I<wrappedkey> and its size is written to I<*wrappedkeylen>.
|
||||
I<wrappedkey> and its size is written to I<*wrappedkeylen>. Note that if
|
||||
I<wrappedlen> is not NULL, then the value it points to must initially hold the size of
|
||||
the I<unwrapped> buffer so that its size can be validated by the call, ensuring
|
||||
it is large enough to hold the result written to I<wrapped>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
|
@ -298,6 +298,11 @@ static int rsasve_generate(PROV_RSA_CTX *prsactx,
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* If outlen is specified, then it must report the length
|
||||
* of the out buffer on input so that we can confirm
|
||||
* its size is sufficent for encapsulation
|
||||
*/
|
||||
if (outlen != NULL && *outlen < nlen) {
|
||||
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_OUTPUT_LENGTH);
|
||||
return 0;
|
||||
@ -372,6 +377,12 @@ static int rsasve_recover(PROV_RSA_CTX *prsactx,
|
||||
ERR_raise(ERR_LIB_PROV, PROV_R_BAD_LENGTH);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* If outlen is specified, then it must report the length
|
||||
* of the out buffer, so that we can confirm that it is of
|
||||
* sufficient size to hold the output of decapsulation
|
||||
*/
|
||||
if (outlen != NULL && *outlen < nlen) {
|
||||
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_OUTPUT_LENGTH);
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user