Skip to content

Commit

Permalink
pkey: remove unused ossl_generate_cb_2() helper function
Browse files Browse the repository at this point in the history
The previous series of commits re-implemented key generation with the
low level API with the EVP API. The BN_GENCB-based callback function is
no longer used.
  • Loading branch information
rhenium committed Apr 4, 2021
1 parent 1800a8d commit 81027b7
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 81 deletions.
3 changes: 0 additions & 3 deletions ext/openssl/extconf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,6 @@ def find_openssl_library
if !have_struct_member("SSL", "ctx", "openssl/ssl.h") || is_libressl
$defs.push("-DHAVE_OPAQUE_OPENSSL")
end
have_func("BN_GENCB_new")
have_func("BN_GENCB_free")
have_func("BN_GENCB_get_arg")
have_func("EVP_MD_CTX_new")
have_func("EVP_MD_CTX_free")
have_func("EVP_MD_CTX_pkey_ctx")
Expand Down
12 changes: 0 additions & 12 deletions ext/openssl/openssl_missing.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,6 @@
#include "ruby/config.h"

/* added in 1.1.0 */
#if !defined(HAVE_BN_GENCB_NEW)
# define BN_GENCB_new() ((BN_GENCB *)OPENSSL_malloc(sizeof(BN_GENCB)))
#endif

#if !defined(HAVE_BN_GENCB_FREE)
# define BN_GENCB_free(cb) OPENSSL_free(cb)
#endif

#if !defined(HAVE_BN_GENCB_GET_ARG)
# define BN_GENCB_get_arg(cb) (cb)->arg
#endif

#if !defined(HAVE_EVP_MD_CTX_NEW)
# define EVP_MD_CTX_new EVP_MD_CTX_create
#endif
Expand Down
73 changes: 15 additions & 58 deletions ext/openssl/ossl_pkey.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,64 +17,6 @@ VALUE cPKey;
VALUE ePKeyError;
static ID id_private_q;

/*
* callback for generating keys
*/
static VALUE
call_check_ints0(VALUE arg)
{
rb_thread_check_ints();
return Qnil;
}

static void *
call_check_ints(void *arg)
{
int state;
rb_protect(call_check_ints0, Qnil, &state);
return (void *)(VALUE)state;
}

int
ossl_generate_cb_2(int p, int n, BN_GENCB *cb)
{
VALUE ary;
struct ossl_generate_cb_arg *arg;
int state;

arg = (struct ossl_generate_cb_arg *)BN_GENCB_get_arg(cb);
if (arg->yield) {
ary = rb_ary_new2(2);
rb_ary_store(ary, 0, INT2NUM(p));
rb_ary_store(ary, 1, INT2NUM(n));

/*
* can be break by raising exception or 'break'
*/
rb_protect(rb_yield, ary, &state);
if (state) {
arg->state = state;
return 0;
}
}
if (arg->interrupted) {
arg->interrupted = 0;
state = (int)(VALUE)rb_thread_call_with_gvl(call_check_ints, NULL);
if (state) {
arg->state = state;
return 0;
}
}
return 1;
}

void
ossl_generate_cb_stop(void *ptr)
{
struct ossl_generate_cb_arg *arg = (struct ossl_generate_cb_arg *)ptr;
arg->interrupted = 1;
}

static void
ossl_evp_pkey_free(void *ptr)
{
Expand Down Expand Up @@ -247,6 +189,21 @@ pkey_gen_cb_yield(VALUE ctx_v)
return rb_yield_values2(info_num, argv);
}

static VALUE
call_check_ints0(VALUE arg)
{
rb_thread_check_ints();
return Qnil;
}

static void *
call_check_ints(void *arg)
{
int state;
rb_protect(call_check_ints0, Qnil, &state);
return (void *)(VALUE)state;
}

static int
pkey_gen_cb(EVP_PKEY_CTX *ctx)
{
Expand Down
8 changes: 0 additions & 8 deletions ext/openssl/ossl_pkey.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,6 @@ extern const rb_data_type_t ossl_evp_pkey_type;
} \
} while (0)

struct ossl_generate_cb_arg {
int yield;
int interrupted;
int state;
};
int ossl_generate_cb_2(int p, int n, BN_GENCB *cb);
void ossl_generate_cb_stop(void *ptr);

VALUE ossl_pkey_new(EVP_PKEY *);
void ossl_pkey_check_public_key(const EVP_PKEY *);
EVP_PKEY *ossl_pkey_read_generic(BIO *, VALUE);
Expand Down

0 comments on commit 81027b7

Please sign in to comment.