X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=nucleus%2Flibrary%2Fcrypto%2Frsa_crypto.cpp;h=b96b3cdcc196bfa22325bdb1023561123bb2487a;hb=489eefa5c0460406dee8b369e3b7bfca142bd0e5;hp=231df924d72190f60a3d34f074678850afda67e1;hpb=d7e8a05960951d8ce67e36c587726a851e2f5165;p=feisty_meow.git diff --git a/nucleus/library/crypto/rsa_crypto.cpp b/nucleus/library/crypto/rsa_crypto.cpp index 231df924..b96b3cdc 100644 --- a/nucleus/library/crypto/rsa_crypto.cpp +++ b/nucleus/library/crypto/rsa_crypto.cpp @@ -31,6 +31,7 @@ #include #include +#include #include using namespace basis; @@ -97,7 +98,7 @@ rsa_crypto::rsa_crypto(const rsa_crypto &to_copy) rsa_crypto::~rsa_crypto() { - FUNCDEF("dtor"); + FUNCDEF("destructor"); LOG("prior to rsa free"); auto_synchronizer mutt(__single_stepper()); RSA_free(_key); @@ -118,12 +119,20 @@ RSA *rsa_crypto::generate_key(int key_size) static_ssl_initializer(); LOG("into generate key"); auto_synchronizer mutt(__single_stepper()); - RSA *to_return = RSA_generate_key(key_size, 65537, NULL_POINTER, NULL_POINTER); - if (!to_return) { + RSA *to_return = RSA_new(); + BIGNUM *e = BN_new(); + BN_set_word(e, 65537); +//hmmm: only one value of e? + int ret = RSA_generate_key_ex(to_return, key_size, e, NULL_POINTER); + if (!ret) { continuable_error(static_class_name(), func, - a_sprintf("failed to generate a key of %d bits.", key_size)); + a_sprintf("failed to generate a key of %d bits: error is %ld.", key_size, ERR_get_error())); + BN_free(e); + RSA_free(to_return); + return NULL; } LOG("after key generated"); + BN_free(e); return to_return; }