2014-06-29 38 views
1

我正在爲..Net包裝器工作。幾個API函數返回到期時間,例如,用於憑證或安全上下文過期。AcquireCredentialsHandle返回大量到期時間

過期存儲在64位結構TimeStamp中,該結構存儲自1601年1月1日00:00 UTC以來的100納秒滴答數。

當我調用AcquireCredentialsHandle,返回的TimeStamp的原始值是巨大的 - 如0x7fffff154e84ffff,例如HighPart = 0x7fffff15LowPart = 0x4e84ffff通常的值。當轉換爲實時時,該值在某年的某個地方爲30848.

是否有人知道爲什麼價值如此令人難以置信的高?

它看起來很可疑,因爲它非常接近溢出有符號整數。我檢查了文檔以查看該值是否用於存儲標誌或其他結構化數據等任何內容,但我無法找到任何內容。

API的其他部分有時會返回相似的值,有時會返回表示未來5分鐘的值。

我應該提到我正在使用此API與Negotiate包,由於我的工作站不是域的一部分,可能會變成NTLM包。

+4

你在紐約,目前在UTC-4:00。確切地說,該值是從最大可能值中斷開的。你只是得到一個「永不過期」的值,通過你的時區偏移進行調整。 –

回答

1

你在紐約,目前在UTC-4:00。確切地說,該值是從最大可能值中斷開的。你只是得到一個「永不過期」的值,通過你的時區偏移進行調整。 - Hans Passant

+0

這是如何有意義的,因爲Kerberos票證的生命週期(例如,在Windows中爲10小時)。 –

+0

@ Michael-O SSPI不僅支持Kerberos。從我原來的問題來看:「我應該提及,我正在使用這個API和Negotiate包,由於我的工作站不是域的一部分,可能會變成NTLM包。」 – antiduh

+0

你應該嘗試Digest SSP,它給我:狀態:0 CredHandle:4256/2397400 1632-03-21T02:24:34Z –