2017-04-17 25 views
1

ONVIF을 지원하는 네트워크 카메라와 통신하기 위해 gSOAP을 사용하려고하는데, 암호를 해시 할 때 soap_wsse_add_UsernameTokenDigest가 사용하는 시간을 지정하는 방법이 필요합니다.gSOAP - soap_wsse_add_UsernameTokenDigest의 시간을 지정하는 방법이 있습니까?

현재로서는 카메라와 클라이언트 모두에 적절한 NTP 시간 동기화가 보장되지 않습니다. 따라서 python-onvif과 같은 도구에서 사용하는 방법을 사용하고 UsernameToken을 생성하는 데 사용 된 시간에 오프셋을 적용하고 싶습니다. 카메라의 날짜/시간은 인증없이 검색 될 수 있으므로 그러한 오프셋을 계산하는 것은 간단합니다.

내 문제는 암호 해시를 계산할 때 현재 시간 외에는 아무것도 사용하지 못하게하는 방법이 없다는 것입니다.

시스템 시계를 변경하지 않아도 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의 소스 코드를 살펴보면 : NO, 단순히 시간 (NULL)을 직접 호출하기 때문에 시간이나 오프셋을 지정할 방법이 없습니다.

내 옵션은 soap_wsse_add_UsernameTokenDigest를 수정하고 해시를 직접 계산하고 soap_wsse_add_UsernameTokenText를 호출하거나 시간 동기화를 보장하는 방법을 찾는 것입니다.

+0

최소한의 저항 경로가 내 코드에서 soap_wsse_add_UsernameTokenDigest의 수정 된 복사본을 만드는 것으로 나타났습니다. –