diff options
author | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-06-08 10:05:30 +0000 |
---|---|---|
committer | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-06-08 10:05:30 +0000 |
commit | 8490cea1dae17c43a809482876bc13988d56c7be (patch) | |
tree | fa0678b03b2d67484c0bd298961c5103f9245098 /ossl_pkey_dsa.c | |
parent | aa514536c268daf3783db72c015bf6616a890eac (diff) | |
download | ruby-openssl-history-8490cea1dae17c43a809482876bc13988d56c7be.tar.gz |
PKey: NO useless EVP_PKEY* dups.
Diffstat (limited to 'ossl_pkey_dsa.c')
-rw-r--r-- | ossl_pkey_dsa.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/ossl_pkey_dsa.c b/ossl_pkey_dsa.c index 39ac50b..3a565a0 100644 --- a/ossl_pkey_dsa.c +++ b/ossl_pkey_dsa.c @@ -54,22 +54,17 @@ dsa_instance(VALUE klass, DSA *dsa) VALUE ossl_dsa_new(EVP_PKEY *pkey) { - DSA *dsa; VALUE obj; - if (pkey && EVP_PKEY_type(pkey->type) != EVP_PKEY_DSA) { - rb_raise(rb_eTypeError, "Not a DSA key!"); - } if (!pkey) { - dsa = DSA_new(); + obj = dsa_instance(cDSA, DSA_new()); } else { - dsa = (DSA_PRIVATE(pkey->pkey.dsa)) ? DSAPrivateKey_dup(pkey->pkey.dsa) : DSAPublicKey_dup(pkey->pkey.dsa); + if (EVP_PKEY_type(pkey->type) != EVP_PKEY_DSA) { + rb_raise(rb_eTypeError, "Not a DSA key!"); + } + WrapPKey(cDSA, obj, pkey); } - - obj = dsa_instance(cDSA, dsa); - if (obj == Qfalse) { - DSA_free(dsa); OSSL_Raise(eDSAError, ""); } return obj; |