X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=nucleus%2Flibrary%2Fcrypto%2Frsa_crypto.cpp;h=165f66b69438ba95029b197495ae889cc5c05709;hb=90c3450e446ccdad3c8200bca032d6791dcb93ce;hp=231df924d72190f60a3d34f074678850afda67e1;hpb=65238f5bc49ff0d1756c6148c70c919f22dacd12;p=feisty_meow.git diff --git a/nucleus/library/crypto/rsa_crypto.cpp b/nucleus/library/crypto/rsa_crypto.cpp index 231df924..165f66b6 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; @@ -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; }