![](/img/trans.png)
[英]Passing username and password to CryptRetrieveTimeStamp function
[英]Crypto API - CryptRetrieveTimeStamp
美好的一天,
有人可以使用Crypto Api函數CryptRetrieveTimeStamp幫助我嗎? 我已成功使用CryptSignMessage對消息進行簽名,現在我想在TSA處為數據添加時間戳,但是CryptRetrieveTimeStamp總是返回* TRUST_E_TIME_STAMP *錯誤。
我的函數如下所示, pbMessage和cbMessage是從CryptSignMessage接收的數據和大小:
PCRYPT_TIMESTAMP_CONTEXT tcontext = NULL;
HCERTSTORE hStore = NULL;
fReturn = CryptRetrieveTimeStamp(widestr.c_str(),
TIMESTAMP_NO_AUTH_RETRIEVAL,
0,
szOID_RSA_MD5,
NULL,
(const BYTE*)pbMessage,
cbMessage,
&tcontext,
NULL,
&hStore);
我知道錯誤的意思是: 時間戳簽名人和/或證書無法驗證或格式錯誤 。 但是我不知道如何解決該錯誤?
任何幫助/提示將不勝感激。 謝謝瑪格達
通過wireshark查看請求/響應可以更好地了解問題。
TSA是有效的TSA,但是編碼錯誤。 將* szOID_RSA_MD5 *更改為* szOID_NIST_sha256 *解決了我的問題。
CryptRetrieveTimeStamp
函數對時間戳請求進行編碼,並從URL指定的位置到時間戳頒發機構(TSA)檢索時間戳令牌。
您很可能沒有在第一個參數中提供有效的TSA,即-
wszUrl
[輸入]指向一個以空字符結尾的寬字符串的指針,該字符串包含將請求發送到的TSA的URL。
編輯 -建議的解決方案是更改時間戳記權限。
時間戳檢索的問題在於它與OpenSSL不兼容...雖然與您的問題無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.