[ruby/openssl] pkey: simplify ossl_pkey_new()
ossl_{rsa,dsa,dh,ec}_new() called from this function are not used anywhere else. Inline them into pkey_new0() and reduce code duplication. https://github.com/ruby/openssl/commit/94aeab2f26
This commit is contained in:
parent
10289e9f22
commit
27859c09a6
Notes:
git
2021-03-16 20:38:55 +09:00
@ -95,7 +95,7 @@ const rb_data_type_t ossl_evp_pkey_type = {
|
||||
static VALUE
|
||||
pkey_new0(EVP_PKEY *pkey)
|
||||
{
|
||||
VALUE obj;
|
||||
VALUE klass, obj;
|
||||
int type;
|
||||
|
||||
if (!pkey || (type = EVP_PKEY_base_id(pkey)) == EVP_PKEY_NONE)
|
||||
@ -103,26 +103,22 @@ pkey_new0(EVP_PKEY *pkey)
|
||||
|
||||
switch (type) {
|
||||
#if !defined(OPENSSL_NO_RSA)
|
||||
case EVP_PKEY_RSA:
|
||||
return ossl_rsa_new(pkey);
|
||||
case EVP_PKEY_RSA: klass = cRSA; break;
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_DSA)
|
||||
case EVP_PKEY_DSA:
|
||||
return ossl_dsa_new(pkey);
|
||||
case EVP_PKEY_DSA: klass = cDSA; break;
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_DH)
|
||||
case EVP_PKEY_DH:
|
||||
return ossl_dh_new(pkey);
|
||||
case EVP_PKEY_DH: klass = cDH; break;
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_EC)
|
||||
case EVP_PKEY_EC:
|
||||
return ossl_ec_new(pkey);
|
||||
case EVP_PKEY_EC: klass = cEC; break;
|
||||
#endif
|
||||
default:
|
||||
obj = NewPKey(cPKey);
|
||||
SetPKey(obj, pkey);
|
||||
return obj;
|
||||
default: klass = cPKey; break;
|
||||
}
|
||||
obj = NewPKey(klass);
|
||||
SetPKey(obj, pkey);
|
||||
return obj;
|
||||
}
|
||||
|
||||
VALUE
|
||||
|
@ -56,7 +56,6 @@ void Init_ossl_pkey(void);
|
||||
extern VALUE cRSA;
|
||||
extern VALUE eRSAError;
|
||||
|
||||
VALUE ossl_rsa_new(EVP_PKEY *);
|
||||
void Init_ossl_rsa(void);
|
||||
|
||||
/*
|
||||
@ -65,7 +64,6 @@ void Init_ossl_rsa(void);
|
||||
extern VALUE cDSA;
|
||||
extern VALUE eDSAError;
|
||||
|
||||
VALUE ossl_dsa_new(EVP_PKEY *);
|
||||
void Init_ossl_dsa(void);
|
||||
|
||||
/*
|
||||
@ -74,7 +72,6 @@ void Init_ossl_dsa(void);
|
||||
extern VALUE cDH;
|
||||
extern VALUE eDHError;
|
||||
|
||||
VALUE ossl_dh_new(EVP_PKEY *);
|
||||
void Init_ossl_dh(void);
|
||||
|
||||
/*
|
||||
|
@ -54,27 +54,6 @@ dh_instance(VALUE klass, DH *dh)
|
||||
return obj;
|
||||
}
|
||||
|
||||
VALUE
|
||||
ossl_dh_new(EVP_PKEY *pkey)
|
||||
{
|
||||
VALUE obj;
|
||||
|
||||
if (!pkey) {
|
||||
obj = dh_instance(cDH, DH_new());
|
||||
} else {
|
||||
obj = NewPKey(cDH);
|
||||
if (EVP_PKEY_base_id(pkey) != EVP_PKEY_DH) {
|
||||
ossl_raise(rb_eTypeError, "Not a DH key!");
|
||||
}
|
||||
SetPKey(obj, pkey);
|
||||
}
|
||||
if (obj == Qfalse) {
|
||||
ossl_raise(eDHError, NULL);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/*
|
||||
* Private
|
||||
*/
|
||||
|
@ -68,27 +68,6 @@ dsa_instance(VALUE klass, DSA *dsa)
|
||||
return obj;
|
||||
}
|
||||
|
||||
VALUE
|
||||
ossl_dsa_new(EVP_PKEY *pkey)
|
||||
{
|
||||
VALUE obj;
|
||||
|
||||
if (!pkey) {
|
||||
obj = dsa_instance(cDSA, DSA_new());
|
||||
} else {
|
||||
obj = NewPKey(cDSA);
|
||||
if (EVP_PKEY_base_id(pkey) != EVP_PKEY_DSA) {
|
||||
ossl_raise(rb_eTypeError, "Not a DSA key!");
|
||||
}
|
||||
SetPKey(obj, pkey);
|
||||
}
|
||||
if (obj == Qfalse) {
|
||||
ossl_raise(eDSAError, NULL);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/*
|
||||
* Private
|
||||
*/
|
||||
|
@ -84,26 +84,6 @@ static VALUE ec_instance(VALUE klass, EC_KEY *ec)
|
||||
return obj;
|
||||
}
|
||||
|
||||
VALUE ossl_ec_new(EVP_PKEY *pkey)
|
||||
{
|
||||
VALUE obj;
|
||||
|
||||
if (!pkey) {
|
||||
obj = ec_instance(cEC, EC_KEY_new());
|
||||
} else {
|
||||
obj = NewPKey(cEC);
|
||||
if (EVP_PKEY_base_id(pkey) != EVP_PKEY_EC) {
|
||||
ossl_raise(rb_eTypeError, "Not a EC key!");
|
||||
}
|
||||
SetPKey(obj, pkey);
|
||||
}
|
||||
if (obj == Qfalse) {
|
||||
ossl_raise(eECError, NULL);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a new EC_KEY on the EC group obj. arg can be an EC::Group or a String
|
||||
* representing an OID.
|
||||
|
@ -69,28 +69,6 @@ rsa_instance(VALUE klass, RSA *rsa)
|
||||
return obj;
|
||||
}
|
||||
|
||||
VALUE
|
||||
ossl_rsa_new(EVP_PKEY *pkey)
|
||||
{
|
||||
VALUE obj;
|
||||
|
||||
if (!pkey) {
|
||||
obj = rsa_instance(cRSA, RSA_new());
|
||||
}
|
||||
else {
|
||||
obj = NewPKey(cRSA);
|
||||
if (EVP_PKEY_base_id(pkey) != EVP_PKEY_RSA) {
|
||||
ossl_raise(rb_eTypeError, "Not a RSA key!");
|
||||
}
|
||||
SetPKey(obj, pkey);
|
||||
}
|
||||
if (obj == Qfalse) {
|
||||
ossl_raise(eRSAError, NULL);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/*
|
||||
* Private
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user