/* This function is largely borrowed from the one used in OpenSSL's "s_client"
* and "s_server" utilities. */
-void cb_ssl_info(SSL *s, int where, int ret)
+void cb_ssl_info(const SSL *s, int where, int ret)
{
- char *str1, *str2;
+ const char *str1, *str2;
int w;
if(!fp_cb_ssl_info)
cb_ssl_verify_level = level;
}
+RSA *cb_generate_tmp_rsa(SSL *s, int is_export, int keylength)
+{
+ /* TODO: Perhaps make it so our global key can be generated on-the-fly
+ * after certain intervals? */
+ static RSA *rsa_tmp = NULL;
+ BIGNUM *bn = NULL;
+ int ok = 1;
+ if(!rsa_tmp) {
+ ok = 0;
+ if(!(bn = BN_new()))
+ goto end;
+ if(!BN_set_word(bn, RSA_F4))
+ goto end;
+ if(!(rsa_tmp = RSA_new()))
+ goto end;
+ if(!RSA_generate_key_ex(rsa_tmp, keylength, bn, NULL))
+ goto end;
+ ok = 1;
+ }
+end:
+ if(bn)
+ BN_free(bn);
+ if(!ok) {
+ RSA_free(rsa_tmp);
+ rsa_tmp = NULL;
+ }
+ return rsa_tmp;
+}
+
#endif /* !defined(NO_OPENSSL) */