mirror of
https://github.com/openssl/openssl.git
synced 2024-12-03 05:41:46 +08:00
c3e4c1f325
This adds a method OSSL_DESERIALIZER, a deserializer context and basic support to use a set of serializers to get a desired type of data, as well as deserializer chains. The idea is that the caller can call OSSL_DESERIALIZER_CTX_add_serializer() to set up the set of desired results, and to add possible chains, call OSSL_DESERIALIZER_CTX_add_extra(). All these deserializers are pushed on an internal stack. The actual deserialization is then performed using functions like OSSL_DESERIALIZER_from_bio(). When performing deserialization, the inernal stack is walked backwards, keeping track of the deserialized data and its type along the way, until the data kan be processed into the desired type of data. Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/12410)
75 lines
2.3 KiB
Plaintext
75 lines
2.3 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
OSSL_DESERIALIZER_CTX,
|
|
OSSL_DESERIALIZER_CTX_new,
|
|
OSSL_DESERIALIZER_settable_ctx_params,
|
|
OSSL_DESERIALIZER_CTX_set_params,
|
|
OSSL_DESERIALIZER_CTX_free
|
|
- Serializer context routines
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
#include <openssl/deserializer.h>
|
|
|
|
typedef struct ossl_deserializer_ctx_st OSSL_DESERIALIZER_CTX;
|
|
|
|
OSSL_DESERIALIZER_CTX *OSSL_DESERIALIZER_CTX_new(OPENSSL_CTX *libctx);
|
|
const OSSL_PARAM *OSSL_DESERIALIZER_settable_ctx_params(OSSL_DESERIALIZER *deser);
|
|
int OSSL_DESERIALIZER_CTX_set_params(OSSL_DESERIALIZER_CTX *ctx,
|
|
const OSSL_PARAM params[]);
|
|
void OSSL_DESERIALIZER_CTX_free(OSSL_DESERIALIZER_CTX *ctx);
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
B<OSSL_DESERIALIZER_CTX> is a context with which B<OSSL_DESERIALIZER>
|
|
operations are performed. The context typically holds values, both
|
|
internal and supplied by the application, which are useful for the
|
|
implementations supplied by providers.
|
|
|
|
OSSL_DESERIALIZER_CTX_new() creates a new empty B<OSSL_DESERIALIZER_CTX>.
|
|
|
|
OSSL_DESERIALIZER_settable_ctx_params() returns an L<OSSL_PARAM(3)>
|
|
array of parameter descriptors.
|
|
|
|
OSSL_DESERIALIZER_CTX_set_params() attempts to set parameters specified
|
|
with an L<OSSL_PARAM(3)> array I<params>. These parameters are passed
|
|
to all deserializers that have been added to the I<ctx> so far.
|
|
Parameters that an implementation doesn't recognise should be ignored
|
|
by it.
|
|
|
|
OSSL_DESERIALIZER_CTX_free() frees the given context I<ctx>.
|
|
|
|
=head1 RETURN VALUES
|
|
|
|
OSSL_DESERIALIZER_CTX_new() returns a pointer to a
|
|
B<OSSL_DESERIALIZER_CTX>, or NULL if the context structure couldn't be
|
|
allocated.
|
|
|
|
OSSL_DESERIALIZER_settable_ctx_params() returns an L<OSSL_PARAM(3)>
|
|
array, or NULL if none is available.
|
|
|
|
OSSL_DESERIALIZER_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.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<provider(7)>, L<OSSL_DESERIALIZER(3)>, L<OSSL_DESERIALIZER_from_bio(3)>
|
|
|
|
=head1 HISTORY
|
|
|
|
The functions described here were added in OpenSSL 3.0.
|
|
|
|
=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
|