2017-04-17 158 views
1

我正在嘗試使用gSOAP與支持ONVIF的網絡攝像頭對話,並且我需要一種方法來指定soap_wsse_add_UsernameTokenDigest加密密碼時使用的時間。gSOAP - 有沒有一種方法來指定soap_wsse_add_UsernameTokenDigest的時間?

目前我無法確保相機和我的客戶端都有正確的NTP時間同步。因此,我想採用諸如python-onvif之類的工具所使用的方法,並簡單地將偏移量應用於生成UsernameToken所用的時間。相機的日期/時間可以在沒有驗證的情況下進行檢索,因此計算這樣的偏移量是微不足道的。

我的問題是,我看不到任何方式來獲取soap_wsse_add_UsernameTokenDigest當它計算密碼哈希時使用除當前時間以外的任何東西。

有沒有什麼方法可以改變soap_wsse_add_UsernameTokenDigest使用什麼時間,而不是改變系統時鐘?

+0

我建議用gSOAP開發者發佈[功能請求](https://sourceforge.net/p/gsoap2/feature-requests/)。實現額外的API調用應該相當容易,它將時間作爲參數傳遞,而不是使用當前時間。 –

+0

我這樣做了,但事實證明它已經在2.8.49中添加爲'soap_wsse_add_UsernameTokenDigest_at'。我的部分太慢了。 –

回答

0

然後看一下soap_wsse_add_UsernameTokenDigest的源代碼回答這個問題:不,沒有辦法指定時間或偏移量,因爲它只是直接調用時間(NULL)。

所以我的選擇是修改soap_wsse_add_UsernameTokenDigest,自己計算哈希值並調用soap_wsse_add_UsernameTokenText,或者找一些方法來確保時間同步。

+0

阻力最小的路徑竟然是在我的代碼中創建了soap_wsse_add_UsernameTokenDigest的修改副本。 –

相關問題