summaryrefslogtreecommitdiffstats
path: root/ossl_pkey_dsa.c
diff options
context:
space:
mode:
authorMichal Rokos <m.rokos@sh.cvut.cz>2002-06-08 10:05:30 +0000
committerMichal Rokos <m.rokos@sh.cvut.cz>2002-06-08 10:05:30 +0000
commit8490cea1dae17c43a809482876bc13988d56c7be (patch)
treefa0678b03b2d67484c0bd298961c5103f9245098 /ossl_pkey_dsa.c
parentaa514536c268daf3783db72c015bf6616a890eac (diff)
downloadruby-openssl-history-8490cea1dae17c43a809482876bc13988d56c7be.tar.gz
PKey: NO useless EVP_PKEY* dups.
Diffstat (limited to 'ossl_pkey_dsa.c')
-rw-r--r--ossl_pkey_dsa.c15
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;