我在C milter程序中使用RSA_sign。 这个函数线程是否安全,因为我相信libmilter使用线程运行,有时我看到RSA_sign给出了相同键和错误的签名。在其他时间工作正常的文本
答案 0 :(得分:1)
假设您指的是OpenSSL,那么,是的,RSA_sign是线程安全的。正如@birryree在评论中指出的那样,你应该设置锁定回调函数。然而,还有另一件值得指出的事情(虽然它可能完全是不言而喻的)。即使函数本身是线程安全的,您也必须以线程安全的方式使用它。
具体来说,您必须确保应用程序发送给它的参数未被可能正在更改它们的其他线程使用。
m
和rsa
,并且在操作期间预期它们将保持不变。例如,如果另一个线程在调用期间修改了输入缓冲区m
,则结果将是不可预测的。sigbuf
由RSA_sign写入。如果它同时被另一个函数使用,那么结果也是不可预测的。