考虑下面的RSA_generate_key()调用
RSA * rsa = RSA_generate_key(8192, RSA_F4, NULL, NULL);生成8,192位RSA密钥可能需要很长时间(从几秒钟到几分钟不等)。假设包含上述代码行的应用程序为用户提供了一个取消密钥生成的按钮。
如何在密钥生成之前中止计算并使函数返回?我记得RSA_generate_key()的第三个参数是一个用于显示进度的回调函数--有没有办法让回调返回一个表示“中止操作并返回”的值?
在另一个线程中运行函数,然后终止该线程不是一种选择。
发布于 2013-03-30 11:53:30
虽然我从来没有遇到过这样的情况,也从来没有做过任何事情。如果您可以修改OpenSSL的源代码,可以尝试如下操作:
假设一个变量V在两个函数之间共享。所以它要么是一个全局变量,要么是文件中的静态变量,并被RSA_generate_key使用,也就是另一个函数RSA_set_V。
RSA_generate_key将仅读取该变量。RSA_set_V设置变量。
在RSA_generate_key中,耗时的循环可能会使用检查此变量的附加条件。它可以终止此循环或在某个V值时退出函数。
  while (V!=CERTAIN_VALUE && Rest_of_Condition) {
      //Loop body.
  }现在,在RSA_set_V中,将V设置为CERTAIN_VALUE。当用户单击Stop时,调用RSA_set_V。它应该会停止RSA_generate_key。
然而,它几乎没有什么问题。这可能会减慢RSA_generate_key的速度。
https://stackoverflow.com/questions/15183101
复制相似问题