Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0682-crypto-Initialize-the-curve-s-cache-fully-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0682-crypto-Initialize-the-curve-s-cache-fully-at-start-o.patch of Package erlang
From 77bd4e5f7edd1a21b8b45f3684cf7cc0722c74bb Mon Sep 17 00:00:00 2001 From: Hans Nilsson <hans@erlang.org> Date: Fri, 1 Oct 2021 16:36:30 +0200 Subject: [PATCH 2/2] crypto: Initialize the curve's cache fully at start of crypto the FIPS part is also initialized. --- lib/crypto/c_src/algorithms.c | 41 +++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/lib/crypto/c_src/algorithms.c b/lib/crypto/c_src/algorithms.c index dcd95f1099..f8f6057551 100644 --- a/lib/crypto/c_src/algorithms.c +++ b/lib/crypto/c_src/algorithms.c @@ -253,25 +253,34 @@ int get_curve_cnt(ErlNifEnv* env, int fips) { } void init_curve_types(ErlNifEnv* env) { -#if defined(DEBUG) - int curve_cnt = 0; + /* Initialize the curve counters and curve's lists + by calling get_curve_cnt + */ +#ifdef FIPS_SUPPORT + if (FIPS_mode()) { + // FIPS enabled + get_curve_cnt(env, 1); + FIPS_mode_set(0); // disable + get_curve_cnt(env, 0); + FIPS_mode_set(1); // re-enable + } else { + // FIPS disabled but available + get_curve_cnt(env, 0); + FIPS_mode_set(1); // enable + get_curve_cnt(env, 1); + FIPS_mode_set(0); // re-disable + } +#else + // FIPS mode is not available + get_curve_cnt(env, 0); #endif -#if defined(HAVE_EC) - int fips_mode = 0; - -# ifdef FIPS_SUPPORT - if (FIPS_mode()) fips_mode = 1; -# endif - # ifdef DEBUG - curve_cnt = -# endif - get_curve_cnt(env, fips_mode); - -#endif /* defined(HAVE_EC) */ - - ASSERT(curve_cnt <= sizeof(algo_curve[0])/sizeof(ERL_NIF_TERM)); + { + int curve_cnt = get_curve_cnt(env, 0); + ASSERT(curve_cnt <= sizeof(algo_curve[0])/sizeof(ERL_NIF_TERM)); + } +# endif } -- 2.31.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor