diff options
author | Richard Levitte <levitte@openssl.org> | 2020-01-15 14:09:54 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2020-01-21 14:06:54 +0100 |
commit | 7b131de2bb2be8582c6dfc50bdd3cbc49e1a08be (patch) | |
tree | 1465d32d6986b8f16dcc13471066778740da4e86 /providers | |
parent | 0b9dd3842f9bbe7a7c290187056a96827d848f52 (diff) |
PROV: Add support for error queue marks and implement in FIPS module
This propagates ERR_set_mark(), and ERR_clear_last_mark() and
ERR_pop_to_mark() for provider use.
Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/10803)
Diffstat (limited to 'providers')
-rw-r--r-- | providers/fips/fipsprov.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/providers/fips/fipsprov.c b/providers/fips/fipsprov.c index cf4181dd2a..eeb1b1e1cf 100644 --- a/providers/fips/fipsprov.c +++ b/providers/fips/fipsprov.c @@ -54,6 +54,9 @@ OSSL_core_thread_start_fn *c_thread_start; static OSSL_core_new_error_fn *c_new_error; static OSSL_core_set_error_debug_fn *c_set_error_debug; static OSSL_core_vset_error_fn *c_vset_error; +static OSSL_core_set_error_mark_fn *c_set_error_mark; +static OSSL_core_clear_last_error_mark_fn *c_clear_last_error_mark; +static OSSL_core_pop_error_to_mark_fn *c_pop_error_to_mark; static OSSL_CRYPTO_malloc_fn *c_CRYPTO_malloc; static OSSL_CRYPTO_zalloc_fn *c_CRYPTO_zalloc; static OSSL_CRYPTO_free_fn *c_CRYPTO_free; @@ -675,6 +678,15 @@ int OSSL_provider_init(const OSSL_PROVIDER *provider, case OSSL_FUNC_CORE_VSET_ERROR: c_vset_error = OSSL_get_core_vset_error(in); break; + case OSSL_FUNC_CORE_SET_ERROR_MARK: + c_set_error_mark = OSSL_get_core_set_error_mark(in); + break; + case OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK: + c_clear_last_error_mark = OSSL_get_core_clear_last_error_mark(in); + break; + case OSSL_FUNC_CORE_POP_ERROR_TO_MARK: + c_pop_error_to_mark = OSSL_get_core_pop_error_to_mark(in); + break; case OSSL_FUNC_CRYPTO_MALLOC: c_CRYPTO_malloc = OSSL_get_CRYPTO_malloc(in); break; @@ -839,6 +851,21 @@ void ERR_vset_error(int lib, int reason, const char *fmt, va_list args) c_vset_error(NULL, ERR_PACK(lib, 0, reason), fmt, args); } +int ERR_set_mark(void) +{ + return c_set_error_mark(NULL); +} + +int ERR_clear_last_mark(void) +{ + return c_clear_last_error_mark(NULL); +} + +int ERR_pop_to_mark(void) +{ + return c_pop_error_to_mark(NULL); +} + const OSSL_PROVIDER *FIPS_get_provider(OPENSSL_CTX *ctx) { FIPS_GLOBAL *fgbl = openssl_ctx_get_data(ctx, OPENSSL_CTX_FIPS_PROV_INDEX, |