Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:26
erlang
2203-crypto-Remove-helper-notsup_to_error-from-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2203-crypto-Remove-helper-notsup_to_error-from-crypto.erl.patch of Package erlang
From 8193cc9ff1fe1afb6f91c15725de90122dead6a5 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson <sverker@erlang.org> Date: Thu, 24 Aug 2023 14:15:09 +0200 Subject: [PATCH 3/3] crypto: Remove helper notsup_to_error from crypto.erl and instead raise notsup exceptions directly from NIFs. Just to make the crypto.erl code easier to read. --- lib/crypto/c_src/common.h | 3 ++- lib/crypto/c_src/engine.c | 30 ++++++++++++------------ lib/crypto/c_src/hash.c | 4 ++-- lib/crypto/c_src/srp.c | 6 ++--- lib/crypto/src/crypto.erl | 49 ++++++++++++++------------------------- 5 files changed, 40 insertions(+), 52 deletions(-) diff --git a/lib/crypto/c_src/common.h b/lib/crypto/c_src/common.h index 5da20fd0c8..b8ce47b704 100644 --- a/lib/crypto/c_src/common.h +++ b/lib/crypto/c_src/common.h @@ -39,13 +39,14 @@ /* All nif functions return a valid value or throws an exception */ ERL_NIF_TERM raise_exception(ErlNifEnv* env, ERL_NIF_TERM id, int arg_num, char* explanation, char* file, int Line); - #define EXCP_ERROR(Env, Str) raise_exception((Env), atom_error, -1, (Str), __FILE__, __LINE__) #define EXCP_NOTSUP(Env, Str) raise_exception((Env), atom_notsup, -1, (Str), __FILE__, __LINE__) #define EXCP_ERROR_N(Env, ArgNum, Str) raise_exception((Env), atom_error, (ArgNum), (Str), __FILE__, __LINE__) #define EXCP_NOTSUP_N(Env, ArgNum, Str) raise_exception((Env), atom_notsup, (ArgNum), (Str), __FILE__, __LINE__) #define EXCP_BADARG_N(Env, ArgNum, Str) raise_exception((Env), atom_badarg, (ArgNum), (Str), __FILE__, __LINE__) +#define RAISE_NOTSUP(Env) enif_raise_exception((Env), atom_notsup) + #define assign_goto(Var, Goto, CALL) {Var = (CALL); goto Goto;} #endif /* E_COMMON_H__ */ diff --git a/lib/crypto/c_src/engine.c b/lib/crypto/c_src/engine.c index ff35ca614e..9b1c16e1ce 100644 --- a/lib/crypto/c_src/engine.c +++ b/lib/crypto/c_src/engine.c @@ -402,7 +402,7 @@ ERL_NIF_TERM engine_by_id_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[ return ret; #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -427,7 +427,7 @@ ERL_NIF_TERM engine_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[] return enif_make_badarg(env); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -463,7 +463,7 @@ ERL_NIF_TERM engine_free_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[] err: return enif_make_badarg(env); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -479,7 +479,7 @@ ERL_NIF_TERM engine_load_dynamic_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER # endif return atom_ok; #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -555,7 +555,7 @@ ERL_NIF_TERM engine_ctrl_cmd_strings_nif(ErlNifEnv* env, int argc, const ERL_NIF return ret; #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -584,7 +584,7 @@ ERL_NIF_TERM engine_add_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) return ERROR_Atom(env, "add_engine_failed"); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -612,7 +612,7 @@ ERL_NIF_TERM engine_remove_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv failed: return ERROR_Atom(env, "remove_engine_failed"); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -656,7 +656,7 @@ ERL_NIF_TERM engine_register_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar return ERROR_Atom(env, "engine_method_not_supported"); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -684,7 +684,7 @@ ERL_NIF_TERM engine_unregister_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM return enif_make_badarg(env); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -724,7 +724,7 @@ ERL_NIF_TERM engine_get_first_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM a return ret; #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -778,7 +778,7 @@ ERL_NIF_TERM engine_get_next_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar return ret; #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -817,7 +817,7 @@ ERL_NIF_TERM engine_get_id_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv return enif_make_badarg(env); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -856,7 +856,7 @@ ERL_NIF_TERM engine_get_name_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar return enif_make_badarg(env); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -907,7 +907,7 @@ ERL_NIF_TERM engine_get_all_methods_nif(ErlNifEnv* env, int argc, const ERL_NIF_ return enif_make_list_from_array(env, method_array, i); #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } @@ -1035,6 +1035,6 @@ ERL_NIF_TERM ensure_engine_loaded_nif(ErlNifEnv* env, int argc, const ERL_NIF_TE return ret; #else - return atom_notsup; + return RAISE_NOTSUP(env); #endif } diff --git a/lib/crypto/c_src/hash.c b/lib/crypto/c_src/hash.c index b0c1a00fda..53b205090f 100644 --- a/lib/crypto/c_src/hash.c +++ b/lib/crypto/c_src/hash.c @@ -83,10 +83,10 @@ ERL_NIF_TERM hash_info_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) if ((digp = get_digest_type(argv[0])) == NULL) return enif_make_badarg(env); if (DIGEST_FORBIDDEN_IN_FIPS(digp)) - return atom_notsup; + return RAISE_NOTSUP(env); if ((md = digp->md.p) == NULL) - return atom_notsup; + return RAISE_NOTSUP(env); values[0] = enif_make_int(env, EVP_MD_type(md)); values[1] = enif_make_int(env, EVP_MD_size(md)); diff --git a/lib/crypto/c_src/srp.c b/lib/crypto/c_src/srp.c index 330c579d47..9760fdcea5 100644 --- a/lib/crypto/c_src/srp.c +++ b/lib/crypto/c_src/srp.c @@ -30,7 +30,7 @@ ERL_NIF_TERM srp_value_B_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[] int dlen; ERL_NIF_TERM ret; - if (FIPS_MODE()) return atom_notsup; + if (FIPS_MODE()) return RAISE_NOTSUP(env); ASSERT(argc == 5); @@ -122,7 +122,7 @@ ERL_NIF_TERM srp_user_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar int dlen; ERL_NIF_TERM ret; - if (FIPS_MODE()) return atom_notsup; + if (FIPS_MODE()) return RAISE_NOTSUP(env); ASSERT(argc == 7); @@ -232,7 +232,7 @@ ERL_NIF_TERM srp_host_secret_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar int dlen; ERL_NIF_TERM ret; - if (FIPS_MODE()) return atom_notsup; + if (FIPS_MODE()) return RAISE_NOTSUP(env); ASSERT(argc == 5); diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index 1cc11aa6eb..fa64917cf8 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -632,7 +632,7 @@ pbkdf2_hmac_nif(_, _, _, _, _) -> ?nif_stub. type := integer() } . hash_info(Type) -> - notsup_to_error(hash_info_nif(Type)). + hash_info_nif(Type). -spec hash(Type, Data) -> Digest when Type :: hash_algorithm(), Data :: iodata(), @@ -674,7 +674,7 @@ hash_final(Context) -> Length :: non_neg_integer(), Digest :: binary(). hash_final_xof(Context, Length) -> - notsup_to_error(hash_final_xof_nif(Context, Length)). + hash_final_xof_nif(Context, Length). %%%================================================================ %%% @@ -1733,9 +1733,8 @@ compute_key(srp, HostPublic, {UserPublic, UserPrivate}, HostPubBin, Prime); [S] -> S end, - notsup_to_error( srp_user_secret_nif(ensure_int_as_bin(UserPrivate), Scrambler, HostPubBin, - Multiplier, Generator, DerivedKey, Prime)); + Multiplier, Generator, DerivedKey, Prime); compute_key(srp, UserPublic, {HostPublic, HostPrivate}, {host,[Verifier, Prime, Version | ScramblerArg]}) when @@ -1747,9 +1746,8 @@ compute_key(srp, UserPublic, {HostPublic, HostPrivate}, [] -> srp_scrambler(Version, UserPubBin, ensure_int_as_bin(HostPublic), Prime); [S] -> S end, - notsup_to_error( srp_host_secret_nif(Verifier, ensure_int_as_bin(HostPrivate), Scrambler, - UserPubBin, Prime)); + UserPubBin, Prime); compute_key(ecdh, Others, My, Curve) when Curve == x448 ; Curve == x25519 -> @@ -1838,7 +1836,7 @@ mod_pow(Base, Exponent, Prime) -> -spec engine_get_all_methods() -> Result when Result :: [engine_method_type()]. engine_get_all_methods() -> - notsup_to_error(engine_get_all_methods_nif()). + engine_get_all_methods_nif(). %%---------------------------------------------------------------------- %% Function: engine_load/3 @@ -1851,8 +1849,8 @@ engine_get_all_methods() -> engine_load(EngineId, PreCmds, PostCmds) when is_list(PreCmds), is_list(PostCmds) -> try - ok = notsup_to_error(engine_load_dynamic_nif()), - case notsup_to_error(engine_by_id_nif(ensure_bin_chardata(EngineId))) of + ok = engine_load_dynamic_nif(), + case engine_by_id_nif(ensure_bin_chardata(EngineId)) of {ok, Engine} -> engine_load_1(Engine, PreCmds, PostCmds); {error, Error1} -> @@ -1930,7 +1928,7 @@ engine_unload(Engine, _EngineMethods) -> Result :: {ok, Engine::engine_ref()} | {error, Reason::term()} . engine_by_id(EngineId) -> try - notsup_to_error(engine_by_id_nif(ensure_bin_chardata(EngineId))) + engine_by_id_nif(ensure_bin_chardata(EngineId)) catch throw:Error -> Error @@ -1942,7 +1940,7 @@ engine_by_id(EngineId) -> -spec engine_add(Engine) -> Result when Engine :: engine_ref(), Result :: ok | {error, Reason::term()} . engine_add(Engine) -> - notsup_to_error(engine_add_nif(Engine)). + engine_add_nif(Engine). %%---------------------------------------------------------------------- %% Function: engine_remove/1 @@ -1950,7 +1948,7 @@ engine_add(Engine) -> -spec engine_remove(Engine) -> Result when Engine :: engine_ref(), Result :: ok | {error, Reason::term()} . engine_remove(Engine) -> - notsup_to_error(engine_remove_nif(Engine)). + engine_remove_nif(Engine). %%---------------------------------------------------------------------- %% Function: engine_register/2 @@ -1988,7 +1986,7 @@ engine_unregister(Engine, EngineMethods) when is_list(EngineMethods) -> -spec engine_get_id(Engine) -> EngineId when Engine :: engine_ref(), EngineId :: unicode:chardata(). engine_get_id(Engine) -> - notsup_to_error(engine_get_id_nif(Engine)). + engine_get_id_nif(Engine). %%---------------------------------------------------------------------- %% Function: engine_get_name/1 @@ -1996,18 +1994,18 @@ engine_get_id(Engine) -> -spec engine_get_name(Engine) -> EngineName when Engine :: engine_ref(), EngineName :: unicode:chardata(). engine_get_name(Engine) -> - notsup_to_error(engine_get_name_nif(Engine)). + engine_get_name_nif(Engine). %%---------------------------------------------------------------------- %% Function: engine_list/0 %%---------------------------------------------------------------------- -spec engine_list() -> Result when Result :: [EngineId::unicode:chardata()]. engine_list() -> - case notsup_to_error(engine_get_first_nif()) of + case engine_get_first_nif() of {ok, <<>>} -> []; {ok, Engine} -> - case notsup_to_error(engine_get_id_nif(Engine)) of + case engine_get_id_nif(Engine) of <<>> -> engine_list(Engine, []); EngineId -> @@ -2016,11 +2014,11 @@ engine_list() -> end. engine_list(Engine0, IdList) -> - case notsup_to_error(engine_get_next_nif(Engine0)) of + case engine_get_next_nif(Engine0) of {ok, <<>>} -> lists:reverse(IdList); {ok, Engine1} -> - case notsup_to_error(engine_get_id_nif(Engine1)) of + case engine_get_id_nif(Engine1) of <<>> -> engine_list(Engine1, IdList); EngineId -> @@ -2054,8 +2052,6 @@ engine_ctrl_cmd_string(Engine, CmdName, CmdArg, Optional) -> bool_to_int(Optional)) of ok -> ok; - notsup -> - erlang:error(notsup); {error, Error} -> {error, Error} end. @@ -2069,8 +2065,8 @@ engine_ctrl_cmd_string(Engine, CmdName, CmdArg, Optional) -> Result :: {ok, Engine::engine_ref()} | {error, Reason::term()}. ensure_engine_loaded(EngineId, LibPath) -> - case notsup_to_error(ensure_engine_loaded_nif(ensure_bin_chardata(EngineId), - ensure_bin_chardata(LibPath))) of + case ensure_engine_loaded_nif(ensure_bin_chardata(EngineId), + ensure_bin_chardata(LibPath)) of {ok, Engine} -> {ok, Engine}; {error, Error1} -> @@ -2190,11 +2186,6 @@ path2bin(Path) when is_list(Path) -> max_bytes() -> ?MAX_BYTES_TO_NIF. -notsup_to_error(notsup) -> - erlang:error(notsup); -notsup_to_error(Other) -> - Other. - %% HASH -------------------------------------------------------------------- hash(Hash, Data, Size, Max) when Size =< Max -> ?nif_call(hash_nif(Hash, Data)); @@ -2245,8 +2236,6 @@ host_srp_gen_key(Private, Verifier, Generator, Prime, Version) -> case srp_value_B_nif(Multiplier, Verifier, Generator, Private, Prime) of error -> error; - notsup -> - erlang:error(notsup); Public -> {Public, Private} end. @@ -2545,8 +2534,6 @@ ensure_engine_loaded_nif(_EngineId, _LibPath) -> ?nif_stub. %% Engine internals engine_nif_wrapper(ok) -> ok; -engine_nif_wrapper(notsup) -> - erlang:error(notsup); engine_nif_wrapper({error, Error}) -> throw({error, Error}). -- 2.35.3
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