static void Main(string[] args) { var data = ...; var cms = new SignedCms(); cms.Decode(data); var pbCmsgSignerInfo = typeof(SignerInfo).GetField("m_pbCmsgSignerInfo", BindingFlags.NonPublic | BindingFlags.Instance); var si = (SafeHandle)pbCmsgSignerInfo.GetValue(cms.SignerInfos[0]); var safeCryptMessageHandle = typeof(SignedCms).GetField("m_safeCryptMsgHandle", BindingFlags.NonPublic | BindingFlags.Instance); var hMsg = (SafeHandle)safeCryptMessageHandle.GetValue(cms); var vsi = new CRYPTUI_VIEWSIGNERINFO_STRUCT { dwSize = (uint)Marshal.SizeOf(typeof(CRYPTUI_VIEWSIGNERINFO_STRUCT)), pSignerInfo = si, hMsg = hMsg, }; CryptUIDlgViewSignerInfo(ref vsi); }
private static extern bool CryptUIDlgViewSignerInfo(ref CRYPTUI_VIEWSIGNERINFO_STRUCT pcvsi);