2017-04-17 219 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的修改副本。 –

相关问题