gSOAP - 有没有办法指定 soap_wsse_add_UsernameTokenDigest 的时间?

gSOAP - is there a way to specify the time for soap_wsse_add_UsernameTokenDigest?

我正在尝试使用 gSOAP 与支持 ONVIF 的网络摄像机通信,我需要一种方法来指定 soap_wsse_add_UsernameTokenDigest 在散列密码时使用的时间。

目前我无法确保相机和我的客户端都具有正确的 NTP 时间同步。因此,我想采用 python-onvif 等工具使用的方法,并简单地将偏移量应用于生成 UsernameToken 所用的时间。相机的 date/time 无需身份验证即可检索,因此计算此类偏移量很简单。

我的问题是我看不出有任何方法可以让 soap_wsse_add_UsernameTokenDigest 使用任何东西,除了计算密码哈希的当前时间。

有什么方法可以改变 soap_wsse_add_UsernameTokenDigest 使用的时间,而不是改变系统时钟?

查看 soap_wsse_add_UsernameTokenDigest 的源代码可以回答以下问题:不,无法指定时间或偏移量,因为它只是直接调用 time(NULL)。

所以我的选择是修改 soap_wsse_add_UsernameTokenDigest、自己计算哈希并调用 soap_wsse_add_UsernameTokenText,或者找到一些方法来确保时间同步。