使用libcurl,我正在通过使用public partial class TestWindow : Window
{
public ObservableCollection<ItemType> MyItems { get; set; }
public ObservableCollection<string> MyGroups { get; set; }
public TestWindow()
{
InitializeComponent();
MyGroups = new ObservableCollection<string>();
MyGroups.Add("test");
MyGroups.Add("test 2");
MyItems = new ObservableCollection<ItemType>();
MyItems.Add(new ItemType()
{
Value = "test"
});
MyItems.Add(new ItemType()
{
Value = "test 2"
});
MyDataGrid.ItemsSource = MyItems;
}
}
public class ItemType : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
protected string _Value = "";
public string Value
{
get
{
return _Value;
}
set
{
if (_Value != value)
{
_Value = value;
OnPropertyChanged("Value");
}
}
}
}
向启用了OCSP装订的服务器发送HTTP请求。
libcurl响应代码0是证书状态验证失败的必要条件,但也不是充分条件。 那么,如何检查请求是否由于证书状态验证失败而失败?
当然,curl的错误缓冲区为请求失败提供了原因,但是我不想在错误缓冲区中搜索是否出现curl的OSCP错误消息。
相反,我想通过设置curl_easy_setopt(<my handle>, CURLOPT_SSL_VERIFYSTATUS, 1L)
直接提取我要求的curl信息(因为可能有其他几个curl信息)。
我只是忽略它还是没有直接方法来评估认证状态验证?
答案 0 :(得分:0)
虽然时间已过去,但我再次遇到需要解决已解决问题的需求,我发现可以解决该问题的一些方法,但对我来说似乎很不合适: 例如,我可以直接检查属于reuqest的SSL对象的OCSP相关数据:
const struct curl_tlssessioninfo* info = NULL;
CURLcode res = curl_easy_getinfo(handle, CURLINFO_TLS_SSL_PTR, &info);
SSL* ssl = (SSL*)info->internals;
// check ssl->tlsext_ocsp_resp
或者我可以像在vtls / openssl.c中的verifystatus函数中的libcurl代码中进行检查一样:
...
long len = SSL_get_tlsext_status_ocsp_resp(BACKEND->handle, &status);
rsp = d2i_OCSP_RESPONSE(NULL, &p, len);
....
对我来说,最好的方法是能够直接在libcurls openssl.c中调用verifystatus函数,但是可能由于很好的原因而无法从“外部”进行访问。
有人知道如何直接访问OCSP响应吗? 对于解决该问题的建议,我也很高兴。