class method
OpenSSL::PKey::EC.generate
(::String | ::OpenSSL::PKey::EC::Group pem_or_der_or_group_or_curve_name) -> instance
EC.generate(ec_group) → ec
EC.generate(string) → ec
ext/openssl/ossl_pkey_ec.c
View on GitHub ↗
static VALUE
ossl_ec_key_s_generate(VALUE klass, VALUE arg)
{
EVP_PKEY *pkey;
EC_KEY *ec;
VALUE obj;
obj = rb_obj_alloc(klass);
ec = ec_key_new_from_group(arg);
pkey = EVP_PKEY_new();
if (!pkey || EVP_PKEY_assign_EC_KEY(pkey, ec) != 1) {
EVP_PKEY_free(pkey);
EC_KEY_free(ec);
ossl_raise(ePKeyError, "EVP_PKEY_assign_EC_KEY");
}
RTYPEDDATA_DATA(obj) = pkey;
if (!EC_KEY_generate_key(ec))
ossl_raise(ePKeyError, "EC_KEY_generate_key");
return obj;
}
Creates a new EC instance with a new random private and public key.