diff options
author | Richard Levitte <levitte@openssl.org> | 2020-10-17 07:57:04 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2020-11-11 12:43:27 +0100 |
commit | 8a98a507fb9a06254c79af4d9c9104f5f300a032 (patch) | |
tree | be686ba59fee1a693640b6cd19075243d7fe12df /doc | |
parent | 45da4a0fc54bce2c5fd99ce4a3fbe8e5456092ea (diff) |
ENCODER: Add support for specifying the outermost output structure
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/13167)
Diffstat (limited to 'doc')
-rw-r--r-- | doc/man3/OSSL_ENCODER_CTX.pod | 68 | ||||
-rw-r--r-- | doc/man7/provider-encoder.pod | 13 |
2 files changed, 59 insertions, 22 deletions
diff --git a/doc/man3/OSSL_ENCODER_CTX.pod b/doc/man3/OSSL_ENCODER_CTX.pod index e8771fc087..d4ea01060f 100644 --- a/doc/man3/OSSL_ENCODER_CTX.pod +++ b/doc/man3/OSSL_ENCODER_CTX.pod @@ -7,8 +7,9 @@ OSSL_ENCODER_CTX_new, OSSL_ENCODER_settable_ctx_params, OSSL_ENCODER_CTX_set_params, OSSL_ENCODER_CTX_free, -OSSL_ENCODER_CTX_set_output_type, OSSL_ENCODER_CTX_set_selection, +OSSL_ENCODER_CTX_set_output_type, +OSSL_ENCODER_CTX_set_output_structure, OSSL_ENCODER_CTX_add_encoder, OSSL_ENCODER_CTX_add_extra, OSSL_ENCODER_CTX_get_num_encoders, @@ -17,6 +18,7 @@ OSSL_ENCODER_INSTANCE_get_encoder, OSSL_ENCODER_INSTANCE_get_encoder_ctx, OSSL_ENCODER_INSTANCE_get_input_type, OSSL_ENCODER_INSTANCE_get_output_type, +OSSL_ENCODER_INSTANCE_get_output_structure, OSSL_ENCODER_CONSTRUCT, OSSL_ENCODER_CLEANUP, OSSL_ENCODER_CTX_set_construct, @@ -36,9 +38,11 @@ OSSL_ENCODER_CTX_set_cleanup const OSSL_PARAM params[]); void OSSL_ENCODER_CTX_free(OSSL_ENCODER_CTX *ctx); + int OSSL_ENCODER_CTX_set_selection(OSSL_ENCODER_CTX *ctx, int selection); int OSSL_ENCODER_CTX_set_output_type(OSSL_ENCODER_CTX *ctx, const char *output_type); - int OSSL_ENCODER_CTX_set_selection(OSSL_ENCODER_CTX *ctx, int selection); + int OSSL_ENCODER_CTX_set_output_structure(OSSL_ENCODER_CTX *ctx, + const char *output_structure); int OSSL_ENCODER_CTX_add_encoder(OSSL_ENCODER_CTX *ctx, OSSL_ENCODER *encoder); int OSSL_ENCODER_CTX_add_extra(OSSL_ENCODER_CTX *ctx, @@ -54,6 +58,8 @@ OSSL_ENCODER_CTX_set_cleanup OSSL_ENCODER_INSTANCE_get_input_type(OSSL_ENCODER_INSTANCE *encoder_inst); const char * OSSL_ENCODER_INSTANCE_get_output_type(OSSL_ENCODER_INSTANCE *encoder_inst); + const char * + OSSL_ENCODER_INSTANCE_get_output_structure(OSSL_ENCODER_INSTANCE *encoder_inst); typedef const void *OSSL_ENCODER_CONSTRUCT(OSSL_ENCODER_INSTANCE *encoder_inst, void *construct_data); @@ -110,8 +116,13 @@ encoder chains. OSSL_ENCODER_CTX_set_output_type() sets the ending output type. This must be specified, and determines if a complete encoder chain is available. -OSSL_ENCODER_CTX_num_encoders() gets the number of encoders currently added -to the context I<ctx>. +OSSL_ENCODER_CTX_set_output_structure() sets the desired output structure. +This may be used to determines what encoder implementations may be used. +Depending on the type of object being encoded, the output structure may +not be relevant. + +OSSL_ENCODER_CTX_get_num_encoders() gets the number of encoders currently +added to the context I<ctx>. OSSL_ENCODER_CTX_set_construct() sets the constructor I<construct>. @@ -144,18 +155,28 @@ or NULL to indicate that an error has occured. These utility functions may be used by a constructor: -OSSL_ENCODER_INSTANCE_encoder() can be used to get the encoder method from a -encoder instance I<encoder_inst>. +OSSL_ENCODER_INSTANCE_get_encoder() can be used to get the encoder +implementation of the encoder instance I<encoder_inst>. + +OSSL_ENCODER_INSTANCE_get_encoder_ctx() can be used to get the encoder +implementation's provider context of the encoder instance I<encoder_inst>. -OSSL_ENCODER_INSTANCE_encoder_ctx() can be used to get the encoder method's -provider context from a encoder instance I<encoder_inst>. +OSSL_ENCODER_INSTANCE_get_input_type() can be used to get the input type for +the encoder implementation of the encoder instance I<encoder_inst>. +This may be NULL. -OSSL_ENCODER_INSTANCE_input_type() can be used to get the input type for -encoder method from a encoder instance I<encoder_inst>. This may be NULL. +OSSL_ENCODER_INSTANCE_get_output_type() can be used to get the output type +for the encoder implementation of the encoder instance I<encoder_inst>. +This will never be NULL. -OSSL_ENCODER_INSTANCE_output_type() can be used to get the output type for -encoder method from a encoder instance I<encoder_inst>. This will never be -NULL. +OSSL_ENCODER_INSTANCE_get_output_type() can be used to get the output type +for the encoder implementation of the encoder instance I<encoder_inst>. +This will never be NULL. + +OSSL_ENCODER_INSTANCE_get_output_structure() can be used to get the output +structure for the encoder implementation of the encoder instance +I<encoder_inst>. +This may be NULL. =head1 RETURN VALUES @@ -169,25 +190,28 @@ OSSL_ENCODER_CTX_set_params() returns 1 if all recognised parameters were valid, or 0 if one of them was invalid or caused some other failure in the implementation. -OSSL_DECODER_CTX_add_decoder(), OSSL_DECODER_CTX_add_extra(), -OSSL_DECODER_CTX_set_construct(), OSSL_DECODER_CTX_set_construct_data() and -OSSL_DECODER_CTX_set_cleanup() return 1 on success, or 0 on failure. +OSSL_ENCODER_CTX_add_encoder(), OSSL_ENCODER_CTX_add_extra(), +OSSL_ENCODER_CTX_set_construct(), OSSL_ENCODER_CTX_set_construct_data() and +OSSL_ENCODER_CTX_set_cleanup() return 1 on success, or 0 on failure. -OSSL_DECODER_CTX_num_decoders() returns the current number of decoders. It -returns 0 if I<ctx> is NULL. +OSSL_ENCODER_CTX_get_num_encoders() returns the current number of encoders. +It returns 0 if I<ctx> is NULL. -OSSL_DECODER_INSTANCE_decoder() returns an B<OSSL_DECODER> pointer on +OSSL_ENCODER_INSTANCE_get_encoder() returns an B<OSSL_ENCODER> pointer on success, or NULL on failure. -OSSL_DECODER_INSTANCE_decoder_ctx() returns a provider context pointer on +OSSL_ENCODER_INSTANCE_get_encoder_ctx() returns a provider context pointer on success, or NULL on failure. -OSSL_ENCODER_INSTANCE_input_type() returns a string with the name of the +OSSL_ENCODER_INSTANCE_get_output_type() returns a string with the name of the input type, if relevant. NULL is a valid returned value. -OSSL_ENCODER_INSTANCE_output_type() returns a string with the name of the +OSSL_ENCODER_INSTANCE_get_output_type() returns a string with the name of the output type. +OSSL_ENCODER_INSTANCE_get_output_structure() returns a string with the name +of the output structure. + =head1 SEE ALSO L<provider(7)>, L<OSSL_ENCODER(3)> diff --git a/doc/man7/provider-encoder.pod b/doc/man7/provider-encoder.pod index 8048458b94..92a8b2d3ec 100644 --- a/doc/man7/provider-encoder.pod +++ b/doc/man7/provider-encoder.pod @@ -251,6 +251,19 @@ This parameter is I<mandatory>. in a set of properties, it would be possible to determine the output type from the C<output> property. +=item "output-structure" (B<OSSL_ENCODER_PARAM_OUTPUT_STRUCTURE>) <UTF8 string> + +This is used to specify the outermost output structure for an ENCODER +implementation. + +For example, an output of type "DER" for a key pair could be structured +using PKCS#8, or a key type specific structure, such as PKCS#1 for RSA +keys. + +=for comment If we had functionality to get the value of a specific property +in a set of properties, it would be possible to determine the output +structure from the C<structure> property. + =back =head2 Encoder operation parameters |