@@ -51,6 +51,10 @@ static const OSSL_PARAM wolfssl_param_types[] = {
5151 OSSL_PARAM_END
5252};
5353
54+ #ifdef WP_CHECK_FORCE_FAIL
55+ static int forceFail = 0 ;
56+ #endif
57+
5458/*
5559 * Get he table of parameters supported by wolfProv.
5660 *
@@ -74,6 +78,12 @@ static const OSSL_PARAM* wolfprov_gettable_params(void* provCtx)
7478 */
7579int wolfssl_prov_is_running (void )
7680{
81+ #ifdef WP_CHECK_FORCE_FAIL
82+ if (forceFail ) {
83+ WOLFPROV_LEAVE (WP_LOG_PROVIDER , __FILE__ ":" WOLFPROV_STRINGIZE (__LINE__ ), 0 );
84+ return 0 ;
85+ }
86+ #endif
7787 /* Always running. */
7888 WOLFPROV_LEAVE (WP_LOG_PROVIDER , __FILE__ ":" WOLFPROV_STRINGIZE (__LINE__ ), 1 );
7989 return 1 ;
@@ -1185,6 +1195,19 @@ int wolfssl_provider_init(const OSSL_CORE_HANDLE* handle,
11851195 wolfCrypt_SetCb_fips (wp_fipsCb );
11861196#endif
11871197
1198+ #ifdef WP_CHECK_FORCE_FAIL
1199+ char * forceFailEnv = NULL ;
1200+ #if defined(XGETENV ) && !defined(NO_GETENV )
1201+ forceFailEnv = XGETENV ("WOLFPROV_FORCE_FAIL" );
1202+ if (forceFailEnv != NULL && XATOI (forceFailEnv ) == 1 ) {
1203+ WOLFPROV_MSG (WP_LOG_PROVIDER , "WOLFPROV_FORCE_FAIL=1, Forcing failure\n" );
1204+ forceFail = 1 ;
1205+ }
1206+ #else
1207+ #error "Force failure check enabled but impossible to perform without XGETENV, use -DWP_NO_FORCE_FAIL"
1208+ #endif
1209+ #endif
1210+
11881211 for (; in -> function_id != 0 ; in ++ ) {
11891212 switch (in -> function_id ) {
11901213 case OSSL_FUNC_CORE_GETTABLE_PARAMS :
0 commit comments