From ce8b25741380eb08ca25ad06c2e83370067734ce Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Tue, 29 Jun 1999 22:22:42 +0000 Subject: [PATCH] New functions to allow RSA_METHODs to be changed without poking round in RSA structure internals. --- CHANGES | 5 +++++ crypto/rsa/rsa.h | 3 +++ crypto/rsa/rsa_lib.c | 20 ++++++++++++++++++++ util/libeay.num | 3 +++ 4 files changed, 31 insertions(+) diff --git a/CHANGES b/CHANGES index 70dcca1ac..23082d330 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,11 @@ Changes between 0.9.3a and 0.9.4 + *) New functions RSA_get_default_method(), RSA_set_method() and + RSA_get_method(). These allows replacement of RSA_METHODs without having + to mess around with the internals of an RSA structure. + [Steve Henson] + *) Fix memory leaks in DSA_do_sign and DSA_is_prime. Also really enable memory leak checks in openssl.c and in some test programs. diff --git a/crypto/rsa/rsa.h b/crypto/rsa/rsa.h index 11f66b65f..3be447dff 100644 --- a/crypto/rsa/rsa.h +++ b/crypto/rsa/rsa.h @@ -161,6 +161,9 @@ void RSA_free (RSA *r); int RSA_flags(RSA *r); void RSA_set_default_method(RSA_METHOD *meth); +RSA_METHOD *RSA_get_default_method(void); +RSA_METHOD *RSA_get_method(RSA *rsa); +RSA_METHOD *RSA_set_method(RSA *rsa, RSA_METHOD *meth); /* This function needs the memory locking malloc callbacks to be installed */ int RSA_memory_lock(RSA *r); diff --git a/crypto/rsa/rsa_lib.c b/crypto/rsa/rsa_lib.c index 1ac1331fa..c0ca2923a 100644 --- a/crypto/rsa/rsa_lib.c +++ b/crypto/rsa/rsa_lib.c @@ -79,6 +79,26 @@ void RSA_set_default_method(RSA_METHOD *meth) default_RSA_meth=meth; } +RSA_METHOD *RSA_get_default_method(void) +{ + return default_RSA_meth; +} + +RSA_METHOD *RSA_get_method(RSA *rsa) +{ + return rsa->meth; +} + +RSA_METHOD *RSA_set_method(RSA *rsa, RSA_METHOD *meth) +{ + RSA_METHOD *mtmp; + mtmp = rsa->meth; + if (mtmp->finish) mtmp->finish(rsa); + rsa->meth = meth; + if (meth->init) meth->init(rsa); + return mtmp; +} + RSA *RSA_new_method(RSA_METHOD *meth) { RSA *ret; diff --git a/util/libeay.num b/util/libeay.num index 4c49be676..f9ea4e875 100755 --- a/util/libeay.num +++ b/util/libeay.num @@ -1818,3 +1818,6 @@ sk_ASN1_OBJECT_insert 1842 sk_ASN1_OBJECT_push 1843 d2i_ASN1_SET_OF_ASN1_OBJECT 1844 PKCS7_signatureVerify 1845 +RSA_set_method 1846 +RSA_get_method 1847 +RSA_get_default_method 1848