diff options
author | Richard Levitte <levitte@openssl.org> | 2020-07-08 23:04:08 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2020-07-24 16:32:00 +0200 |
commit | c3e4c1f325e6fc829a5b00a19a6019249cac781a (patch) | |
tree | cc05f9636e452d3fba177163cfca9d13b403a4d6 /util | |
parent | 5dacb38ccefd45d832c9710b4dd0121fdcbdac72 (diff) | |
download | openssl-c3e4c1f325e6fc829a5b00a19a6019249cac781a.tar.gz |
DESERIALIZER: Add foundation for deserializers
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)
Diffstat (limited to 'util')
-rw-r--r-- | util/libcrypto.num | 30 | ||||
-rw-r--r-- | util/missingcrypto.txt | 1 | ||||
-rw-r--r-- | util/other.syms | 6 |
3 files changed, 37 insertions, 0 deletions
diff --git a/util/libcrypto.num b/util/libcrypto.num index 5aff5d5c44..30d500f18f 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -5149,3 +5149,33 @@ X509_STORE_load_store_with_libctx ? 3_0_0 EXIST::FUNCTION: X509_STORE_load_locations_with_libctx ? 3_0_0 EXIST::FUNCTION: X509_STORE_set_default_paths_with_libctx ? 3_0_0 EXIST::FUNCTION: OSSL_STORE_open_with_libctx ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_fetch ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_up_ref ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_free ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_provider ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_properties ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_number ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_is_a ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_do_all_provided ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_names_do_all ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_settable_ctx_params ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_new ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_params ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_free ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_cipher ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_passphrase ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_passphrase_cb ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_passphrase_ui ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_from_bio ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_from_fp ? 3_0_0 EXIST::FUNCTION:STDIO +OSSL_DESERIALIZER_CTX_add_deserializer ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_add_extra ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_num_deserializers ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_finalizer ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_CTX_set_input_type ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_export ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_INSTANCE_deserializer ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_INSTANCE_deserializer_ctx ? 3_0_0 EXIST::FUNCTION: +ERR_load_OSSL_DESERIALIZER_strings ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_gettable_params ? 3_0_0 EXIST::FUNCTION: +OSSL_DESERIALIZER_get_params ? 3_0_0 EXIST::FUNCTION: diff --git a/util/missingcrypto.txt b/util/missingcrypto.txt index 0034a711d1..0e5bb35878 100644 --- a/util/missingcrypto.txt +++ b/util/missingcrypto.txt @@ -636,6 +636,7 @@ ERR_load_KDF_strings(3) ERR_load_OBJ_strings(3) ERR_load_OCSP_strings(3) ERR_load_OSSL_SERIALIZER_strings(3) +ERR_load_OSSL_DESERIALIZER_strings(3) ERR_load_OSSL_STORE_strings(3) ERR_load_PEM_strings(3) ERR_load_PKCS12_strings(3) diff --git a/util/other.syms b/util/other.syms index 54a2b71abb..a623ff5e77 100644 --- a/util/other.syms +++ b/util/other.syms @@ -41,6 +41,12 @@ GEN_SESSION_CB datatype OPENSSL_Applink external OPENSSL_CTX datatype NAMING_AUTHORITY datatype +OSSL_DESERIALIZER datatype +OSSL_DESERIALIZER_CTX datatype +OSSL_DESERIALIZER_FINALIZER datatype +OSSL_DESERIALIZER_CLEANER datatype +OSSL_DESERIALIZER_INSTANCE datatype +OSSL_DESERIALIZER_CTX datatype OSSL_HTTP_bio_cb_t datatype OSSL_PARAM datatype OSSL_PROVIDER datatype |