From 629b507eaedde95c7b6195a1f210df56395efb8b Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Sun, 8 Mar 2020 16:37:37 +0100 Subject: [PATCH] DOCS: Fix the description of OSSL_PARAM_allocate_from_text() Fixes #11276 Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/11279) --- doc/man3/OSSL_PARAM_allocate_from_text.pod | 92 ++++++++++++++++------ 1 file changed, 66 insertions(+), 26 deletions(-) diff --git a/doc/man3/OSSL_PARAM_allocate_from_text.pod b/doc/man3/OSSL_PARAM_allocate_from_text.pod index 48dbfc75c5..5b92fdd2a0 100644 --- a/doc/man3/OSSL_PARAM_allocate_from_text.pod +++ b/doc/man3/OSSL_PARAM_allocate_from_text.pod @@ -26,34 +26,74 @@ OpenSSL 3.0 introduces a new mechanism to do the same thing with an array of parameters that contain name, value, value type and value size (see L for more information). -OSSL_PARAM_allocate_from_text() takes a control I, I and -value size I, and given a parameter descriptor array -I, it converts the value to something suitable for -L and stores that in the buffer I, and modifies -the parameter I to match. -I, if not NULL, will be assigned the number of bytes used in -I. -If I is NULL, only I will be modified, everything else is -left untouched, allowing a caller to find out how large the buffer -should be. -I needs to be correctly aligned for the type of the B -I. -If is not NULL, it is set to 1 if the parameter can be located and -to 0 otherwise. - -The caller must remember to free the data of I when it's not -useful any more. - -For parameters having the type B, -B, or B, both -functions will interpret the I differently if the key starts -with "hex". -In that case, the value is decoded first, and the result will be used -as parameter value. +OSSL_PARAM_allocate_from_text() uses I to look up an item in +I. If an item was found, it converts I to something +suitable for that item's I, and stores the result in +I<< to->data >> as well as its size in I<< to->data_size >>. +I<< to->key >> and I<< to->data_type >> are assigned the corresponding +values from the item that was found, and I<< to->return_size >> is set +to zero. + +I<< to->data >> is always allocated using L and +needs to be freed by the caller when it's not useful any more, using +L. + +If I is not NULL, I<*found> is set to 1 if I could be +located in I, and to 0 otherwise. + +=head2 The use of I and I in detail + +OSSL_PARAM_allocate_from_text() takes note if I starts with +"hex", and will only use the rest of I to look up an item in +I in that case. As an example, if I is "hexid", "id" +will be looked up in I. + +When an item in I has been found, I is converted +depending on that item's I, as follows: + +=over 4 + +=item B and B + +If I started with "hex", I is assumed to contain +I hexadecimal characters, which are decoded, and the +resulting bytes become the number stored in the I<< to->data >> +storage. + +If I didn't start with "hex", I is assumed to contain +I decimal characters, which are decoded, and the resulting +bytes become the number stored in the I<< to->data >> storage. + +If I contains characters that couldn't be decoded as +hexadecimal or decimal characters, OSSL_PARAM_allocate_from_text() +considers that an error. + +=item B + +If I started with "hex", OSSL_PARAM_allocate_from_text() +considers that an error. + +Otherwise, I is considered a C string and is copied with no +further checks to the I<< to->data >> storage. + +=item B + +If I started with "hex", I is assumed to contain +I hexadecimal characters, which are decoded, and the +resulting bytes are stored in the I<< to->data >> storage. +If I contains characters that couldn't be decoded as +hexadecimal or decimal characters, OSSL_PARAM_allocate_from_text() +considers that an error. + +If I didn't start with "hex", I bytes from I are +copied to the I<< to->data >> storage. + +=back =head1 RETURN VALUES -OSSL_PARAM_allocate_from_text() returns 1 on success, and 0 on error. +OSSL_PARAM_allocate_from_text() returns 1 if I was found in +I and there was no other failure, otherwise 0. =head1 NOTES @@ -65,7 +105,7 @@ The following B attributes are used: =item I -=item I +=item I =item I -- 2.25.1