2012-04-06 111 views
0

我在C milter程序中使用RSA_sign。 這是功能線程安全的,因爲我的信徒libmilter運行,使用線程,有時我看到RSA_sign會產生不正確的簽名n個相同的密鑰&文字這在其他時間是RSA_sign線程安全的

+0

對於讀這個問題的人來說,它可能會詢問來自OpenSSL的'RSA_sign'。 Ram,如果您在多線程程序中使用OpenSSL,您是否按照此頁面上的設置進行操作? http://www.openssl.org/docs/crypto/threads.html – birryree 2012-04-06 14:29:35

回答

1

假設你指的是OpenSSL的,那麼,是做工精細,RSA_sign是線程安全的。正如@birryree在評論中指出的,你應該設置鎖定回調函數。然而,還有一件值得指出的事情(儘管它可能是完全不言而喻的)。即使函數本身是線程安全的,您也必須以線程安全的方式使用它。

具體而言,您必須確保應用程序發送給它的參數未被可能正在更改它們的其他線程使用。

  • 輸入參數mrsa中的兩個被函數使用,並且在操作過程中預期不會改變。例如,如果另一個線程在調用期間修改了輸入緩衝區m,結果將是不可預知的。
  • 輸出緩衝區sigbuf由RSA_sign寫入。如果它被另一個函數同時使用,那麼結果也是不可預測的。